MATLAB 中的 4 相 FIR LPF

信息处理 matlab 过滤器 声音的 过滤器设计 低通滤波器
2022-02-09 08:44:25

我正在尝试使用我在第 18 页的ITU 1770-3中找到的系数创建一个低通 FIR 滤波器。这是我正在研究的音频响度测量算法的最后一块拼图。

在此处输入图像描述

一般来说,我对数字滤波器并不是非常熟悉,但到目前为止,我已经能够使用分子和分母系数来创建它们。从那里我可以使用 filter(b,a,input) 来处理音频。

但我不太确定如何处理这 4 组系数。我是否应该以某种方式从中得到一组分子/分母?我该怎么做才能从这些系数中创建 LPF?

更新:根据@DanBoschen 的一些明智建议,我对过滤器进行了建模。这是响应图表:

LPF 响应

1个回答

这些似乎是线性相位的系数(由于系数的均匀对称性) 48 抽头低通滤波器以多相结构排列并在标题中给出了插值器一词,目的是对输入信号进行 4 倍上采样.

我在这篇文章中详细介绍了从 FIR 系数设计多相插值器的方法:如何实现多相滤波器?,下面复制的图像特别显示了如何将传统 FIR 结构映射到多相结构以使用系数的行到列映射进行插值:

多相实现

在这篇文章中这个特定的 48 抽头实现作为四个 12 抽头多相滤波器给出的情况下,首先将使用零插入对信号进行上采样,就像我在上面发布的图表中所做的那样(因此在每个输入样本之间插入 3 个零导致采样率增加 4 倍)。低通滤波器旨在通过感兴趣的信号并拒绝零插入创建的图像。(我对此有更多详细信息,但这比回答问题所需的更多细节,因此会稍微倾向于简洁——如果有人想要添加,请在评论中指出)。在这种情况下,给定完整的设计,设计人员确定 48 个抽头滤波器就足够了,

对于具有抽头 h[0]、h[1]、h[2].... h[47] 的 FIR 滤波器

这被映射为四个多相滤波器:

过滤器 1:h[0] h[4] h[8] h[12] ... h[44]

过滤器 2:h[1] h[5] h[9] h[13] .... h[45]

过滤器 3:h[2] h[6] h[10] h[14] .... h[46]

过滤器 4:h[3] h[7] h[11] h[15] .... h[47]

OP 给出的列是上面详述的四个过滤器中的每一个的抽头。要查看滤波器响应,请从列出的每一行中按顺序读取系数,然后可以使用 Matlab、Octave 或 Python (SciPy) 中可用的 freqz 命令来查看响应。