一种非常基本的方法是调用

# spell out the args that were passed to the Matlab function

N = 10

Fc = 40

Fs = 1600

# provide them to firwin

h = scipy.signal.firwin(numtaps=N, cutoff=40, nyq=Fs/2)

# 'x' is the time-series data you are filtering

y = scipy.signal.lfilter(h, 1.0, x)

这应该产生一个类似于最终在Matlab代码中生成的过滤器.

如果您的目标是获得功能相同的结果,那么这应该是有用的

过滤.

但是,如果您的目标是python代码提供完全相同的结果,那么你将不得不在设计调用的引擎下(在Matlab中);从我的快速检查来看,解析Matlab调用以确切地识别它正在做什么,即使用什么设计方法等等,以及如何将其映射到相应的scipy调用中并非易事.如果您真的想要兼容性,那么您只需要为有限的数量执行此操作对于过滤器,您可以手动查看Hd.Numerator字段 – 这个数字数组直接对应于上面python代码中的h变量.所以,如果你复制那些手动编号成数组,你会得到数值相等的结果.

更多推荐

python实现低通滤波_python中的低通滤波器