如何理解 FIR 滤波器中的滤波器系数

信息处理 过滤器 有限脉冲响应
2022-02-04 19:27:12

这是我们得到的差分方程:

y(n) = -0.25x(n) - 0.15x(n − 1) + 0.78x(n − 2) − 0.15x(n − 3) - 0.25x(n - 4)

我知道那是 FIR。系数的选择方式是通过这种卷积系统去除某些输入信号频率。以 Matlab 音频文件 gong.mat 为例,我们读取文件然后我们有输入信号 x 和采样率 Fs,然后通过这样的系统,我们有输出信号 y。我们如何理解使某些输入信号频率被过滤的滤波器系数?不同的系数导致不同的滤波器类型?我们可以估计去除了哪些频率吗?

3个回答

2-tap FIR 滤波器可以用简单的直觉来理解(我使用 Python 进行绘图,但freqz在那里是一样的)。

让我们从两个具有相同值的水龙头开始:b = [1, 1]这允许通过恒定信号(例如[1, 1, 1, ...]),但或多或​​少会阻止快速变化的信号(例如[1, -1, 1, -1, ...]),即它是低通:

w, h = scipy.signal.freqz([1, 1], 1)

plt.plot(w, abs(h))

在此处输入图像描述

另一方面,b = [-1, 1]将做相反的事情:让变化的信号通过但阻止恒定的信号,即我们有一个高通。

w, h = scipy.signal.freqz([-1, 1], 1)

plt.plot(w, abs(h))

在此处输入图像描述

我不确定将这种直觉扩展到像您这样的更复杂的信号是否很简单。但是从形状来看,我预计会出现一些带通行为(因为我们同时具有高通和低通分量),其峰值频率约为采样频率的三分之一(因为类似的信号[1, 0, 0, -1, 0, 0, 1, ...]将能够通过)。这显然与事实相去甚远:

在此处输入图像描述

freqz可以绘制归一化频率的幅度和相位。像这样使用它:

freqz(b,1)

其中 b 是系数的向量。

我同意 NPE 的观点,尽管我建议 DSP stackexchange,但这个问题可能更好地放在其他地方。看看这里,看看你能不能到达某个地方。如果您想从一些自学开始,我建议您阅读 NPE 提到的维基百科页面的以下两段:

示例:移动平均滤波器,可以帮助您更好地理解系数的含义; FIR 滤波器的频率响应,如果您想了解在时域中与该滤波器进行卷积如何改变频率,它将引导您朝着正确的方向前进。