上采样时插值滤波器中使用的脉冲响应是什么?

信息处理 下采样 自习 软件实现
2022-02-19 05:56:17

我需要将单个周期波形从个样本下采样到个样本。如果这很重要,在我的特殊情况下,MLL=M1

我阅读了有关下采样的信息并得出了我需要的结论:

  1. 将原始波形扩大(一些其他来源将步骤称为“零填充”),L
  2. 插入缺失的样本,
  3. 因子抽取M

如果我理解正确,扩展只需要在每个原始样本之间抽取似乎也很简单,因为它只需要保留每个样本。L1Mth

但我坚持插值过程。使用线性插值的简单解决方案在低频下给了我出人意料的好结果,但当频率增加时(即,当波形中的样本数量减少时)迅速下降。

我发现多次提到使用看起来像点积1的插值滤波器。例如,在Upsampling Wikipedia page 上,我看到:

y[j+nL]=k=0Kx[nk]h[j+kL],  j=0,1,,L1,

其中 h[•] 序列是脉冲响应,K 是 k 的最大值,其中 h[j + kL] 不为零

在我的理解中,展开步骤之后的序列。是上采样波形。但我不明白什么是我读到它们与脉冲响应有关,我理解这个概念。但是我看不到它来自哪里以及如何在实践中获得它。x[]y[]h[]K

有人可以向我解释如何获得吗?h[]K


1在我看来,它也像卷积,但我不太确定。显然这将是 FIR 滤波器的一个实例。我们已经在其他问题中谈到了这一点,但这对我来说仍然不清楚。

2个回答

该总和中的点只是标量乘法。是的,这是一个卷积——你正在通过滤波器对输入信号进行卷积。

下面显示了滤波器设计的设计注意事项,您可以使用 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(甚至0Fs/2对于真实信号),因为这在其他任何地方都可以复制。但是,我发现这种可视化有助于理解多速率信号处理以及连接模拟和数字系统中的许多概念。

当我们插入N1零(在下面的示例图中N=4),这会导致采样率增加 N 倍,但存在于原始采样率的每个倍数附近的图像仍保留在其原始位置。所以在我们新的数字频率跨度与新的Fs那是N高几倍,我们仍然拥有原始光谱,在其光谱占用范围内没有失真,但我们有失真,新图像现在是我们主要信号的一部分,存在于新图像中±Fs/2. 所以我们理想的滤波器不会扭曲我们感兴趣的主要信号,同时拒绝这些更高频率的图像。

上采样

插值

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

插值滤波器

至于您的情况,如果您能够将 L 或 M 分解为因子,则可以通过分阶段执行来获得更好的结果。一旦您看到给定比率和信号带宽的滤波器设计要求,这将更加清晰。

有关插值器滤波器设计及其结果的另一个示例,请参见这篇文章:

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