下面显示了滤波器设计的设计注意事项,您可以使用 Matlab/Octave 和 Python Scipy.Signal 中的常用工具来确定使用此标准的滤波器系数(脉冲响应)。(如 Matlab 中的 firls 和 firpm 滤波器设计命令)。
当您插入零时,您会在频率中创建副本,如下图所示,但除了存在于其他频率的副本之外,它不会扭曲您的原始频带限制频谱。因此,理想的内插滤波器将通过您的原始频谱而不会失真,并完全过滤其他频率的副本。任何可以做到这一点的过滤器都会为您提供理想的插值。(现实情况是没有滤波器可以实现这一点,因此我们做出妥协并设计可实现的信噪比和允许失真的其他指标。)
您接近理想过滤器的能力将推动过滤器设计的复杂性。请注意,由于副本位于定义的频率位置(而不是典型低通滤波器的整个阻带),因此您可以使用多频带滤波器设计来获得更好的插值滤波器,给定相同数量的抽头(Matlab,Octave , Python Scipy.Signal 都能够轻松地为多波段滤波器提供设计解决方案,为此我推荐最小二乘滤波器算法(有关更多信息,请参见 Matlab/Octave 中的命令 firls)。
下面显示了一个简单的 4 插值示例和所需的滤波器设计。
首先让我解释一下“展开”的数字频谱:如果允许采样信号的频率轴延伸到±∞,而不是局限于独特的数字频率范围±Fs/2(在哪里Fs是采样率),您将看到以 0 (DC) 为中心的原始频谱的副本也同样以Fs. 这是因为频率轴对于离散时间信号是周期性的,这就是为什么我们只需要显示来自的频谱±Fs/2(甚至0到Fs/2对于真实信号),因为这在其他任何地方都可以复制。但是,我发现这种可视化有助于理解多速率信号处理以及连接模拟和数字系统中的许多概念。
当我们插入N−1零(在下面的示例图中N=4),这会导致采样率增加 N 倍,但存在于原始采样率的每个倍数附近的图像仍保留在其原始位置。所以在我们新的数字频率跨度与新的Fs那是N高几倍,我们仍然拥有原始光谱,在其光谱占用范围内没有失真,但我们有失真,新图像现在是我们主要信号的一部分,存在于新图像中±Fs/2. 所以我们理想的滤波器不会扭曲我们感兴趣的主要信号,同时拒绝这些更高频率的图像。


我们可以使用传统的低通滤波器来简单地通过我们感兴趣的信号并拒绝所有更高的频率,但是常见的数字滤波器设计算法(例如 Matlab 中的 firpm 和 firls,导致分别使用 Parks-McLellan 算法和最小二乘算法的设计) ) 很容易允许多频带滤波器设计,它将所需的抑制集中在我们需要的地方。下面显示了我们将用作此示例的多频带滤波器设计的目标通带和抑制带。

至于您的情况,如果您能够将 L 或 M 分解为因子,则可以通过分阶段执行来获得更好的结果。一旦您看到给定比率和信号带宽的滤波器设计要求,这将更加清晰。
有关插值器滤波器设计及其结果的另一个示例,请参见这篇文章:
下采样:重采样与抗锯齿拟合 + 抽取