文章目录
快速傅里叶变换(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=0∑N−1x(n)WNnkk=0,1,...,N−1 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=0∑N−1X(k)WN−nkn=0,1,...,N−1完成全部DFT的总计算量为 N 2 N^2 N2次复数相乘及 N ( N − 1 ) N(N-1) N(N−1)次复数相加。
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=0∑N−1{[Rex(n)ReWNnk−Imx(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的固有特性:
- 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(N−n)=WN−kn=(WNkn)∗.
- 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=0∑N−1x(n)WNnkk=0,1,...,N−1分成奇偶子序列
{
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,...2N−1记
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=0∑N/2−1x1(r)WN/2rk=r=0∑N/2−1x(2r)WN/2rkX2(k)=r=0∑N/2−1x2(r)WN/2rk=r=0∑N/2−1x(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,...,2N−1
以此二分法继续下分,可得到一个按级分解的“按时间抽取法”。
按时间抽取的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,...,2N−1将 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/2−1x1(n)WN/2nrX(2r+1)=∑n=0N/2−1x2(n)WN/2nrr=0,1,...,2N−1以此类推,得到降级分解“按频率抽取法”。
时间抽取算法与频率抽取算法的比较
DIT与DIF存在两点差别:
- DIF的输入正好是自然顺序,输出是范旭顺序,DIT正好相反。
- DIF的蝶形运算与DIT略有不同,差别在于DIF复数乘法出现于减法之后。
二者相似之处:
- 计算量相同,都需要 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次复加;
- 二者均可原位运算。
二者互为转置。
离散傅里叶逆变换的快速算法(IFFT)
以 W N − 1 W_N^{-1} WN−1代替 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ν,则有两个快速傅里叶变换的方法。
- 补零使 N N N增长到最近邻的 2 ν 2^\nu 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=0∑N−1x(n)WNnkk=0,1,...,N−1复合数
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,...,L−1n0=0,1,...,M−1
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=0∑M−1{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)
=n0∑M−1X1′(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=0∑L−1x(n1,n0)WLn1k0k0=1,2,...,L−1
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=0∑M−1X1′(k0,n0)WMk1n0k1=0,1,...,M−1
运算步骤
N = M L N=ML N=ML的运算步骤:
- 改写 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分解。
- 先对列作 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=0∑L−1x(n1,n0)WLk0n1.
- 把 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)。
- 再对行作 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=0∑M−1X1′(k0,n0)WMk1n0k1=0,1,...,M−1
- 进行译序
计算顺序: 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=0∑L−1WLk0n1n0=0∑M−1{[x(Mn1+n0)]WNk0n0}WMk1n0
- 先把时间序列与旋转因子 W N k 0 n 0 W_N^{k_0n_0} WNk0n0相乘。
- 计算每一行的 M M M点离散傅里叶变换。
- 计算每一列的 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+L−2)
五、分裂基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+n00⩽n1⩽3,0⩽n0⩽4N−1k=4k1+k00⩽k1⩽4N−1,0⩽k0⩽3 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/2−1[x(n)+x(n+N/2)]WN2knX(4k+1)=∑n=0N/4−1{[(x(n)−x(n+N/2))−j(x(n+N/4)−x(n+3N/4))]WNn}WN4knX(4k+3)=∑n=0N/4−1{[(x(n)−x(n+N/2))+j(x(n+N/4)−x(n+3N/4))]WNn}W3N4kn0⩽k⩽N/2−10⩽k⩽N/4−10⩽k⩽N/4−1
分裂基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,...,M−1,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=4N−2lj−1,j=2,...,M−1全部复乘次数 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=31Nlog2N−92N+(−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∗(N−k)]/2X2(k)=−jXop(k)=−j[X(k)−X∗(N−k)]/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,...,N−1n=0,1,...,N−1将 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∗(N−k)]=∑n=0N−1x(2n)W2n2nk,X2(k)=DFT[x2(n)]=−j21[Y(k)−Y∗(N−k)]=∑n=0N−1x(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)0⩽k⩽2N−1或 { 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)0⩽k⩽N−1新算法需要的计算量:
复乘数
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=0∑N−1x(n)z−n 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=AW−k,k=0,1,...,M−1其中 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=W0e−jΦ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=A0W0−kej(θ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=0∑N−1x(n)A−nWnk0⩽k⩽M−1令 { 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)A−n⋅Wn2/2h(n)=Wn2/2n=0,1,...,N−1则有 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=0∑N−1f(n)h(k−n)k=0,1,...,M−1