我正在尝试将 Matlab 代码转换为 Python。我想实施fdesign.lowpass()
Python 中的 Matlab。这个 Matlab 代码的确切替代品是什么scipy.signal.firwin()
:
demod_1_a = mod_noisy * 2.*cos(2*pi*Fc*t+phi);
d = fdesign.lowpass('N,Fc', 10, 40, 1600);
Hd = design(d);
y = filter(Hd, demod_1_a);
一个非常基本的方法是调用
# 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)
这应该会产生一个过滤器similar到最终在 Matlab 代码中生成的那个。
如果您的目标是获得功能相同的结果,这应该提供有用的
筛选。
但是,如果您的目标是 python 代码提供完全相同的结果,
那么你就得看看引擎盖下的情况design
调用(在 Matlab 中);从我的快速检查来看,解析 Matlab 调用以准确识别它在做什么,即使用什么设计方法等等,以及如何将其映射到相应的scipy
来电。如果您确实想要兼容性,并且只需针对有限数量执行此操作
过滤器,您可以手动查看Hd.Numerator
字段——这个数字数组直接对应于h
上面的Python代码中的变量。所以如果你复制那些
手动将数字放入数组中,您将获得数字上等效的结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)