Scipy Butterworth带通滤波实现及相关技术问题咨询
问题1解答
你绘制的图X轴属于时域。你用X轴映射的是date日期列,且Butterworth带通滤波属于时域滤波方法,输出的滤波结果F是和原始输入数据一一对应的时域序列,两个维度的对应关系就是随时间变化的信号幅值,自然是时域图。
问题2解答
当前结果本身就是时域结果,不需要做任何转换即可直接用于周期分析。FFT是将时域信号转换为频域信号的工具,反过来频域转时域是IFFT,你这个场景完全用不上。
问题3解答
代码里你传入butter_bandpass_filter的fs参数值为200,和你提到的实际采样率200Hz是一致的,这个设置没问题。
如果采样率设置出现偏差:
- 首先会导致滤波的实际通带范围和预期不符:计算通带截止时依赖奈奎斯特频率(0.5*fs),如果填的fs比实际值大,实际截止频率会比你设置的lowcut/highcut更低,反之则更高,完全达不到预期的滤波效果,甚至可能把有效信号滤除、保留噪声。
- 后续如果基于采样率计算信号时长、周期、频率等参数,所有结果都会出错。
问题4解答
带通滤波的lowcut、highcut核心选择逻辑是:保留你需要的有效信号频段,滤除你不需要的干扰/噪声频段。操作前建议先对原始数据做FFT频谱分析,明确有效信号和干扰的频率分布,再对应设置参数。
你之前导出原始数据用的是0.7-1.0Hz频段,说明你的有效信号就在这个区间,现在代码里设置的1-20Hz的通带会直接把0.7-1Hz的有效信号滤除,必须调整参数,建议改成lowcut=0.7,highcut=1.0即可。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

