补偿IIR滤波器带来的延迟
对信号进行滤波会产生延迟。这意味着输出信号相对于输入在时间上移位。
无限脉冲响应滤波器延迟一些频率成分比其他。它们有效地扭曲了输入信号。这个函数filtfilt
补偿由这样的滤波器引入的延迟,从而校正滤波器失真。这种“零相位滤波”是由正向和反向滤波信号产生的。
取500hz采样心电图读数1秒。添加随机噪声。
Fs = 500;N = 500;rng默认的xn = ecg(N) + 0.2*randn([1 N]);tn = (0:N-1)/Fs;
用一个过滤器去除一些噪音,阻止频率超过75赫兹。指定具有1 dB通带纹波和60 dB阻带衰减的7阶IIR滤波器。
Nf = 7;Fp = 75;Ap = 1;As = 60;D = designfilt(“lowpassiir”,“FilterOrder”Nf,“PassbandFrequency”《外交政策》,...“PassbandRipple”据美联社,,“StopbandAttenuation”,,“SampleRate”Fs);
过滤信号。过滤后的信号比原始信号更清晰,但相对于原始信号有时间上的滞后。由于滤波器的非线性相位也会引起失真。放大到靠近顶峰的位置。
Xfilter = filter(d,xn);情节(tn、xn tn, xfilter)标题“心电图”包含“时间(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)从标题“心电图”包含“时间(s)”传奇(原始信号的,“过滤信号”,...用filtfilt零相位过滤)轴([0.25 0.55 -1 1.5])
另请参阅
designfilt
|过滤器
|filtfilt
|grpdelay