DTFT 与 DFT
对准频点是一点,错开则泄漏
上图是长度 N = 16 的离散余弦 x[n] = cos(ω₀n)。下图的金色曲线是它的 DTFT 幅度,即把 ω 从 0 连续扫到 π 得到的真实频谱;蓝色竖条是在 ω = 2πk/N 的 DFT 频点处对该曲线采样的值。频点间隔为 2π/16 ≈ 0.39 rad,灰色虚线是信号的真实频率 ω₀。初始的 ω₀ = 0.98 几乎正好在频点 k = 2 与 3 的中间,能量泄漏到多个格子。把 ω₀ 正好对准某个蓝色频点,就只有那一格竖起,其余格子都为 0,得到干净的一点。
在单位圆上看到的频谱
离散信号 x[n] 的 DTFT 是 X(e^(jω)) = Σₙ x[n] e^(−jωn)。这与 E3 单元的 z 变换 X(z) = Σ x[n] z⁻ⁿ 中把 z 放在单位圆上 z = e^(jω) 完全相同,所以 DTFT 是沿 z 平面单位圆走一圈所看到的频谱,对系统而言就是频率响应。它显著的特点是周期性。由于 e^(−jωn) 对 ω 以 2π 为周期,DTFT 也每隔 2π 原样重复,这正是 E1 单元中"采样会把频谱每隔 fs 复制一次"这一事实的另一面。所以离散信号的频谱只需看 −π 到 π 这一段;对实信号,看 0 到 π 这一半就够了,第一屏的图画的也正是这一半。
计算机能算的 DFT
DTFT 中 ω 是连续的,所以有无穷多个值。计算机无法计算无穷,只能在把一个周期 2π 等分成 N 份的 ω = 2πk/N (k = 0, …, N−1) 处取值,这就是 DFT X[k] = Σₙ x[n] e^(−j2πkn/N)。它由有限的 N 个输入得到有限的 N 个输出,相当于在 N 个频点上对 DTFT 曲线采样。按定义直接计算 DFT 需要 N² 次乘法,而库利和图基在 1965 年发表的 FFT 把它降到 N log N 量级,把数字信号处理带入了实用领域。由于时域卷积在 DFT 域变成乘法(补上 0,避免结果首尾缠绕重叠),即使很长的滤波器也能用 FFT 快速运行。
错开频点的频率泄漏
只截取有限的 N 个样本来用,截取窗口会让 DTFT 变成一个有宽度的峰(主瓣)加上旁边排列的小峰(旁瓣)的形状。信号频率 ω₀ 正好落在频点 2πk/N 上时,这个频点位于主瓣峰顶,其余频点恰好落在旁瓣之间的零点,于是得到干净的一点。但如果 ω₀ 卡在频点之间,所有频点都会采到主瓣的斜坡或旁瓣,能量泄漏到多个格子,这就是频谱泄漏。为了减轻它,截取时用把两端平滑削低的窗函数(汉宁窗、汉明窗等),旁瓣降低、泄漏减少,但主瓣变宽,分辨两个相近频率的能力下降。这是用分辨率换取泄漏的减少。
回到第一屏
在第一屏,我们拿一个长度 N = 16 的离散余弦来看它的频谱。金色 DTFT 曲线是把 ω 连续扫过得到的真实频谱,蓝色 DFT 竖条是在 N 个频点上对这条曲线采样的值。把信号频率 ω₀ 正好对准频点 2πk/N,就得到只有一格竖起、其余为 0 的干净一点;移到频点之间,就看到能量泄漏到多个格子。DFT 只是 DTFT 的样本,而 DTFT 是在单位圆上看到的 z 变换。从信号基础出发,经过卷积、傅里叶、拉普拉斯、采样一路走来的分析工具链,在离散频谱这里绕成了一圈。
至此,分析信号与系统的工具全部齐备。我们学会了在时间轴上观察,用傅里叶、拉普拉斯和 z 变换,再经采样用数字方式处理。最后一章的方向将从分析转向设计。下一单元 稳定性与劳斯判据 的第一个问题是怎样让系统稳定:不直接求极点,只凭特征方程的系数,就建立劳斯表来判断是否所有极点都在左半平面。即使是极点难以求解的高阶系统,也能用手判定是否稳定,接着再用根轨迹和伯德图设计控制器。