滤波的信号引入一延迟。这意味着输出信号在时间上偏移相对于该输入。
无限脉冲响应滤波器对某些频率成分的延迟比其他的更大。它们有效地扭曲了输入信号。这个函数filtfilt
用于延迟补偿引入通过这样的过滤器,并由此校正滤波器的失真。这种“零相位滤波”从在向前和向后方向中的滤波的信号的结果。
采取在500Hz采样1秒的心电图读数。添加随机噪声。
FS = 500;N = 500;RNG默认XN = ECG(N)+ 0.2 * randn([1 N]);TN =(0:N-1)/ FS;
与停止高于75赫兹频率的滤波器去除一些噪音。指定与通带波纹的1分贝和阻带衰减60dB的第七阶IIR滤波器。
NF = 7;FP = 75;AP = 1;正如= 60;d = designfilt('lowpassiir'那'FilterOrder',NF,'PassbandFrequency',FP,......'PassbandRipple',鸭,'StopbandAttenuation',如,“采样率”,FS);
滤波器的信号。经滤波的信号是清洁器比原,但在时间相对于滞后它。它也失真由于过滤器的非线性相。放大接近峰值。
xfilter =过滤器(d,XN);图(TN,XN,TN,xfilter)称号“心电图”xlabel'时间(s)',传奇(“原始信号”那“滤波信号”)轴([0.25 0.55 -1 1.5])
一看群时延由滤波器节目介绍,延迟是依赖于频率的。
grpdelay(d,N,FS)
使用过滤信号filtfilt
。延迟和失真得到了有效解决。使用filtfilt
当关键是要保持完好的信号的相位信息。
xfiltfilt = filtfilt(d,XN);图(TN,XN,TN,xfilter)保持上图(TN,xfiltfilt,'R'那“线宽”2)保持关闭标题“心电图”xlabel'时间(s)'传说(“原始信号”那“滤波信号”那......“零相过滤,用‘’filtfilt”“”)轴([0.25 0.55 -1 1.5])
designfilt
|过滤器
|filtfilt
|grpdelay