我在尝试在 MATLAB 中创建/使用在非常低的频率下足够准确的滤波器时遇到了真正的麻烦。
我对 5 到 50Hz 之间的信号范围很感兴趣,高频段并不是什么大问题,我真正想做的是过滤 5Hz 以下的任何信号。但是,我发现巴特沃斯滤波器的滚降在滤波方面做得很少,它只是将信号衰减到正常信号的一半左右。
我试过两种方法。一个是使用 MATLABs 过滤工具fdatool
,另一个是下面的手动方法:
filtLow = 5;
filtHigh = 50;
Fs = 1000;
[b, a] = butter(1, filtLow/(Fs/2), 'high');
y = filtfilt(b, a, data);
或者
[b, a] = butter(1, [filtLow/(Fs/2), filtHigh/(Fs/2)]);
y = filtfilt(b, a, data);
谁能给我一个可以给我更好结果的建议或代码?