Nav*_*ast 17 python signal-processing scipy
在python中是否有任何准备好的函数将过滤器(例如Butterworth过滤器)应用于给定信号?我在'scipy.signal'中寻找这样的函数,但我没有找到任何有用的函数,而不是过滤设计函数.实际上我希望这个函数将滤波器与信号进行卷积.
cxr*_*ers 33
是! 那里有两个:
scipy.signal.filtfilt
scipy.signal.lfilter
Run Code Online (Sandbox Code Playgroud)
还有卷积(convolve和fftconvolve)方法,但这些方法可能不适合您的应用,因为它涉及IIR滤波器.
完整代码示例:
b, a = scipy.signal.butter(N, Wn, 'low')
output_signal = scipy.signal.filtfilt(b, a, input_signal)
Run Code Online (Sandbox Code Playgroud)
您可以在文档中阅读有关参数和用法的更多信息.其中一个问题是Wn奈奎斯特频率的一小部分(采样频率的一半).因此,如果采样率为1000Hz,并且您希望截止频率为250Hz,则应使用Wn=0.5.
顺便说一句,我强烈建议大多数应用程序使用filtfiltover lfilter(filter在Matlab中称为).正如文件所述:
此功能应用线性滤波器两次,一次向前,一次向后.组合滤波器具有线性相位.
这意味着输出的每个值都是输入中"过去"和"未来"点的函数.因此它不会滞后于输入.
相反,lfilter仅使用输入的"过去"值.这不可避免地引入了时间延迟,这将取决于频率.当然有一些应用程序是可取的(特别是实时过滤),但大多数用户的情况要好得多filtfilt.
| 归档时间: |
|
| 查看次数: |
31885 次 |
| 最近记录: |