我想不出更好的方法来问这个问题,所以我将从一个例子开始。假设我有一个最大频率为 50Hz(以 100Hz 采样)的输入信号。现在感兴趣的信号位于 0-5Hz 范围内,因此我可以添加一个截止频率为 5Hz 的低通滤波器,并使用生成的信号进行进一步处理。我的理解是,现在我可以将滤波后的信号下采样 10 倍,从而减少处理负载。我对吗?如果是,为什么在过滤后不总是执行下采样,因为在我看来这是显而易见的方法?如果我的假设错了,我错在哪里?
为什么我要让信号过采样?
你是对的,如果你的信号被限制在 <5 Hz,那么你可以用 10Hz 的采样率完美地表示它。这就是著名的采样定理
但是......对于为什么一个人不能和/或倾向于使用严格采样的数据,可能会有实际的考虑。
一个原因是难以对信号进行严格采样。您为更改信号速率而执行的任何操作都将具有一些具有非零转换带宽的滤波器。在您的示例中,这将非混叠频率内容限制为 5-ftrans 这种过渡带宽可以通过长脉冲响应滤波器变得非常窄,但这在信号开始和结束时的处理和瞬态(振铃)方面都有成本。
另一个原因是对结果信号起作用的算法的有效性。如果您需要使用只能选择最近样本的黑盒组件,那么最好向它提供过采样数据。
大多数(全部?)非线性操作对于严格采样和过采样数据的行为会有所不同。一个例子是对信号进行平方,这是一种众所周知的 BPSK 载波恢复方法。如果没有 2x 过采样条件,当频域与自身卷积时,时域信号与自身相乘会导致环绕垃圾混叠。
过度采样的另外两个原因:
低延迟:例如控制回路需要非常低的延迟。过采样可以更快地输入和输出数据,从而减少延迟。此外,任何低通滤波都会引入群延迟。低通滤波器越锐利,群延迟越高。如果您进行过采样,您需要一个不那么陡峭的抗混叠滤波器,并最终获得更少的群延迟和延迟。
实用性:如果您的输入和输出以相同(高)速率运行,您可能会进行下采样,但您必须再次上采样才能输出结果。示例:在家庭影院系统中,您可以对低音处理路径进行下采样,但由于输出以高速率运行,您必须再次上采样。在许多情况下,MIPS 的节省是不值得的
确定采样率时需要考虑许多因素。让我列出其中的一些,让您了解如果降低采样率可能会发生什么其他后果。当然,这在很大程度上取决于您如何降低采样率,但是......
- 奈奎斯特频率:不能检测超过奈奎斯特的频率,至少是检测率的一半,使用典型的处理方法。有一些方法涉及在 A/D 转换之前将信号过滤到奈奎斯特频带内的信号。
- 检测奈奎斯特附近的频率可能很困难,并且容易出错。请注意,这通常仅适用于那些真正接近乐队的人。在此示例中,将范围限制为 12Hz(6Hz 奈奎斯特)将足以解决与此相关的任何问题。
- 与低频相比,高频分量的强度往往会降低。这主要是因为采样理论假设了一个梳状函数,即在时间间隔均匀的瞬间进行检测。事实是,所有信号都是在某个小时间窗口内测量的。这样做的效果是在时域中对一个矩形进行卷积,或者在频域中乘以一个 sinc 信号。当然,如果您只是每 10 个信号采集一次(而不是使用更长的采样时间),这种影响就会得到缓解。
为了说明其中的一些原则,我编写了一个简单的 matlab 程序,我还将显示输出。
pis=linspace(0,2*pi,2048);
for f=1:512
sig=cos(f*pis+pi/2);
sig_average=filter(ones(16,1),1/16,sig);
sam_sig=sig_average(1:16:end);
freq=abs(fft(sam_sig));
freqs(f)=max(freq);
end
figure;plot((1:512)/64,freqs)
奈奎斯特标准(过采样两次以完美描述您的信号)适用于无噪声数据。如果要重建噪声数据,则需要以高于最小频率的采样。在图像的情况下尤其如此,通常没有周期性信号,因此不能简单地通过时间平均来减少噪声。
此外,如果您想将模型拟合到数据中,您将再次受益于更高的采样率,因为将模型拟合到三个数据点不会特别稳定,尤其是在存在噪声的情况下。