补偿FIR滤波器带来的延迟
对信号进行滤波会产生延迟。这意味着输出信号相对于输入在时间上移位。这个例子向您展示了如何抵消这种影响。
有限脉冲响应滤波器通常将所有频率分量延迟相同的量。这使得通过及时转移信号来纠正延迟变得很容易。
取500hz采样心电图读数1秒。添加随机噪声。重置随机数发生器的再现性。
Fs = 500;N = 500;rng默认的xn = ecg(N)+0.25*randn([1 N]);tn = (0:N-1)/Fs;
用一个过滤器去除一些噪音,阻止频率超过75赫兹。使用designfilt
设计一个70阶滤波器。
Nfilt = 70;Fst = 75;D = designfilt(“lowpassfir”,“FilterOrder”nfilt,...“CutoffFrequency”置,“SampleRate”Fs);
对信号进行滤波并绘制图像。结果比原来的平滑,但落后于它。
Xf = filter(d,xn);情节(tn, xn)在情节(tn xf,“- r”,“线宽”, 1.5)从标题“心电图”包含“时间(s)”传奇(原始信号的,“过滤信号”)
使用grpdelay
检查由滤波器引起的延迟是否等于滤波器顺序的一半。
grpdelay (d, N, Fs)
延迟= mean(grpdelay(d))
延迟= 35
移动过滤信号以对齐数据。移除它的第一个延迟
样本。删除最后一个延迟
原向量和时间向量的样本。
Tt = tn(1:end-delay);Sn = xn(1:end-delay);Sf = xf;Sf(1:延迟)= [];
绘制信号并验证它们是否对齐。
情节(tt, sn)在情节(tt,科幻,“- r”,“线宽”, 1.5)从标题“心电图”包含(“时间(s)”),传说(原始信号的,“滤波移位信号”)
另请参阅
designfilt
|过滤器
|filtfilt
|grpdelay