Skip to content

采样过慢造成的频率错认

拍摄车轮时,有时会看到轮辐慢慢转、停住,甚至倒着转。车轮本身没这么转,是一帧一帧的画面把快运动读成了另一个慢运动。

信号采样也一样。采样率太低时,信息不够;数字系统会把高频成分当成低频,再把错误结果传给后续处理。这个现象叫混叠。

看一个 1 Hz 正弦波,也就是 1 秒振动 1 次。下图把同一个信号分别按 4 Hz、2 Hz 和 1.5 Hz 采样。采样率越低,点越稀。4 Hz 时每周期还能拿 4 个点,到 2 Hz 就只剩过零处的一排 0,再降到 1.5 Hz 时干脆落在另一条更慢的曲线上。

图A.3-1:采样不足与混叠
图A.3-1:采样不足与混叠

图中看采样点就行。第一行还能看到 1 Hz 波形的上升、过零、下降。第二行每周期刚好两个点,采样相位不同时也可能只拿到过零点。到了第三行,红色采样点落在另一条更慢的虚线波形上。只看这些样本,数字系统会把原来的 1 Hz 看成带半圈相位差的 0.5 Hz。

用公式算一下。设原信号为 1 Hz1\text{ Hz} 正弦,采样频率为 1.5 Hz1.5\text{ Hz},采样后的序列是

x[n]=sin(2π11.5n)x[n]=\sin\left(2\pi\frac{1}{1.5}n\right)

因为 11.5=23\frac{1}{1.5}=\frac{2}{3},所以

x[n]=sin(2π23n)x[n]=\sin\left(2\pi\frac{2}{3}n\right)

0.5 Hz0.5\text{ Hz} 以同样的 1.5 Hz1.5\text{ Hz} 采样时,序列是

x0.5[n]=sin(2π0.51.5n)=sin(2π13n)x_{0.5}[n]=\sin\left(2\pi\frac{0.5}{1.5}n\right) =\sin\left(2\pi\frac{1}{3}n\right)

这两组样本只差一个负号,

sin(2π23n)=sin(2π13n)\sin\left(2\pi\frac{2}{3}n\right) =-\sin\left(2\pi\frac{1}{3}n\right)

这个负号表示相位差半圈。数字系统只看采样点,不知道两个样本之间原来转得更快,就会把 1 Hz 的信号当成 0.5 Hz 的低频。

混叠不只是细节变少。信息少了还好办,混叠是把高频伪装成低频;低频区一旦掺进错误信号,后面的算法会把它当成真的低频来处理。

一个超过 fs/2f_s/2 的频率,采样以后会冒充成哪个低频?这个低频叫折回频率。

fs=10 Hzf_s=10\text{ Hz} 为例,奈奎斯特频率是 5 Hz5\text{ Hz}。能无歧义表示的正频率只落在 005 Hz5\text{ Hz} 这一段。6.5 Hz6.5\text{ Hz}5 Hz5\text{ Hz} 高了 1.5 Hz,放不进去,就从 5 Hz5\text{ Hz} 往回退 1.5 Hz,退到 3.5 Hz3.5\text{ Hz}

为什么会折回?因为采样后的频率以 fsf_s 为周期重复。相差整数倍 fsf_s 的连续频率,只看采样点时分不清。

从输入频率 ff 减去整数倍的 fsf_s,把结果搬进 00fs/2f_s/2

falias=fkfsf_{alias}=|f-kf_s|

这里的 kk 取整数就行。选合适的 kk,把频率搬回数字系统能表示的正频率范围。

1 Hz 以 1.5 Hz 采样时,奈奎斯特频率是

fs2=0.75 Hz\frac{f_s}{2}=0.75\text{ Hz}

1 Hz 超过了 0.75 Hz,越界了。它和 1.5 Hz1.5\text{ Hz} 差 0.5 Hz,

11.5=0.5 Hz|1-1.5|=0.5\text{ Hz}

所以只看采样点的话,会读出 0.5 Hz,是样本点丢掉了中间的快变化。

采样率 10 Hz,输入里有 6.5 Hz 成分。奈奎斯特频率是 5 Hz,6.5 Hz 越界了。它离 10 Hz 差 3.5 Hz,

6.510=3.5 Hz|6.5-10|=3.5\text{ Hz}

所以 6.5 Hz 会折回到 3.5 Hz。换个说法,把 fs/2f_s/2 当成镜子,6.5 Hz 比 5 Hz 高 1.5 Hz,镜像位置就比 5 Hz 低 1.5 Hz。

下图把这个折回关系画成一条折线。输入频率越过 fs/2f_s/2 后,不会继续出现在更高的位置,会折回到低频区。

图A.3-2:折回频率
图A.3-2:折回频率

几组例子,

采样率输入频率最近的 kfsk f_s折回频率读法
10 Hz6.5 Hz10 Hz3.5 Hz越过 5 Hz 后折回
10 Hz8.5 Hz10 Hz1.5 Hz更高频率可能落到更低处
10 Hz11 Hz10 Hz1 Hz超过一个采样频率后仍按差值读

最后一行的 11 Hz 虽然已经超过 10 Hz,但仍会读成 1 Hz。对 10 Hz 采样来说,11 Hz 和 1 Hz 只差一个采样频率。只看采样点,它们给出的快慢一样。

数字频谱里要是有 3.5 Hz 的峰值,系统没法靠样本区分它是真实的 3.5 Hz,还是 6.5 Hz 折回来的。混叠一旦进了数字域,就辨不出来源了。

抗混叠低通要放在采样前。先把不需要的高频压下去,才能避免它们折回有效频带。