第七章:有限离散傅氏变换
约 2380 字大约 8 分钟
2026-01-29
注
本章核心:定义有限离散傅氏变换(FDFT)及其反变换;阐述循环褶积与普通褶积关系;介绍 FFT 原理与算法;讨论利用 FFT 实现频谱分析、褶积/相关计算;拓展至哈特利变换、余弦变换与广义中值函数。
§1 有限离散傅氏变换、有限离散频谱所引起的假信号
1. 有限离散信号及其频谱
有限离散信号:仅在有限区间 [N1,N2] 内非零的离散信号 x(nΔ),记为
x(nΔ)=[x(N1Δ),x((N1+1)Δ),…,x(N2Δ)]
其频谱为
X(f)=n=N1∑N2x(nΔ)e−i2πnΔf
2. 有限离散傅氏变换
设长度为 N 的有限离散信号:
x(nΔ)=[x(0),x(Δ),…,x((N−1)Δ)]
取频点 fm=NΔm(m=0,1,…,N−1),定义有限离散频谱:
Xm=X(fm)=n=0∑N−1x(nΔ)e−imnN2π,m=0,1,…,N−1
反变换:
xn=N1m=0∑N−1XmeimnN2π,n=0,1,…,N−1
上两式合称为有限离散傅氏变换(FDFT)与反变换(IFDFT)。
3. 实信号的有限离散傅氏变换性质
若 xn(n=0,1,…,N−1) 为实信号,其 FDFT 满足共轭对称性:
XN−m=Xm
反之,若 Xm 满足该对称性,则 xn 为实信号。
4. 有限离散频谱所引起的假信号问题
有限离散频谱定理 1
设离散信号 x(nΔ)(−∞<n<+∞) 及其频谱 X(f),有限离散频谱 X(fm),由 X(fm) 经 IFDFT 所得有限信号为 xd(nΔ),则
xd(nΔ)=k=−∞∑∞x[(n+kN)Δ],0≤n≤N−1
该现象称为折叠效应,N 为折叠周期,xd(nΔ) 中超出原信号范围的成分称为假信号。
有限离散频谱定理 2
Xd(f)=n=0∑N−1xd(nΔ)e−i2πnΔf
在上述条件下,有误差估计:
xd(nΔ)−x(nΔ)≤k=−∞k=0∑∞x[(n+kN)Δ]
n=0∑N−1xd(nΔ)−x(nΔ)≤l=−∞∑−1x(lΔ)+l=N∑+∞x(lΔ)
Xd(f)−X(f)≤2l=−∞∑−1x(lΔ)+2l=N∑+∞x(lΔ)
§2 快速傅氏变换
1. 时域分解 FFT 算法
设 N=2k,将序列按下标奇偶分为两组:
⎩⎨⎧gl=x2lhl=x2l+1l=0,1,…,N/2−1
则 FDFT 可递推计算:
⎩⎨⎧Xm=Gm+WNmHmXm+N/2=Gm−WNmHm0≤m<N/2
其中 WN=e−i2π/N 。
2. 频域分解 FFT 算法
将频谱 Xm 按奇偶分解,信号按如下组合:
⎩⎨⎧gn=xn+xn+N/2hn=(xn−xn+N/2)WNnn=0,1,…,N/2−1
则 FDFT 可递推计算:
⎩⎨⎧X2l=∑n=0N/2−1gnWN/2nlX2l+1=∑n=0N/2−1hnWN/2nll=0,1,…,N/2−1
其中 WN=e−i2π/N 。
§3 有限离散傅氏变换的循环褶积
1. 有限离散傅氏变换的循环褶积
设 xn,yn 是长度为 N 的离散信号,其 FDFT 为 Xm,Ym。定义循环褶积为
zn(N)=xn∗yn[N]=l=0∑N−1xly(n−l)modN
注
zn(N) 是以 N 为周期的周期函数。
则
Zm=XmYm⟷FDFTzn(N)=xn∗yn[N]
2. 循环褶积与普通褶积的关系
设 xn,yn 是长度分别为 M,L 的离散信号
xn={xn,0,0≤n≤M−1其他yn={yn,0,0≤n≤L−1其他
记循环褶积为 zn(N),普通褶积为 zn=xn∗yn,那么当 0≤n≤N−1 且 n≥M+L−1−N 时
zn=zn(N)
特别地,若 N≥M+L−1,则对 0≤n≤N−1,均有 zn=zn(N)。
3. 利用快速傅氏变换计算褶积
3.1 一般方法
设离散信号
xn={xn,0,0≤n≤M−1其他yn={yn,0,0≤n≤L−1其他
现需计算褶积
zn=xn∗yn
- 选 N=2p≥M+L−1
- 构造补零序列 xn(N),yn(N)
- 用 FFT 计算 Xm,Ym
- 计算 Zm=XmYm
- IFFT 得 zn(N),zn=zn(N)
3.2 分段求和法
当 M 较大时,若按前述选 N≥M+L−1,则 N≈M 过大,内存和硬件受限,此时可采用分段求和法。
取 N=2k≥2L
定义 M0=N−L+1
定义长度为 N 的序列 y~n=(y0,y1,…,yL−1,0,…,0) ,用 FFT 计算 y~n 的离散频谱 Y~m
计算 [0,M0−1] 范围内的褶积 zn :
取长度为 N 的序列 x~n(1)=(0,…,0,x0,…,xM0−1)
用 FFT 计算 x~n(1) 的离散频谱 X~m(1)
计算 Z~m(1)=X~m(1)⋅Y~m
用 IFFT 计算 z~n(1),有 zn=z~L+n(1),0≤n≤M0−1
注
实际上 z~n(1) 是一个长度为 L 的信号与一个长度为 N 的信号的循环褶积,因此只有 L−1≤n≤N−1 时等于普通褶积。
计算 [M0,2M0−1] 范围内的褶积 zn :
取长度为 N 的序列 x~n(2)=(xM0−L+1,…,xM0,…,x2M0−1)
用 FFT 计算 x~n(2) 的离散频谱 X~m(2)
计算 Z~m(2)=X~m(2)⋅Y~m
用 IFFT 计算 z~n(2),有 zM0+n=z~L+n(2),0≤n≤M0−1
仿照 5 计算 [2M0,3M0−1] 等范围内的褶积 zn,直到 [(J−1)M0,JM0−1] 结束,要求
(J−1)M0<M+L−1≤JM0−1
因此
J=[M0M+L+21]
§4 应用快速傅氏变换进行频谱分析
1. 频谱分析步骤
数据准备:取长度为 N=2k 的离散信号。
FFT 计算频谱:
Xm=n=0∑N−1xne−i2πmn/N,0≤m≤N−1
当 m=0,1,2,…,N/2 时,Xm 表示频率为 m/(NΔ) 的频谱值。
Xm=Um+iVm,m=0,1,2,…,N/2
求振幅谱、相位谱、功率谱:
⎩⎨⎧Am=∣Xm∣ϕm=arctanUmVmGm=∣Xm∣2m=0,1,2,…,N/2
平滑处理(可选)
求特征频率:
- 最大值频率点 fM=NΔmM,其中 mM=argmaxAm
- 中间值频率点 fv=NΔmv,其中 mv 满足 ∑m=0mvAm≈21∑m=0N/2Am
2. 频谱分析中参数选取
对截频为 fc,频率分辨间隔为 fδ 的信号:
- 抽样间隔:Δ<2fc1
- 记录长度:NΔ>fδ1
- 最小记录长度:Tmin=fδ1
- 抽样点数:N>fδ2fc
§5 有限离散哈特利变换、余弦变换和广义中值函数
1. 有限离散哈特利变换(FDHT)
1.1 函数 casα
casα=cosα+sinα
1.2 有限离散哈特利变换
设离散信号 xn(n=0,1,…,N−1):
HXm=n=0∑N−1xncas(N2πmn),m=0,1,…,N−1
xn=N1m=0∑N−1HXmcas(N2πmn)
2. 有限离散余弦变换(FDCT)
2.1 Ⅰ型 FDCT
设离散信号 xn(n=0,1,…,N−1):
Xm=n=0∑Nknxncos(Nπmn)
xn=m=0∑NkmXmcos(Nπmn)
其中 k0=kN=21,其余 kn=1。
2.2 Ⅱ型 FDCT
设离散信号 xn(n=0,1,…,N−1):
Xm=n=0∑N−1βnxncos[Nπ(n+1/2)m]
xn=m=0∑N−1βmXmcos[Nπ(n+1/2)m]
其中 β0=21,其余 βn=1。
3. 广义中值函数
3.1 定义
函数 g(λ) 称为广义中值函数,若存在 p(β) 使
g[(2k+1)β]=p(β)g[(2k+2)β]+g(2kβ),∀k∈Z,β∈R
典型例子:cosλ,sinλ,casλ,eiλ 均为广义中值函数,对应 p(β)=2cosβ。
3.2 性质
设 g(λ) 为广义中值函数,xn(n=0,1,…,N−1)为离散信号:
性质1:
n=0∑N−1xng[(n+21)β]=p(β/2)1{n=0∑N−1(xn+xn−1)g(nβ)+xN−1[g(Nβ)−g(0)]}
其中 x−1=xN−1。
性质2(N 为正偶数):
n=0∑N−1xng(nβ)=n=0∑N/2−1x2ng(2nβ)+p(β)1⎩⎨⎧n=0∑N/2−1(x2n+1+x2n−1)g(2nβ)+xN−1[g(Nβ)−g(0)]⎭⎬⎫
其中 x−1=xN−1。
注
将 N 变换转化为两个 N/2 变换,构成快速算法理论的基础。
3.3 余弦变换的快速算法
考虑一种有限离散余弦变换
Xm=n=0∑N−1xncosn(m+21)π/N,m=0,1,…,N−1
利用广义中值函数性质可得递推:
⎩⎨⎧Xm=Am+[2cos(Nπ(m+1/2))]−1BmXN−m−1=Am−[2cos(Nπ(m+1/2))]−1Bm0≤m≤2N−1
其中
⎩⎨⎧Am=∑n=0N/2−1x2ncosn(m+21)N/2πBm=∑n=0N/2−1(x2n+1+x2n−1)cosn(m+21)N/2π0≤m≤2N−1