seegongsik
SC · 采样与离散

DTFT 与 DFT

DTFT 是离散信号真正的频谱,即在单位圆上看到的 z 变换。DFT 则是为了让计算机能够计算,在 N 个频率上对这个连续频谱采样的结果。本讲中你将调节信号频率,确认它正好落在 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] = cos(ω₀n),N=16
DTFT 幅度(金色曲线)与 DFT 频点(蓝色杆)
信号频率 ω₀0.98 rad
信号频率与 DFT 频点
ω₀ = 0.98 · N = 16 · 频点间隔 Δ = 2π/N = 0.39
最近的频点 k = 2 · ω = 0.79
信号频率 ω₀ 卡在两个 DFT 频点之间(离最近的频点超过频点间隔的 1/4)。没有哪个频点落在 DTFT 峰顶上,其余频点也不在零点,而是采到了峰的斜坡和旁边的小峰,所以能量大范围地泄漏到多个格子。这就是频谱泄漏。
频点之间(泄漏)

在单位圆上看到的频谱

离散信号 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 到 π 这一半就够了,第一屏的图画的也正是这一半。

观察DTFT X(ejω) = Σₙ x[n] e−jωn
DTFT 是离散信号的频谱。
选择DTFT = X(z), z = ?
DTFT 是在单位圆上看到的 z 变换。
填空DFT X[k] = X(ejω), ω = ?
DFT 是在 N 个点上对 DTFT 的采样。
自己来DFT 的快速算法 = ?
FFT 以 N log N 量级计算 DFT。

计算机能算的 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 变换。从信号基础出发,经过卷积、傅里叶、拉普拉斯、采样一路走来的分析工具链,在离散频谱这里绕成了一圈。

DTFT X(ejω) = Σₙ x[n] e−jωn 是离散信号的频谱,是在单位圆 z = ejω 上看到的 z 变换,对 ω 以 2π 为周期(离散化的结果)。DFT X[k] = Σ x[n] e−j2πkn/N 是在 ω = 2πk/N 的 N 个点上对 DTFT 采样得到的有限、可计算的版本,FFT 以 N log N 量级快速计算它。信号频率对准频点时得到干净的一点,落在频点之间时出现频谱泄漏(有限窗口产生的旁瓣)。用窗函数减少泄漏,代价是分辨率下降。
进入下一章

至此,分析信号与系统的工具全部齐备。我们学会了在时间轴上观察,用傅里叶、拉普拉斯和 z 变换,再经采样用数字方式处理。最后一章的方向将从分析转向设计。下一单元 稳定性与劳斯判据 的第一个问题是怎样让系统稳定:不直接求极点,只凭特征方程的系数,就建立劳斯表来判断是否所有极点都在左半平面。即使是极点难以求解的高阶系统,也能用手判定是否稳定,接着再用根轨迹和伯德图设计控制器。