主要内容

滤波器引入的延迟和失真补偿

对信号进行滤波会产生延迟。这意味着输出信号相对于输入信号在时间上发生了位移。

当移位不变时,可以通过及时移位信号来纠正延迟。

有时,滤波器对某些频率成分的延迟比其他的要多。这种现象称为相位畸变。为了补偿这种影响,您可以使用filtfilt函数。

以500hz采样1秒的心电图读数。添加随机噪声。重置随机数生成器以获得可重复的结果

Fs = 500;N = 500;rng默认的xn = ecg(N)+0.1*randn([1 N]);tn = (0: n - 1) / Fs;

使用过滤器去除一些噪声,停止超过75赫兹的频率。使用designfilt设计一个70阶FIR滤波器。

Nfir = 70;置= 75;firf = designfilt (“lowpassfir”“FilterOrder”Nfir,...“CutoffFrequency”置,“SampleRate”Fs);

过滤信号并绘制它。结果比原来的更平滑,但落后了。

xf =过滤器(firf xn);情节(tn, xn、tn、xf)标题“心电图”包含“时间(s)”传奇(“原始”“冷杉过滤”网格)

图中包含一个轴对象。以心电图为标题的轴对象包含2个线型对象。这些对象代表原始,FIR滤波。

使用grpdelay检查由滤波器引起的延迟等于滤波器阶数的一半。

grpdelay (firf N Fs)

图形过滤可视化工具-组延迟包含一个轴对象和其他类型的uitoolbar, uimenu对象。具有标题组延迟的axis对象包含一个类型为line的对象。

延迟=意味着(grpdelay (firf))
延迟= 35

排列数据。将滤波后的信号移去第一个信号延迟样本。删除最后一个延迟样本的原始和时间向量。

tt = tn (1: end-delay);sn = xn (1: end-delay);科幻小说= xf;科幻小说(1:延迟)= [];

画出信号并确认它们对齐。

情节(tt、锡、tt、科幻)标题“心电图”包含(“时间(s)”)传说(原始信号的“过滤信号转移”网格)

图中包含一个轴对象。以心电图为标题的轴对象包含2个线型对象。这些对象代表原始信号,滤波后的移位信号。

使用7阶IIR滤波器重复计算。

Niir = 7;iir = designfilt (“lowpassiir”“FilterOrder”Niir,...“HalfPowerFrequency”置,“SampleRate”Fs);

过滤信号。滤波后的信号比原始信号更清晰,但与原始信号相比,其时间滞后。它也会由于滤波器的非线性相位而失真。

xfilter =过滤器(iir、xn);情节(tn、xn tn, xfilter)标题“心电图”包含“时间(s)”传奇(“原始”“过滤”)轴([0.25 0.55 -1 1.5])网格

图中包含一个轴对象。以心电图为标题的轴对象包含2个线型对象。这些对象代表原始的,过滤过的。

对滤波器引入的组延迟的观察表明,延迟是频率相关的。

grpdelay (iir, N, Fs)

图形过滤可视化工具-组延迟包含一个轴对象和其他类型的uitoolbar, uimenu对象。具有标题组延迟的axis对象包含一个类型为line的对象。

使用以下方法对信号进行滤波filtfilt.有效地消除了延迟和失真。使用filtfilt当保持信号的相位信息完整是至关重要的。

xfiltfilt = filtfilt (iir、xn);情节(tn, xn)情节(tn, xfilter)情节(tn, xfiltfilt)标题“心电图”包含“时间(s)”传奇(“原始”“过滤”“filtfilt”)轴([0.25 0.55 -1 1.5])网格

图中包含一个轴对象。以心电图为标题的轴对象包含3个线型对象。这些对象代表Original, 'filter', 'filtfilt'。