【发布时间】:2013-03-07 17:21:33
【问题描述】:
我在尝试在 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);
谁能给我一个可以给我更好结果的建议或代码?
【问题讨论】:
-
您是如何设计巴特沃斯滤波器的?可以发一些代码吗?
-
我尝试了两种方法。一个是使用 MATLABs 过滤工具(fdatool),另一个是手动方法如下:
filtLow = 5; filtHigh = 50; Fs = 1000; [b, a] = butter(1, filtLow/(Fs/2), 'high'); y = filtfilt(b, a, data); OR [b, a] = butter(1, [filtLow/(Fs/2), filtHigh/(Fs/2)]); y = filtfilt(b, a, data); -
以后请在问题中贴出代码并正确格式化。
-
抱歉,不小心发布了评论,所以尝试快速编辑它。有什么建议吗?