gpt4 book ai didi

python - python 中的低通滤波器

转载 作者:太空狗 更新时间:2023-10-29 21:03:35 28 4
gpt4 key购买 nike

我正在尝试将 Matlab 代码转换为 Python。我想在 Python 中实现 Matlab 的 fdesign.lowpass()。使用 scipy.signal.firwin() 可以完全替代此 Matlab 代码:

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)

这应该会产生一个与最终在 Matlab 代码中制作的过滤器相似的过滤器。如果您的目标是获得功能等效的结果,这应该提供一个有用的筛选。

但是,如果您的目标是 python 代码提供完全相同的结果,那么你必须查看 design 调用的底层(在 Matlab 中);从我的快速检查来看,解析 Matlab 调用以准确识别它在做什么,即使用什么设计方法等,以及如何将其映射到相应的 scipy 调用并不是一件容易的事。如果你真的想要兼容性,你只需要为有限的数量做这件事对于过滤器,您可以手动查看 Hd.Numerator 字段——这个数字数组直接对应于上面 python 代码中的 h 变量。所以如果你复制那些手动将数字放入数组中,您将获得数值等效的结果。

关于python - python 中的低通滤波器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17833119/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com