Professional Documents
Culture Documents
Lec 5
Lec 5
alghoniemy@alexu.edu.eg
10/19/2022 1
• Split-Radix FFT (SRFFT)
• Radix-2 DIF-FFT
• Split radix (2/4) uses radix-2 for even-indexed samples, and radix-4 for
odd-indexed samples
10/19/2022 2
Split-Radix FFT (SRFFT)
10/19/2022
3
Regroup radix-2 and radix-4 accordingly
1 1 1 1 1 0 1 1 1 0 1 1
1 −𝑗 −1 𝑗 0 𝑊81 1 −1 0 𝑊83 1 −1
1 −1 1 −1 1 0 1 1 1 0 1 1
−𝑗 𝑗
1 𝑗 −1 −𝑗 0 𝑊81 1 −1 0 𝑊83 1 −1
𝐅8 =
1 1 1 1 1 0 1 1 1 0 1 1
− −
1 −𝑗 −1 𝑗 0 𝑊81 1 −1 0 𝑊83 1 −1
1 −1 1 −1 1 0 1 1 1 0 1 1
𝑗 −𝑗
1 𝑗 −1 −𝑗 0 𝑊81 1 −1 0 𝑊83 1 −1
𝐃𝟖/𝟒 𝐅𝟐 𝐃𝟑𝟖/𝟒 𝐅𝟐
𝐅𝟒
−𝐣𝐃𝟖/𝟒 𝐅𝟐 𝑗𝐃𝟑𝟖/𝟒 𝐅𝟐 𝟏 𝟎
𝐅8 = , 𝑫𝑵/𝟒 = 𝑫𝟖/𝟒 =
𝟎 𝑾𝟏𝟖
−𝐃𝟖/𝟒 𝐅𝟐 −𝐃𝟑𝟖/𝟒 𝐅𝟐
𝐅𝟒
𝐣𝐃𝟖/𝟒 𝐅𝟐 −𝑗𝐃𝟑𝟖/𝟒 𝐅𝟐
10/19/2022 5
Split-Radix Decimation in Time FFT (DIT-SRFFT)
𝐲 = 𝐅𝑁 𝐱
Permute the columns of the DFT matrix and the input vector
𝑁/4−1
𝐲 = (𝐅𝑁 𝐏 𝑇 )(𝐏𝐱 ) 𝐃𝑁/4 = 𝑑𝑖𝑎𝑔(𝑊𝑁0 , 𝑊𝑁1 , ⋯ , 𝑊𝑁 )
The column-permuted DFT matrix becomes
𝐈𝑵/𝟒 𝐈𝑵/𝟒
𝑰𝑵/𝟐 𝐅𝑵/𝟐 𝐱 0,2
𝐲𝐿 −𝑗𝐈𝑵/𝟒 𝑗𝐈𝑵/𝟒
𝐃𝑵/𝟒 𝐅𝑵/𝟒 𝐱1
𝐲𝑈 = −𝐈𝑵/𝟒 −𝐈𝑵/𝟒
𝑰𝑵/𝟐 𝐃𝟑𝑵/𝟒 𝐅𝑵/𝟒 𝐱 3
𝑗𝐈𝑵/𝟒 −𝑗𝐈𝑵/𝟒
𝐱0 𝐲𝐿𝐿
𝑵
𝑭𝑭𝑻
𝟐
𝐱2 𝐲𝐿𝑈
𝑵 𝐃𝑵 /𝟒
𝐱1 𝟒
𝑭𝑭𝑻 𝐲𝑈𝐿
−𝟏
𝑵 −𝒋
𝐱3 𝑭𝑭𝑻 𝐲𝑈𝑈
𝟒 𝒋 −𝟏
𝐃𝟑𝑵 /𝟒
10/19/2022 8
Split-Radix Decimation-in-Frequency FFT (DIF-SRFFT)
𝐲 = 𝐅𝑁 𝐱
• Multiply from the left by the permutation matrix 𝑷
𝑁/4−1
𝐏𝐲 = 𝐏𝐅𝑁 𝐱 𝐃𝑁/4 = 𝑑𝑖𝑎𝑔(𝑊𝑁0 , 𝑊𝑁1 , ⋯ , 𝑊𝑁 )
𝐅𝑵/𝟐 𝐅𝑵/𝟐
𝐅𝑁 = 𝐏𝐅𝑁 = 𝐅𝑵/𝟒 𝐃𝑵/𝟒 −𝑗𝐅𝑵/𝟒 𝐃𝑵/𝟒 −𝐅𝑵/𝟒 𝐃𝑵/𝟒 𝑗𝐅𝑵/𝟒 𝐃𝑵/𝟒
𝐅𝑵/𝟒 𝐃𝟑𝑵/𝟒 𝑗𝐅𝑵/𝟒 𝐃𝟑𝑵/𝟒 −𝐅𝑵/𝟒 𝐃𝟑𝑵/𝟒 −𝑗𝐅𝑵/𝟒 𝐃𝟑𝑵/𝟒
• Split-Radix DIF-DFT
10/19/2022 9
Split-Radix Decimation-in-Frequency FFT (DIF-SRFFT)
𝐅𝑵/𝟐 (𝐱𝑳 + 𝐱 𝑼 )
𝐲𝟎,𝟐
𝐅𝑵 𝐃𝑵 (𝐱𝑳𝑳 −𝐱 𝑼𝑳 − 𝑗 𝐱 𝑳𝑼 − 𝐱 𝑼𝑼 ]
𝐲𝟏 = 𝟒 𝟒
𝐲𝟑 𝐅𝑵 𝐃𝟑𝑵 [ 𝐱 𝑳𝑳 − 𝐱 𝑼𝑳 + 𝑗(𝐱 𝑳𝑼 −𝐱𝑼𝑼 )]
𝟒 𝟒
10/19/2022 10
Split-Radix Decimation-in-Frequency (DIF-SRFFT) Butterlfy
(L-shaped) butterfly
𝐅𝑵/𝟐 (𝐱 𝑳 + 𝐱 𝑼 )
𝐲𝟎,𝟐
𝐅𝑵 𝐃𝑵 (𝐱𝑳𝑳 −𝐱 𝑼𝑳 − 𝑗 𝐱 𝑳𝑼 − 𝐱 𝑼𝑼 ]
𝐲𝟏 = 𝟒 𝟒
𝐲𝟑 𝐅𝑵 𝐃𝟑𝑵 [ 𝐱 𝑳𝑳 − 𝐱 𝑼𝑳 + 𝑗(𝐱 𝑳𝑼 −𝐱 𝑼𝑼 )]
𝟒 𝟒
𝐱 𝐿𝐿 𝐲0
𝑵
𝑭𝑭𝑻
𝐱 𝐿𝑈 𝟐 𝐲2
𝐃𝑵 /𝟒 𝑵
𝐱 𝑈𝐿 𝟒
𝑭𝑭𝑻 𝐲1
−𝟏
−𝒋
𝑵
𝐱 𝑈𝑈 𝑭𝑭𝑻 𝐲3
−𝟏 𝒋 𝟒
𝐃𝟑𝑵 /𝟒
10/19/2022 11
Example: Fill-in the missing multipliers
10/19/2022 12
Complexity Comparison
• https://www.cmlab.csie.ntu.edu.tw/cml/dsp/training/coding/transform/fft.html
10/19/2022 13
Recursive computation of a single frequency bin 𝑿[𝒌]
The Goertzel Algorithm
𝑋 𝑘 = 𝑥[𝑛]𝑊𝑁𝑘𝑛
𝑛=0
• The equivalent LCCE difference equation
𝑋 𝑘 = 𝑦𝑘 𝑁
1
𝐻𝑘 𝑧 =
1 − 𝑊𝑁−𝑘 𝑧 −1
10/19/2022 14
• 𝑦𝑘 𝑛 = 𝑥 𝑛 + 𝑊𝑁−𝑘 𝑦𝑘 𝑛 − 1 0≤𝑛 ≤𝑁−1
𝑋 𝑘 = 𝑦𝑘 𝑁
storage 𝑾−𝒌
𝑵
10/19/2022 15
Modified Goertzel Algorithm
1 − 𝑊𝑁𝑘 𝑧 −1
𝐻𝑘 𝑧 =
1 − 𝑊𝑁−𝑘 𝑧 −1 1 − 𝑊𝑁𝑘 𝑧 −1
1 − 𝑊𝑁𝑘 𝑧 −1
𝐻𝑘 𝑧 =
1 − 2 cos 2𝜋𝑘Τ𝑁 𝑧 −1 + 𝑧 −2
𝑦𝑘 𝑁 = 𝑋[𝑘]
10/19/2022 16
Modified Goertzel Algorithm
• The DFT computation equations are
𝑣𝑘 −1 = 𝑣𝑘 −2 = 0
𝑣𝑘 [𝑛]
𝑦𝑘 𝑁 = 𝑋[𝑘]
The complex multiplication by the constant 𝑾𝒌𝑵 need to be performed only once at
𝒏=𝑵
10/19/2022 17
Sliding/ Running DFT (Recursive DFT)
• We would like to recursively compute the DFT, at frequency bin 𝑘, of a sequence on
a sample-by-sample basis . (real-time spectrum analysis)
10/19/2022 18
Sliding DFT
• the DFT at frequency bin 𝑘 can be determined as follows:
• 𝑋𝑛 [𝑘]: the value of 𝑋[𝑘] computed using the previous 𝑁 samples starting from
sample-index 𝒏
• 𝑋𝑛−1 [𝑘]: the value of 𝑋[𝑘] computed using the previous 𝑁 samples starting from
sample-index 𝒏 − 𝟏
𝑋𝑛 [𝑘]
𝑋𝑛−1 [𝑘]
10/19/2022 19
Sliding DFT
• Recursive implementation of the DFT at frequency bin 𝑘.
𝑋 𝑘; 𝑛 = 𝑊𝑁−𝑘 𝑋 𝑘; 𝑛 − 1 + 𝑥 𝑛 − 𝑥[𝑛 − 𝑁]
𝑋𝑛 [𝑘]
𝑋𝑛−1 [𝑘]
odd length
𝑻𝒚𝒑𝒆 𝑰𝑽 𝑻𝒚𝒑𝒆 𝑰𝑰
even length
10/19/2022 21
• Example: write a Matlab program to determine the DFT at frequency bin
𝑘 = 6, for the sequence 𝑥 𝑛 = {1: 100} based on a sliding window of
length 𝑁 = 10.
10/19/2022 22