FFT推导之蝶形计算图推导

在本篇博客中,主要展示了一个长度为N=2^3序列的蝶形计算过程示例,帮助理解FTT算法的原理。

原始的DFT算法:

\begin{aligned} & X(k) = \sum_{n=0}^{N-1} x(n)e^{-j2\pi kn/N} = \sum x(n)W_N^{kn}, \qquad W_N^{kn}=e^{-j2\pi kn/N} \qquad\ (1) \\ & x(n) = \frac1N \sum X(k) e^{j2\pi kn/N}=\frac1N x(n)W_N^{-kn} \qquad (2) \\ \end{aligned}

 

基于2时间抽取的FFT算法,对有限长序列x(n)不断进行奇偶抽取,直到分解成一系列长度等于2的短序列,只计算长度为2的短序列DFT变换。

基于2时间抽取的FFT算法,单次抽取算法。

\begin{aligned} X(k) = & \sum_{r=0}^{N / 2-1} x(2r)W_N^{2kr} + \sum_{r=0}^{N / 2-1} x(2r + 1)W_N^{k(2r+1)} \\ = & \sum_{r=0}^{N / 2-1} x(2r)W_N^{2kr} + W_N^k\sum_{r=0}^{N / 2-1} x(2r + 1)W_N^{2kr} \qquad (3) \end{aligned}

由于W_N^{kn}=e^{-j2\pi kn/N} = e^{\frac {-j2\pi kn / m} {N/m}} = W_{N/m}^{kn/m},所以可以将公式(3)改写为

\begin{aligned} & \sum_{r=0}^{N / 2-1} x(2r)W_{N / 2}^{kr} + W_N^k\sum_{r=0}^{N / 2-1} x(2r + 1)W_{N / 2}^{kr} = X_1(k) + W_N^kX_2(k) \qquad (4) \end{aligned}

另外,由于W_N^{k + \frac N2}=e^{-j2\pi (k + \frac N2)/N} = e^{-j2\pi k /N} * e^{-j2\pi \frac N2 /N}= W_N^k * W_N^{\frac N2} = -W_n^k,所以有

X(k+\frac N2) = X_1(k+\frac N2) + W_N^{k+\frac N2}X_2(k+\frac N2) = X_1(k) - W_n^kX_2(k) \qquad (5)。我们只需要计算X(0), X(1), X(2), X(3)即可。

 

下面主要通过一个N=8的例子,通过三次抽取,来说明算法如何重复利用长度为2的短序列计算结果以达到减少计算量的。

假设N=8的序列为x(1), x(2), x(3), x(4), x(5), x(6), x(7), x(8),根据公式(4)的抽取算法,可以写出X(0), X(1), X(2), X(3)的计算表达式,如下所示。

\begin{aligned} X(0)\ =\ & {\color {Magenta} x(0)W_4^0 + x(2)W_4^0 + x(4)W_4^0 + x(6)W_4^0} +W_8^0 ({\color {RoyalBlue} x(1)W_4^0 + x(3)W_4^0 + x(5)W_4^0 + x(7)W_4^0}) (first \ decomposition) \\ =\ & {\color {Magenta} x(0)W_2^0 + x(4)W_2^0} + W_4^0({\color {RoyalBlue} x(2)W_2^0 + x(6)W_2^0}) + W_8^0 ({\color {Magenta} x(1)W_2^0 + x(5)W_2^0} +W_4^1{\color {RoyalBlue} x(3)W_2^0 + x(7)W_2^0})(second \ decomposition) \end{aligned}

\begin{aligned} X(1)\ =\ & {\color {Magenta} x(0)W_4^0 + x(2)W_4^1 + x(4)W_4^2 + x(6)W_4^3} +W_8^1 ({\color {RoyalBlue} x(1)W_4^0 + x(3)W_4^1 + x(5)W_4^2 + x(7)W_4^3}) (first \ decomposition) \\ =\ & {\color {Magenta} x(0)W_2^0 + x(4)W_2^1} + W_4^1({\color {RoyalBlue} x(2)W_2^0 + x(6)W_2^1}) + W_8^1 ({\color {Magenta} x(1)W_2^0 + x(5)W_2^1} +W_4^1 {\color {RoyalBlue} x(3)W_2^0 + x(7)W_2^1})(second \ decomposition) \end{aligned}

\begin{aligned} X(2)\ =\ & {\color {Magenta} x(0)W_4^0 + x(2)W_4^2 + x(4)W_4^4 + x(6)W_4^6} +W_8^2 ({\color {RoyalBlue} x(1)W_4^0 + x(3)W_4^2 + x(5)W_4^4 + x(7)W_4^6}) (first \ decomposition) \\ =\ & {\color {Magenta} x(0)W_2^0 + x(4)W_2^2} + W_4^2({\color {RoyalBlue} x(2)W_2^0 + x(6)W_2^2}) + W_8^2 ({\color {Magenta} x(1)W_2^0 + x(5)W_2^2} +W_4^2 {\color {RoyalBlue} x(3)W_2^0 + x(7)W_2^2})(second \ decomposition) \end{aligned}

\begin{aligned} X(3)\ =\ & {\color {Magenta} x(0)W_4^0 + x(2)W_4^3 + x(4)W_4^6 + x(6)W_4^9} +W_8^3 ({\color {RoyalBlue} x(1)W_4^0 + x(3)W_4^3 + x(5)W_4^6 + x(7)W_4^9}) (first \ decomposition) \\ =\ & {\color {Magenta} x(0)W_2^0 + x(4)W_2^3} + W_4^3({\color {RoyalBlue} x(2)W_2^0 + x(6)W_2^3}) + W_8^3 ({\color {Magenta} x(1)W_2^0 + x(5)W_2^3} +W_4^3 {\color {RoyalBlue} x(3)W_2^0 + x(7)W_2^3})(second \ decomposition) \end{aligned}

根据公式5,可以得到X(4), X(5), X(6), X(7)的计算公式,

\begin{aligned} X(4)\ =\ & {\color {Magenta} x(0)W_4^0 + x(2)W_4^0 + x(4)W_4^0 + x(6)W_4^0} -W_8^0 ({\color {RoyalBlue} x(1)W_4^0 + x(3)W_4^0 + x(5)W_4^0 + x(7)W_4^0}) (first \ decomposition) \\ =\ & {\color {Magenta} x(0)W_2^0 + x(4)W_2^0} + W_4^0({\color {RoyalBlue} x(2)W_2^0 + x(6)W_2^0}) - W_8^0 ({\color {Magenta} x(1)W_2^0 + x(5)W_2^0} +W_4^1{\color {RoyalBlue} x(3)W_2^0 + x(7)W_2^0})(second \ decomposition) \end{aligned}

\begin{aligned} X(5)\ =\ & {\color {Magenta} x(0)W_4^0 + x(2)W_4^1 + x(4)W_4^2 + x(6)W_4^3} -W_8^1 ({\color {RoyalBlue} x(1)W_4^0 + x(3)W_4^1 + x(5)W_4^2 + x(7)W_4^3}) (first \ decomposition) \\ =\ & {\color {Magenta} x(0)W_2^0 + x(4)W_2^1} + W_4^1({\color {RoyalBlue} x(2)W_2^0 + x(6)W_2^1}) - W_8^1 ({\color {Magenta} x(1)W_2^0 + x(5)W_2^1} +W_4^1 {\color {RoyalBlue} x(3)W_2^0 + x(7)W_2^1})(second \ decomposition) \end{aligned}

\begin{aligned} X(6)\ =\ & {\color {Magenta} x(0)W_4^0 + x(2)W_4^2 + x(4)W_4^4 + x(6)W_4^6} -W_8^2 ({\color {RoyalBlue} x(1)W_4^0 + x(3)W_4^2 + x(5)W_4^4 + x(7)W_4^6}) (first \ decomposition) \\ =\ & {\color {Magenta} x(0)W_2^0 + x(4)W_2^2} + W_4^2({\color {RoyalBlue} x(2)W_2^0 + x(6)W_2^2}) - W_8^2 ({\color {Magenta} x(1)W_2^0 + x(5)W_2^2} +W_4^2 {\color {RoyalBlue} x(3)W_2^0 + x(7)W_2^2})(second \ decomposition) \end{aligned}

\begin{aligned} X(7)\ =\ & {\color {Magenta} x(0)W_4^0 + x(2)W_4^3 + x(4)W_4^6 + x(6)W_4^9} -W_8^3 ({\color {RoyalBlue} x(1)W_4^0 + x(3)W_4^3 + x(5)W_4^6 + x(7)W_4^9}) (first \ decomposition) \\ =\ & {\color {Magenta} x(0)W_2^0 + x(4)W_2^3} + W_4^3({\color {RoyalBlue} x(2)W_2^0 + x(6)W_2^3}) - W_8^3 ({\color {Magenta} x(1)W_2^0 + x(5)W_2^3} +W_4^3 {\color {RoyalBlue} x(3)W_2^0 + x(7)W_2^3})(second \ decomposition) \end{aligned}

可知,W_2^0 = 1, W_2^1 = -1, W_2^2 = 1, W_2^3 = W_2^1 = -1,根据此我们就可以画出一个蝶形计算过程,如下图所示。

长度为8的FFT蝶形计算图
长度为8的FFT蝶形计算图

 

以上仅说明了基于2时间抽取的FFT算法,后续将补充基于2频率抽取FFT算法。

 

参考目录:MATLAB数字信号处理85个实用案例精讲--入门到进阶,宋知用,北京航空航天大学出版社.

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值