下采样:重采样与抗锯齿拟合 + 抽取

信息处理 下采样 抽取
2021-12-22 01:53:03

我有一个离散信号采样@Fs。我需要将其下采样到 Fs/k。主要原因是减少信号带宽并加快计算速度:我只对减少的带宽感兴趣 < Fs/2k。可能存在一些高频噪声 >> Fs/2k:需要抗锯齿。据我了解,我有几种选择:

  1. 蛮力:抽取(不考虑混叠问题!)
  2. 抗锯齿 + 抽取:我可以使用例如numpy 抽取函数
  3. 频率方法:FFT 然后截断然后 IFFT,可以使用重采样来完成

只有解决方案 2- 3- 有助于解决抗锯齿问题。3-频域滤波器,假设信号是周期性的。2- 带 IIR/FIR 滤波器的滤波器。

我总是可以毫无疑问地使用 decimate ,但我想准确了解背后的限制。使用解决方案 2- 与 3- 的缺点/优点是什么?你有一些关于下采样的实用指南吗?一些建议?

2个回答

我将解释为什么方法 2 通常比方法 3 更好。

频域方法等效于滤波器设计的“窗口化”方法——要正确执行该方法,您应该在进行 FFT 之前对数据进行窗口化。对于时域方法中的抗混叠滤波器设计,最小二乘滤波器设计算法优于窗口设计方法。(有关详细讨论,请参阅这篇文章:FIR 滤波器设计:窗口与 Parks McClellan 和最小二乘法)。对于用于抽取和插值应用的时域滤波器,由于阻带滚降,最小二乘滤波器设计是比等波纹更好的选择:对于等波纹,阻带在每个混叠频带中的电平相同,因此比使用最小二乘法获得的整体噪声折叠更多。

旁注:如果您观察等波纹设计的系数,您通常会观察到(如果滤波器不太长)两个稍大的“脉冲”朝向滤波器脉冲响应的开始和结束(滤波器的系数为脉冲响应)。去除响应尾部附近的那些较大的系数,等波纹设计也将具有阻带滚降的所需特征!有关详细信息,请参阅:转换 Park McClellan FIR 解决方案以实现阻带滚降

此外,Matlab/Octave/Python 中的最小二乘(和等波纹)设计工具具有多频带滤波器设计,非常适合抽取(和插值)应用,因为图像仅限于不同的频带。因此,您可以将滤波器抑制优化到仅会折叠的频率位置,从而在给定相同抽头数的情况下进一步优化解决方案。下面是我最近展示的用于插值的示例频谱,以及由此产生的适用于消除图像的最小二乘和等波纹的多频带滤波器设计(这是插值滤波器,通过消除图像,这同样适用于抽取滤波器,我们希望在丢弃样本之前拒绝这些相同的图像位置)。

在该图中,蓝色是所需的光谱及其图像,红色和黑色显示了两种不同滤波器设计选择的多频带滤波器响应(红色是最小二乘,黑色是 Parks-McCelllan 或等波纹设计) . 这对于抽取器来说是等效的,只是图像是噪声或其他信号,这些信号在丢弃样本进行抽取的过程中可能会折叠起来。给定相同数量的抽头,观察使用最小二乘滤波器设计折叠成频带的总噪声如何显着减少。

插值滤波器示例

注意:如果您有足够的样本以不截断所需的响应,您当然仍然可以在频域中进行最小二乘滤波器设计方法----上述在时域中完成的滤波(卷积)是相当于在频域中相乘 - 但要正确执行此操作将需要更多样本以确保包含足够的内核尾部(滤波器脉冲响应的频率变换)。

将过采样带信号转换为其临界采样率(或以某种方式高于该值)的推荐方法是使用时域LP 滤波器和抽取方法。

这也可以使用多相滤波器组架构有效地实现。

如果滤波器长度恰好太长,则可以使用 DFT/FFT 频域技术实现低通滤波器。但这取决于您的要求,它不会提高您的计算准确性(除了数值问题可能会有所帮助),但会提高计算效率。