首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python中的低通滤波器

python中的低通滤波器
EN

Stack Overflow用户
提问于 2013-07-24 19:47:26
回答 1查看 17.5K关注 0票数 9

我正在尝试将Matlab代码转换为Python。我想用Python语言实现Matlab的fdesign.lowpass()。使用scipy.signal.firwin()的Matlab代码的确切替代品是什么?

代码语言:javascript
复制
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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-26 23:09:33

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

代码语言:javascript
复制
# 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代码提供完全相同的结果,那么您必须查看design调用的背后(在Matlab中);从我的快速检查来看,解析Matlab调用以确定它到底在做什么并不是一件容易的事情,例如,使用了什么设计方法等等,以及如何将其映射到相应的scipy调用。如果您确实想要兼容性,并且只需要对有限数量的过滤器执行此操作,那么可以手动查看Hd.Numerator字段--这个数字数组直接对应于上面python代码中的h变量。因此,如果您手动将这些数字复制到一个数组中,您将得到数值相等的结果。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17833119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档