数字信号处理之 快速傅里叶变换(FFT)

快速傅里叶变换(FFT)

快速傅里叶变换(FFT)并不是与DFT不同的另一种变换,而是为了减少计算次数的一种快速有效的算法。

本章主要研究若干中计算离散傅里叶变换的算法:

  • 按时间抽取的FFT算法
  • 按频率抽取的FFT算法
  • N为复合数的FFT算法
  • 分裂基FFT算法
  • 线性调频z变换算法
  • ZFFT算法

着重讨论算法原理,并提供了实现算法的详细细节。

一、直接计算DFT的问题和改善DFT运算效率的基本途径

直接计算DFT的问题

有限列长为N的序列 x ( n ) x(n) x(n)的DFT对为 X ( k ) = ∑ n = 0 N − 1 x ( n ) W N n k k = 0 , 1 , . . . , N − 1 X(k)=\sum_{n=0}^{N-1}x(n)W_N^{nk}\qquad k=0,1,...,N-1 X(k)=n=0N1x(n)WNnkk=0,1,...,N1 x ( n ) = 1 N ∑ k = 0 N − 1 X ( k ) W N − n k n = 0 , 1 , . . . , N − 1 x(n)=\frac1N\sum_{k=0}^{N-1}X(k)W_N^{-nk}\qquad n=0,1,...,N-1 x(n)=N1k=0N1X(k)WNnkn=0,1,...,N1完成全部DFT的总计算量为 N 2 N^2 N2次复数相乘及 N ( N − 1 ) N(N-1) N(N1)次复数相加。

DFT实际计算方式为 X ( k ) = ∑ n = 0 N − 1 { [ R e x ( n ) R e W N n k − I m x ( n ) I m W N k n ] + X(k)=\sum_{n=0}^{N-1}\{[\mathbf{Re}x(n)\mathbf{Re}W_N^{nk}-\mathbf{Im}x(n)\mathbf{Im}W_N^{kn}]+ X(k)=n=0N1{[Rex(n)ReWNnkImx(n)ImWNkn]+ j [ R e x ( n ) I m W N k n + I m x ( n ) R e W N k n ] } \qquad\qquad j[\mathbf{Re}x(n)\mathbf{Im}W_N^{kn}+\mathbf{Im}x(n)\mathbf{Re}W_N{kn}]\} j[Rex(n)ImWNkn+Imx(n)ReWNkn]}运算复杂度为 4 N 2 4N^2 4N2

改善DFT运算效率的基本途径

W N k n W_N^{kn} WNkn的固有特性:

  1. W N k n W_N^{kn} WNkn的对称性 W N k ( N − n ) = W N − k n = ( W N k n ) ∗ . W_N^{k(N-n)}=W_N^{-kn}=(W_N^{kn})^* . WNk(Nn)=WNkn=(WNkn).
  2. W N k n W_N^{kn} WNkn的周期性 W N k n = W N k ( n + N ) = W N ( k + N ) n . W_N^{kn}=W_N^{k(n+N)}=W_N^{(k+N)n}. WNkn=WNk(n+N)=WN(k+N)n.

二、按时间抽取(DIT)的FFT算法(库利-图基算法)

算法原理

方便讨论,设 N = 2 ν N=2^\nu N=2ν,这种 N N N为2的整数幂的FFT,也称基-2FFT。定义 X ( k ) = ∑ n = 0 N − 1 x ( n ) W N n k k = 0 , 1 , . . . , N − 1 X(k)=\sum_{n=0}^{N-1}x(n)W_N^{nk}\qquad k=0,1,...,N-1 X(k)=n=0N1x(n)WNnkk=0,1,...,N1分成奇偶子序列 { x ( 2 r ) = x 1 ( r ) x ( 2 r + 1 ) = x 2 ( r ) r = 0 , 1 , . . . N 2 − 1 \begin{cases}x(2r)=x_1(r)\\x(2r+1)=x_2(r)\end{cases}\qquad r=0,1,...\frac N2-1 {x(2r)=x1(r)x(2r+1)=x2(r)r=0,1,...2N1 X 1 ( k ) X_1(k) X1(k) X 2 ( k ) X_2(k) X2(k)分别是 x 1 ( r ) x_1(r) x1(r) x 2 ( r ) x_2(r) x2(r) N / 2 N/2 N/2点DFT X 1 ( k ) = ∑ r = 0 N / 2 − 1 x 1 ( r ) W N / 2 r k = ∑ r = 0 N / 2 − 1 x ( 2 r ) W N / 2 r k X 2 ( k ) = ∑ r = 0 N / 2 − 1 x 2 ( r ) W N / 2 r k = ∑ r = 0 N / 2 − 1 x ( 2 r + 1 ) W N / 2 r k X_1(k)=\sum_{r=0}^{N/2-1}x_1(r)W_{N/2}^{rk}=\sum_{r=0}^{N/2-1}x(2r)W_{N/2}^{rk}\\X_2(k)=\sum_{r=0}^{N/2-1}x_2(r)W_{N/2}^{rk}=\sum_{r=0}^{N/2-1}x(2r+1)W_{N/2}^{rk} X1(k)=r=0N/21x1(r)WN/2rk=r=0N/21x(2r)WN/2rkX2(k)=r=0N/21x2(r)WN/2rk=r=0N/21x(2r+1)WN/2rk X ( k ) X(k) X(k)表达为2部分: { X ( k ) = X 1 ( k ) + W N k X 2 ( k ) X ( k + N 2 ) = X 1 ( k ) − W N k X 2 ( k ) k = 0 , 1 , . . . , N 2 − 1 \begin{cases}X(k)=X_1(k)+W_N^kX_2(k)\\X(k+\frac N2)=X_1(k)-W_N^kX_2(k)\end{cases}\qquad k=0,1,...,\frac N2-1 {X(k)=X1(k)+WNkX2(k)X(k+2N)=X1(k)WNkX2(k)k=0,1,...,2N1
以此二分法继续下分,可得到一个按级分解的“按时间抽取法”。

按时间抽取的FFT算法与直接计算DFT运算量的比较

总的运算次数:复数相乘 m F = ν N / 2 = 0.5 N log ⁡ 2 N , m_F=\nu N/2=0.5N\log_2N, mF=νN/2=0.5Nlog2N,复数相加 a F = N ν = N log ⁡ 2 N . a_F=N\nu=N\log_2N. aF=Nν=Nlog2N.
直接算法对FFT算法的计算时间之比近似为 N 2 N ν / 2 = 2 N ν = 2 N log ⁡ 2 N . \frac {N^2}{N\nu/2}=\frac{2N}\nu=\frac{2N}{\log_2N}. Nν/2N2=ν2N=log2N2N.

按时间抽取的FFT算法的特点

DIT算法的输入是反序,输出是正序的。

按时间抽取的FFT算法的若干变体

三、按频率抽取(DIF)的FFT算法(桑德-图基算法)

算法原理

N = 2 ν N=2^\nu N=2ν,令 { x 1 ( n ) = x ( n ) + x ( n + N 2 ) x 2 ( n ) = x ( n ) − x ( n + N 2 ) n = 0 , 1 , . . . , N 2 − 1 \begin{cases}x_1(n)=x(n)+x(n+\frac N2)\\x_2(n)=x(n)-x(n+\frac N2)\end{cases}\qquad n=0,1,...,\frac N2-1 {x1(n)=x(n)+x(n+2N)x2(n)=x(n)x(n+2N)n=0,1,...,2N1 N N N点DFT按频率 k k k的奇偶分解成两个新序列的 N / 2 N/2 N/2点DFT { X ( 2 r ) = ∑ n = 0 N / 2 − 1 x 1 ( n ) W N / 2 n r X ( 2 r + 1 ) = ∑ n = 0 N / 2 − 1 x 2 ( n ) W N / 2 n r r = 0 , 1 , . . . , N 2 − 1 \begin{cases}X(2r)=\sum_{n=0}^{N/2-1}x_1(n)W_{N/2}^{nr}\\X(2r+1)=\sum_{n=0}^{N/2-1}x_2(n)W_{N/2}^{nr}\end{cases}\qquad r=0,1,...,\frac N2-1 {X(2r)=n=0N/21x1(n)WN/2nrX(2r+1)=n=0N/21x2(n)WN/2nrr=0,1,...,2N1以此类推,得到降级分解“按频率抽取法”。

时间抽取算法与频率抽取算法的比较

DIT与DIF存在两点差别:

  1. DIF的输入正好是自然顺序,输出是范旭顺序,DIT正好相反。
  2. DIF的蝶形运算与DIT略有不同,差别在于DIF复数乘法出现于减法之后。

二者相似之处:

  1. 计算量相同,都需要 m F = 0.5 N log ⁡ 2 N m_F=0.5N\log_2N mF=0.5Nlog2N次复乘和 a F = N log ⁡ 2 N a_F=N\log_2N aF=Nlog2N次复加;
  2. 二者均可原位运算。

二者互为转置。

离散傅里叶逆变换的快速算法(IFFT)

W N − 1 W_N^{-1} WN1代替 W N W_N WN,并将结果乘以 1 / N 1/N 1/N,上述的FFT算法皆可直接用来运算IDFT。

按频率抽取的FFT算法的若干变体

四、N为复合数的FFT算法——统一的FFT方法

若列长 N ≠ 2 ν N\neq 2^\nu N=2ν,则有两个快速傅里叶变换的方法。

  1. 补零使 N N N增长到最近邻的 2 ν 2^\nu 2ν。这在许多场合是无害的,但不是最节省的计算方法。
  2. 若要求准确的 N N N点DFT值。若 N N N是素数,则只能采用DFT或CZT算法;若 N N N是合数,可分解成一些因子的乘积,则可用FFT的统一算法。前面讨论的FFT算法只是FFT的统一算法特例。

算法原理

N N N点DFT: X ( k ) = ∑ n = 0 N − 1 x ( n ) W N n k k = 0 , 1 , . . . , N − 1 X(k)=\sum_{n=0}^{N-1}x(n)W_N^{nk}\qquad k=0,1,...,N-1 X(k)=n=0N1x(n)WNnkk=0,1,...,N1复合数 N = M L N=ML N=ML中有表达式: n = M n 1 + n 0 n 1 = 0 , 1 , . . . , L − 1 n 0 = 0 , 1 , . . . , M − 1 n=Mn_1+n_0\qquad n_1=0,1,...,L-1\quad n_0=0,1,...,M-1 n=Mn1+n0n1=0,1,...,L1n0=0,1,...,M1
X ( k ) = ∑ n 0 = 0 M − 1 { X 1 ( k 0 , n 0 ) W N n 0 k 0 } W N n 0 k 1 X(k)=\sum_{n_0=0}^{M-1}\{X_1(k_0,n_0)W_N^{n_0k_0}\}W_N^{n_0k_1} X(k)=n0=0M1{X1(k0,n0)WNn0k0}WNn0k1 = ∑ n 0 M − 1 X 1 ′ ( k 0 , n 0 ) W M n 0 k 1 = X 2 ( k 0 , k 1 ) \qquad\qquad\quad=\sum_{n_0}^{M-1}X_1'(k_0,n_0)W_M^{n_0k_1}=X_2(k_0,k_1) =n0M1X1(k0,n0)WMn0k1=X2(k0,k1)其中 X 1 ( k 0 , n 0 ) = ∑ n 1 = 0 L − 1 x ( n 1 , n 0 ) W L n 1 k 0 k 0 = 1 , 2 , . . . , L − 1 X_1(k_0,n_0)=\sum_{n_1=0}^{L-1}x(n_1,n_0)W_L^{n_1k_0}\qquad k_0=1,2,...,L-1 X1(k0,n0)=n1=0L1x(n1,n0)WLn1k0k0=1,2,...,L1 W 2 ( k 0 , k 1 ) W_2(k_0,k_1) W2(k0,k1)称为旋转因子,或铰链因子。 X 2 ( k 0 , k 1 ) = ∑ n 0 = 0 M − 1 X 1 ′ ( k 0 , n 0 ) W M k 1 n 0 k 1 = 0 , 1 , . . . , M − 1 X_2(k_0,k_1)=\sum_{n_0=0}^{M-1}X_1'(k_0,n_0)W_M^{k_1n_0}\qquad k_1=0,1,...,M-1 X2(k0,k1)=n0=0M1X1(k0,n0)WMk1n0k1=0,1,...,M1

运算步骤

N = M L N=ML N=ML的运算步骤:

  1. 改写 x ( n ) x(n) x(n) x ( n ) = x ( M n 1 + n 0 ) = x ( n 1 , n 2 ) . x(n)=x(Mn_1+n_0)=x(n_1,n_2). x(n)=x(Mn1+n0)=x(n1,n2).再对N点做DFT分解。
  2. 先对列作 M M M L L L点的DFT: X 1 ( k 0 , n 0 ) = ∑ n 1 = 0 L − 1 x ( n 1 , n 0 ) W L k 0 n 1 . X_1(k_0,n_0)=\sum_{n_1=0}^{L-1}x(n_1,n_0)W_L^{k_0n_1}. X1(k0,n0)=n1=0L1x(n1,n0)WLk0n1.
  3. N N N X 1 ( k 0 , n 0 ) X_1(k_0,n_0) X1(k0,n0)乘以响应的旋转因子 W N k 0 n 0 W_N^{k_0n_0} WNk0n0组成一个新的序列 X 1 ′ ( k 0 , n 0 ) X_1'(k_0,n_0) X1(k0,n0)
  4. 再对行作 L L L M M M点的DFT X 2 ( k 0 , k 1 ) = ∑ n 0 = 0 M − 1 X 1 ′ ( k 0 , n 0 ) W M k 1 n 0 k 1 = 0 , 1 , . . . , M − 1 X_2(k_0,k_1)=\sum_{n_0=0}^{M-1}X_1'(k_0,n_0)W_M^{k_1n_0}\qquad k_1=0,1,...,M-1 X2(k0,k1)=n0=0M1X1(k0,n0)WMk1n0k1=0,1,...,M1
  5. 进行译序

计算顺序: X ( L k 1 + k 0 ) = ∑ n 1 = 0 L − 1 W L k 0 n 1 ∑ n 0 = 0 M − 1 { [ x ( M n 1 + n 0 ) ] W N k 0 n 0 } W M k 1 n 0 X(Lk_1+k_0)=\sum_{n_1=0}^{L-1}W_L^{k_0n_1}\sum_{n_0=0}^{M-1}\{[x(Mn_1+n_0)]W_N^{k_0n_0}\}W_M^{k_1n_0} X(Lk1+k0)=n1=0L1WLk0n1n0=0M1{[x(Mn1+n0)]WNk0n0}WMk1n0

  1. 先把时间序列与旋转因子 W N k 0 n 0 W_N^{k_0n_0} WNk0n0相乘。
  2. 计算每一行的 M M M点离散傅里叶变换。
  3. 计算每一列的 L L L点离散傅里叶变换。

基数

基-2算法、基-4算法、基-8算法、混合基算法。

N为复合数的FFT运算量的估计

复合数的FFT的总运算量:

  • 复数乘法 N ( M + L + 1 ) N(M+L+1) N(M+L+1)
  • 复数加法 N ( M + L − 2 ) N(M+L-2) N(M+L2)

五、分裂基FFT算法

快速算法的探求

大于8的基数没有多大实际意义。将基-2和基-4分解揉合在一起,提出一种分裂基FFT算法。

算法原理

N = P q , P = N / 4 , q = 4 N=Pq,P=N/4,q=4 N=Pq,P=N/4,q=4。则 n n n k k k可表示为 n = N 4 n 1 + n 0 0 ⩽ n 1 ⩽ 3 , 0 ⩽ n 0 ⩽ N 4 − 1 k = 4 k 1 + k 0 0 ⩽ k 1 ⩽ N 4 − 1 , 0 ⩽ k 0 ⩽ 3 n=\frac N4n_1+n_0\qquad 0\leqslant n_1\leqslant3,0\leqslant n_0\leqslant\frac N4-1\\k=4k_1+k_0\qquad0\leqslant k_1\leqslant\frac N4-1,0\leqslant k_0\leqslant3 n=4Nn1+n00n13,0n04N1k=4k1+k00k14N1,0k03 x ( n ) x(n) x(n) N N N点DFT变换 X ( k ) X(k) X(k)可分解为 { X ( 2 k ) = ∑ n = 0 N / 2 − 1 [ x ( n ) + x ( n + N / 2 ) ] W N 2 k n 0 ⩽ k ⩽ N / 2 − 1 X ( 4 k + 1 ) = ∑ n = 0 N / 4 − 1 { [ ( x ( n ) − x ( n + N / 2 ) ) − j ( x ( n + N / 4 ) − x ( n + 3 N / 4 ) ) ] W N n } W N 4 k n 0 ⩽ k ⩽ N / 4 − 1 X ( 4 k + 3 ) = ∑ n = 0 N / 4 − 1 { [ ( x ( n ) − x ( n + N / 2 ) ) + j ( x ( n + N / 4 ) − x ( n + 3 N / 4 ) ) ] W N n } W 3 N 4 k n 0 ⩽ k ⩽ N / 4 − 1 \begin{cases}X(2k)=\sum_{n=0}^{N/2-1}[x(n)+x(n+N/2)]W_N^{2kn}&0\leqslant k\leqslant N/2-1\\X(4k+1)=\sum_{n=0}^{N/4-1}\{[(x(n)-x(n+N/2))-j(x(n+N/4)-x(n+3N/4))]W_N^n\}W_N^{4kn}&0\leqslant k\leqslant N/4-1\\X(4k+3)=\sum_{n=0}^{N/4-1}\{[(x(n)-x(n+N/2))+j(x(n+N/4)-x(n+3N/4))]W_N^n\}W_{3N}^{4kn}&0\leqslant k\leqslant N/4-1\end{cases} X(2k)=n=0N/21[x(n)+x(n+N/2)]WN2knX(4k+1)=n=0N/41{[(x(n)x(n+N/2))j(x(n+N/4)x(n+3N/4))]WNn}WN4knX(4k+3)=n=0N/41{[(x(n)x(n+N/2))+j(x(n+N/4)x(n+3N/4))]WNn}W3N4kn0kN/210kN/410kN/41

分裂基FFT算法的运算量

j j j级有 l j l_j lj L L L型蝶形, j = 1 , 2 , . . . , M − 1 , M = log ⁡ 2 N . j=1,2,...,M-1,M=\log_2N. j=1,2,...,M1,M=log2N. l 1 = N 4 , l j = N 4 − l j − 1 2 , j = 2 , . . . , M − 1 l_1=\frac N4,\\l_j=\frac N4-\frac{l_{j-1}}2,\qquad j=2,...,M-1 l1=4N,lj=4N2lj1,j=2,...,M1全部复乘次数 C M = 1 3 N log ⁡ 2 N − 2 N 9 + ( − 1 ) M 2 9 . C_M=\frac13N\log_2N-\frac{2N}9+(-1)^M\frac29. CM=31Nlog2N92N+(1)M92.

六、实序列的FFT算法

问题的提出

复数FFT计算实数列不经济。

一个N点FFT同时运算两个N点实序列

X 1 ( k ) = D F T [ x 1 ( n ) ] X 2 ( k ) = D F T [ x 2 ( n ) ] X_1(k)=\mathsf{DFT}[x_1(n)]\\X_2(k)=\mathsf{DFT}[x_2(n)] X1(k)=DFT[x1(n)]X2(k)=DFT[x2(n)] x ( n ) = x 1 ( n ) + j x 2 ( n ) , x(n)=x_1(n)+jx_2(n), x(n)=x1(n)+jx2(n), X ( k ) = X 1 ( k ) + X 2 ( k ) . X(k)=X_1(k)+X_2(k). X(k)=X1(k)+X2(k).反过来表示: { X 1 ( k ) = X e p ( k ) = [ X ( k ) + X ∗ ( N − k ) ] / 2 X 2 ( k ) = − j X o p ( k ) = − j [ X ( k ) − X ∗ ( N − k ) ] / 2 \begin{cases}X_1(k)=X_{ep}(k)=[X(k)+X^*(N-k)]/2\\X_2(k)=-jX_{op}(k)=-j[X(k)-X^*(N-k)]/2\end{cases} {X1(k)=Xep(k)=[X(k)+X(Nk)]/2X2(k)=jXop(k)=j[X(k)X(Nk)]/2

一个N点FFT运算一个2N点的实序列

2 N 2N 2N点实数列 x ( n ) x(n) x(n)人为分成偶数组 x 1 ( n ) x_1(n) x1(n)和奇数组 x 2 ( n ) x_2(n) x2(n) { x 1 ( n ) = x ( 2 n ) n = 0 , 1 , . . . , N − 1 x 2 ( n ) = x ( 2 n + 1 ) n = 0 , 1 , . . . , N − 1 \begin{cases}x_1(n)=x(2n)&n=0,1,...,N-1\\x_2(n)=x(2n+1)&n=0,1,...,N-1\end{cases} {x1(n)=x(2n)x2(n)=x(2n+1)n=0,1,...,N1n=0,1,...,N1 x 1 ( n ) , x 2 ( n ) x_1(n),x_2(n) x1(n),x2(n)组成一个复数列 y ( n ) = x 1 ( n ) + j x 2 ( n ) , Y ( k ) = X 1 ( k ) + j X 2 ( k ) . y(n)=x_1(n)+jx_2(n),\\Y(k)=X_1(k)+jX_2(k). y(n)=x1(n)+jx2(n),Y(k)=X1(k)+jX2(k).进而得到二者的DFT结果: { X 1 ( k ) = D F T [ x 1 ( n ) ] = 1 2 [ Y ( k ) + Y ∗ ( N − k ) ] = ∑ n = 0 N − 1 x ( 2 n ) W 2 n 2 n k , X 2 ( k ) = D F T [ x 2 ( n ) ] = − j 1 2 [ Y ( k ) − Y ∗ ( N − k ) ] = ∑ n = 0 N − 1 x ( 2 n + 1 ) W 2 n 2 n k . \begin{cases}X_1(k)=\mathsf{DFT}[x_1(n)]=\frac12[Y(k)+Y^*(N-k)]=\sum_{n=0}^{N-1}x(2n)W_{2n}^{2nk},\\X_2(k)=\mathsf{DFT}[x_2(n)]=-j\frac12[Y(k)-Y^*(N-k)]=\sum_{n=0}^{N-1}x(2n+1)W_{2n}^{2nk}.\end{cases} {X1(k)=DFT[x1(n)]=21[Y(k)+Y(Nk)]=n=0N1x(2n)W2n2nk,X2(k)=DFT[x2(n)]=j21[Y(k)Y(Nk)]=n=0N1x(2n+1)W2n2nk.因此可得 X ( k ) = X 1 ( k ) + W 2 N k X 2 ( k ) 0 ⩽ k ⩽ 2 N − 1 X(k)=X_1(k)+W_{2N}^kX_2(k)\qquad0\leqslant k\leqslant2N-1 X(k)=X1(k)+W2NkX2(k)0k2N1 { X ( k ) = X 1 ( k ) + W 2 N k X 2 ( k ) X ( k + N ) = X 1 ( k ) + W 2 N k X 2 ( k ) 0 ⩽ k ⩽ N − 1 \begin{cases}X(k)=X_1(k)+W_{2N}^kX_2(k)\\X(k+N)=X_1(k)+W_{2N}^kX_2(k)\end{cases}\qquad0\leqslant k\leqslant N-1 {X(k)=X1(k)+W2NkX2(k)X(k+N)=X1(k)+W2NkX2(k)0kN1新算法需要的计算量:

复乘数 m 2 F = N ( 4 + log ⁡ 2 N ) / 2 m_{2F}=N(4+\log_2N)/2 m2F=N(4+log2N)/2
复加数 a 2 F = N ( 4 + log ⁡ 2 N ) a_{2F}=N(4+\log_2N) a2F=N(4+log2N)

七、线性调频z变换(Chirp Z Transform)算法

问题的提出

算法原理

z变换 X ( z ) = ∑ n = 0 N − 1 x ( n ) z − n X(z)=\sum_{n=0}^{N-1}x(n)z^{-n} X(z)=n=0N1x(n)zn z z z的取样点 z k z_k zk z k = A W − k , k = 0 , 1 , . . . , M − 1 z_k=AW^{-k},k=0,1,...,M-1 zk=AWk,k=0,1,...,M1其中 A A A W W W都是任意复数,即 { A = A 0 e j θ 0 W = W 0 e − j Φ 0 \begin{cases}A=A_0e^{j\theta_0}\\W=W_0e^{-j\Phi_0}\end{cases} {A=A0ejθ0W=W0ejΦ0因此有 z k = A 0 W 0 − k e j ( θ 0 + k Φ 0 ) . z_k=A_0W_0^{-k}e^{j(\theta_0+k\Phi_0)}. zk=A0W0kej(θ0+kΦ0). X ( z k ) = ∑ n = 0 N − 1 x ( n ) A − n W n k 0 ⩽ k ⩽ M − 1 X(z_k)=\sum_{n=0}^{N-1}x(n)A^{-n}W^{nk}\qquad0\leqslant k\leqslant M-1 X(zk)=n=0N1x(n)AnWnk0kM1 { f ( n ) = x ( n ) A − n ⋅ W n 2 / 2 h ( n ) = W n 2 / 2 n = 0 , 1 , . . . , N − 1 \begin{cases}f(n)=x(n)A^{-n}\cdot W^{n^2/2}\\h(n)=W^{n^2/2}\end{cases}\qquad n=0,1,...,N-1 {f(n)=x(n)AnWn2/2h(n)=Wn2/2n=0,1,...,N1则有 X ( z k ) = W k 2 / 2 ∑ n = 0 N − 1 f ( n ) h ( k − n ) k = 0 , 1 , . . . , M − 1 X(z_k)=W^{k^2/2}\sum_{n=0}^{N-1}f(n)h(k-n)\qquad k=0,1,...,M-1 X(zk)=Wk2/2n=0N1f(n)h(kn)k=0,1,...,M1

CZT的实现步骤

CZT运算量的估算

CZT算法的特点

八、ZFFT算法

  • 9
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨痕_777

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值