Matlab FIR滤波器分子系数到python

信息处理 matlab 过滤器 过滤器设计 Python 有限脉冲响应
2022-01-28 11:17:08

我在 Matlab 中创建了一个等波纹 FIR 滤波器,filterDesigner并将其导出为 ASCII 文件。该文件包含分子值作为标记下的 51 个数字的列表Numerator:(这是文件具有的所有数据)

现在我将这 51 个值读入一个名为的 python 数组num并尝试使用scipy.signal.lfilter在 python 中重新创建过滤器

from scipy import signal

x_filt = signal.lfilter(num, np.ones_like(num), x)  # x is my input signal

这是我的原始信号

在此处输入图像描述

这是来自Matlab的滤波信号(Fpass-800Hz,Fstop-1200Hz)

在此处输入图像描述

但这是我从 python 代码中得到的scipy.signal.lfilter

在此处输入图像描述

有人可以告诉我我在这里做错了什么吗?


编辑:(得到答案后)这是正确的python代码

x_filt = signal.lfilter(num, 1, x)
1个回答

你不想np.ones_like(num)在分母中。这是所有的分母,有很多可能不稳定的极点。您在 Python 中的分母必须是[1,0,0,0,0,0,...]. 或者[1]如果可能的话。