|
本帖最后由 wdhd 于 2016-9-12 13:19 编辑
原帖由 tjucruiser 于 2008-5-22 20:03 发表
请问怎么实现零相移带通滤波,请高手指点!:'( 信号频带范围0.5~70Hz,采样频率250Hz,要获取8~15Hz频段信号,要求相位不失真,请问该怎么做?
我尝试用matlab中的filtfilt函数进行滤波,但是效果不好,代码如下:
%Data是一个20000*60的数组
[b,a]=butter(10,7/125,'low');
filter_data=filtfilt(b,a,Data);
[b,a]=butter(10,4/125,'high');
filter_data=filtfilt(b,a,filter_data);
smoothData=filter_data';
...
楼主的程序似乎有点问题:
1,楼主先设计的是一个7Hz为截止频率的低通,把它的输出又输入4Hz为截止频率的高通,等于4-7Hz之间的带通,而楼主需要的是8~15Hz频段信号,怎么取4-7Hz之间的信号?
2,楼主为何不用带通滤波器的设计呢?
[b,a]=butter(n,[6 17]/125);
3,滤波器阶数n不能使用太高,因为对阶数高的滤波器系数有很高的精度要求,而由于有限字长的运算,往往达不到很高的精度,反而造成较大的误差而影响了滤波效果。 |
|