不理解 MATLAB“黄油”低通结果中的系数

信息处理 matlab 过滤器 低通滤波器
2022-02-06 13:58:55

我不理解 Matlab 的“黄油”命令中输出的性质。打电话

[b,a] = butter(4, 0.5, 'low');

给了我两个向量,文档说它们是传递函数b的分子和a分母。

然而,绘制这个传递函数的频率响应freqz()并没有给我我的预期。

如果我绘制

freqz(b./a)

我懂了:

b 在 a 上的频率

这不是低通滤波器,这是某种抑制中频的带阻滤波器。但是,如果我绘制

freqz(b)

我看到了我希望的低通滤波器:

仅 b 的频率

因此,如果我想使用 Butterworth 滤波器低通我的数据,我只使用b? 如果是这样,那有什么意义a呢?

1个回答

您使用了错误的语法。你应该调用freqz函数:

freqz(b,a)

您不划分任何系数。在非递归滤波器 (FIR) 的情况下,您只使用存储在b向量中的系数。当您使用递归 LCCDE(线性常数系数差分方程)(主要是 IIR 滤波器)时,您还需要a向量。a如果您使用非递归 FIR 滤波器,我建议您设置为 1。

您还应该注意本手册条目的最后一段和此答案中提到的传递函数表示的数值问题使用 zpk 表示总是更安全。