完整入口 · 上一章:傅里叶与采样 · 下一章:工程应用
| 名称 | 时间输入 | 频率输出 |
|---|
| CTFT | 连续时间信号 | 连续角频率 |
| DTFT | 整条离散序列 | 连续且 2π 周期的离散角频率 |
| DFT | 有限 N 个点 | N 个频率取值 |
| FFT | 同 DFT | 同 DFT,算法计算更快 |
本章约定正变换不缩放、逆变换除以变换长度。软件可能采用其他约定,须明确归一化;可对照 NumPy FFT 文档。
把实际记录 x[0],…,x[N−1] 在记录外补零,DTFT 是:
Xd(ejΩ)=n=0∑N−1x[n]e−jΩn.
在 Ωk=2πk/N 读取 N 个点:
X[k]=n=0∑N−1x[n]e−j2πkn/N,k=0,…,N−1.
这就是 N 点 DFT。它也可看作 N 周期序列傅里叶系数的 N 倍;频域乘法因此对应循环卷积,需要与非周期的线性卷积分开。
令 WN=e−j2π/N。计算正交和:
Sm−n=k=0∑N−1ej2πk(m−n)/N.
若 m=n,每项为 1,和为 N。若 m=n,令 q=ej2π(m−n)/N=1,但 qN=1:
Sm−n=1−q1−qN=0.
因此:
N1k∑X[k]ej2πkm/N=N1k∑n∑x[n]ej2πk(m−n)/N=N1n∑x[n]Sm−n=x[m].
所以:
x[n]=N1k=0∑N−1X[k]ej2πkn/N.
1/N 抵消了选中一个模式时得到的正交和 N。这也说明标准 DFT 并没有自动输出“原信号的物理峰值”。
输入 x=[1,0,−1,0],N=4:
X[k]=1−e−jπk.
| k | e−jπk | X[k] |
|---|
| 0 | 1 | 0 |
| 1 | -1 | 2 |
| 2 | 1 | 0 |
| 3 | -1 | 2 |
所以 X=[0,2,0,2]。逆变换:
x[n]=41(2ejπn/2+2ej3πn/2)=21(ejπn/2+e−jπn/2)=cos(πn/2),
在整数 n=0,1,2,3 恢复 [1,0,−1,0]。k=3 对应负频率 −π/2,因此两边构成一对共轭正弦分量。
直接 DFT 有 N 个频点,每点求 N 项,主要计算量为 O(N2)。偶数 N 时,把采样下标分为偶数和奇数:
X[k]=m=0∑N/2−1x[2m]WN2mk+m=0∑N/2−1x[2m+1]WN(2m+1)k=E[k]+WNkO[k].
因为 WN2=WN/2,E 与 O 分别是偶数、奇数子序列的 N/2 点 DFT。再利用:
WNk+N/2=−WNk,
得到另一半:
X[k]=E[k]+WNkO[k],X[k+N/2]=E[k]−WNkO[k].
一对结果只需同一个中间乘积,称为蝶形。N=2p 时反复拆到单点:
C(N)=2C(N/2)+O(N)=O(Nlog2N).
对上例,偶数子序列 [1,−1] 的 2 点 DFT 为 [0,2];奇数子序列 [0,0] 为 [0,0],合并得到 [0,2,0,2]。
这推导的是基 2 FFT;其他长度有其他分解与算法,FFT 长度并非必须是 2 的幂。
采样率 fs,不补零时:
fk=Nkfs,Δf=Nfs.
对于负频率部分,k>N/2 可写成 (k−N)fs/N。偶数长度 k=N/2 位于 Nyquist 点,正负表示等价。
实际数据有 N 点,补零到 M≥N 点:
XM[k]=n=0∑N−1x[n]e−j2πkn/M,
Δfgrid=Mfs,Trecord=fsN.
最后一个样本时刻为 (N−1)/fs,频谱记录窗通常按覆盖 N 个采样间隔计算 N/fs。这两个时间描述用途不同。
例如 fs=1000 Hz、N=1000、M=4000:实际观察仍是约 1 s,频点从 1 Hz 加密到 0.25 Hz。补零读取的是同一段有限数据 DTFT 上更多位置;不会增加新的时间信息,也不自动提高分开相邻正弦的能力。
复正弦 x[n]=AejΩ0n,截取 N 点。第 k 个 DFT 值:
X[k]=An=0∑N−1ej(Ω0−2πk/N)n.
令 θ=Ω0−2πk/N,用几何和:
X[k]=A1−ejθ1−ejNθ.
用 1−ejβ=−2jejβ/2sin(β/2):
X[k]=Aej(N−1)θ/2sin(θ/2)sin(Nθ/2).
当 θ=0,取极限得到 AN;在恰好整周期、对准频点的情况下,其他不同整数频点处为 0。若频率没有对齐网格,很多频点非零,就表现为泄漏。
对真实余弦,要把正负两支复指数都加上。观察记录窗不等于物理信号永远从记录起点重复;DFT 的周期延拓是表示上的约定。
令实际数据点数为 N,窗 w[n] 同样有 N 点:
v[n]=w[n]x[n].
定义:
S1=n=0∑N−1w[n],S2=n=0∑N−1∣w[n]∣2,CG=NS1.
S1 用于相干正弦的幅值校正,S2 用于功率密度归一化,它们不是同一个量。矩形窗 w=1 时 S1=S2=N。
例如周期型 Hann 窗,N≥4:
w[n]=21−21cos(2πn/N).
一个整周期余弦和为 0,因此 S1=N/2。平方:
w[n]2=41−21cos(2πn/N)+41cos2(2πn/N).
余弦平方和为 N/2,所以 S2=3N/8。于是 CG=1/2。对称型 Hann 用 N−1 作分母,有限长度的这些值会不同;应按实际窗计算,不盲套常数。
窗降低旁瓣通常伴随更宽主瓣。按任务选择窗:分开近邻分量、读取孤立峰幅值、估计宽带噪声,关注点不同。
矩形窗、整周期余弦、0<k0<N/2:
x[n]=Acos(2πk0n/N+ϕ)=2Aejϕej2πk0n/N+2Ae−jϕe−j2πk0n/N.
由正交性:
X[k0]=2ANejϕ,X[N−k0]=2ANe−jϕ.
只保留正频率并表示真实余弦峰值:
A[k0]=N2∣X[k0]∣.
argX[k0]=ϕ 是以记录起点和余弦为基准的相位。正弦的相位还需换成相同余弦约定。
加窗时:
V[k0]=2AejϕS1+2Ae−jϕn∑w[n]e−j4πk0n/N.
第二项是负频率镜像通过窗产生的贡献。如果该项为零,2∣V[k0]∣/∣S1∣ 精确给出峰值;若镜像足够小,则可近似使用。靠近 DC、Nyquist、邻近峰或偏离频点时,要考虑镜像、泄漏和窗的栅栏损失,不能把简单公式视为任意信号的精确幅值。
DC 与偶数长度的 Nyquist 点各只有一个独立频点,不乘 2。对实信号、M 点 FFT 的单边范围 0≤k≤⌊M/2⌋:
- k=0 不倍增。
- M 为偶数时,k=M/2 不倍增。
- 其余正频率倍增;奇数长度的最高正频率仍要倍增。
- 复数输入没有同样的共轭对称,不能一般地丢弃负频率。
补零后分母仍由 S1 决定。矩形窗就是实际 N,不是补零后的 M。
| 量 | 电压输入时的单位 | 回答 |
|---|
| 峰值幅度 | V | 一个正弦峰值是多少 |
| RMS 幅度 | V | 与同等均方对应的幅度 |
| 均方/功率型量 | V² | 电压平方的平均 |
| PSD | V²/Hz | 每单位频率的均方密度 |
| ASD,即 PSD | V/Hz | 密度的平方根 |
零均值正弦 x=Acos 的均方 A2/2,RMS 为 ∣A∣/2。PSD 的积分得到均方,再开方得到 RMS;单个 PSD 峰高会随窗、实际记录长度和估计方法改变,不能直接当成峰值电压。只增加补零长度时,同一物理频率处的密度值不变;更密的网格可能采到更接近连续谱峰顶的位置,因此网格上的最大值可以变化。这与改变 PSD 归一化是两回事。
电阻上的瓦特还需 PW=xRMS2/R。将 V² 随意标成 W 会导致物理单位错误。
对 M 点 FFT,实际加窗数据 v[n] 在 n≥N 处补零。由 DFT 正交性:
k=0∑M−1∣VM[k]∣2=n,m∑v[n]v[m]∗k∑e−j2πk(n−m)/M=Mn=0∑N−1∣v[n]∣2.
定义双边周期图密度:
P2[k]=fsS2∣VM[k]∣2,Δf=Mfs.
对全部频点积分近似:
k=0∑M−1P2[k]Δf=MS21k∑∣VM[k]∣2=S2∑n=0N−1∣w[n]x[n]∣2.
矩形窗时右侧正好是原记录均方。一般窗得到窗能量加权的均方;对适当平稳过程具有相应估计解释,并非每段任意确定信号都与未加窗均方精确相等。
这个归一化与 SciPy 的频谱估计说明 及 periodogram 文档 一致。本章不默认去均值;实际库调用可能默认去均值,比较 DC 和总均方前应核对设置。
对实数据,负频率与对应正频率的平方模相同。构造单边 PSD 时,把两边的功率相加:
P1[k]=⎩⎨⎧P2[k],P2[k],2P2[k],k=0M 偶数且 k=M/2其余单边频点.
因此单边 PSD 积分仍等于双边积分。峰值幅度乘 2 与功率合并乘 2 是不同操作;不能先构造单边峰值,再平方直接冒充 PSD,否则还缺时间/窗/采样率归一化。
x=[1,0,−1,0] V、fs=4 Hz、矩形窗,N=M=4、Δf=1 Hz:
X=[0,2,0,2].
正频率 1 Hz 的单边峰值:
A=42×2=1 V.
双边密度在 k=1,3 都是:
P2=4×422=0.25 V2/Hz.
合成单边:
P1(1Hz)=0.5 V2/Hz.
积分 0.5×1=0.5 V²,RMS 为 0.5=0.707107 V,与时域 (1+0+1+0)/4 一致。
补零到 M=16:网格变成 0.25 Hz,原 1 Hz 点的变换值仍是 2,幅值分母仍是 N=4,PSD 分母仍是 fsS2=16。新增频点让窗频谱曲线更密,但全部单边 PSD 乘 0.25 Hz 后的总和仍为 0.5 V²。
对于实窗且 S1=0:
ENBW=fs∣S1∣2S2.
它把功率谱型归一化 ∣V∣2/∣S1∣2 与 PSD 归一化 ∣V∣2/(fsS2) 联系起来。矩形窗 ENBW 为 fs/N;上述周期 Hann 为:
fsN2/43N/8=1.5fs/N.
补零不改变 S1,S2,因此不改变这个噪声带宽。单次周期图的随机起伏通常很大;Welch 方法分段加窗并平均,减少方差,同时短段会扩大频谱主瓣。段长、重叠和窗应随结果记录。
长度 Lx 与 Lh 的线性卷积长度是 Lx+Lh−1。DFT 乘法给循环卷积:
yM[n]=m=0∑M−1x[m]h[(n−m)modM].
若 M<Lx+Lh−1,尾部会绕回开头,造成时域混叠。两段都补零到:
M≥Lx+Lh−1
后,FFT 相乘再逆变换才能得到完整线性卷积。例如 [1,2,3]∗[0.5,0.5] 长度为 4;3 点循环卷积会把最后的 1.5 叠回第一点。
- 记录实际 fs,N、信号单位、是否去均值或去趋势。
- 根据目标选窗,计算实际 S1,S2。
- 按需要补零到 M,用 fs/M 建频率轴。
- 选择峰值/RMS/PSD 的一种表示,按其规则归一化。
- 实输入构造单边时处理 DC、Nyquist 和长度奇偶。
- 用已知正弦核幅值,用 Parseval 核总均方。
- 说明记录长度、窗、平均方式;不要只报告“用了 FFT”。
- [1,1,1,1] 的 DFT:[4,0,0,0];DC 为 4/4=1,不乘 2。
- [1,−1,1,−1] 的 DFT:[0,0,4,0];Nyquist 点幅值为 1,不乘 2。
- 实际 1000 点、FFT 4000 点,矩形窗幅值分母?1000;频点间隔分母?4000。
- 单边 PSD 积分为 4 V²,含 DC 的总 RMS?2 V;交流 RMS 需先处理 DC。
- 5 点实 FFT 的最高正频率点是否倍增?是,奇数长度没有独立 Nyquist 点。