主要内容

补偿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])

图中包含一个轴对象。标题为Electrocardiogram的axis对象包含2个类型为line的对象。这些对象分别代表原始信号、滤波信号。

看一看群时延引入的滤波器表明,时延是频率相关的。

grpdelay (d, N, Fs)

图组延迟包含一个轴对象。标题为Group delay的axes对象包含一个line类型的对象。

使用filtfilt.有效地消除了时延和失真。使用filtfilt当保持信号相位信息的完整性至关重要时。

Xfiltfilt = filtfilt(d,xn);情节(tn、xn tn, xfilter)情节(tn、xfiltfilt“r”“线宽”, 2)标题“心电图”包含“时间(s)”传奇(原始信号的“过滤信号”...用filtfilt零相位过滤)轴([0.25 0.55 -1 1.5])

图中包含一个轴对象。标题为Electrocardiogram的axis对象包含3个类型为line的对象。这些对象表示原始信号,滤波信号,零相位滤波'filtfilt'。

另请参阅

|||

相关的话题