首页 > 其他分享 >补偿 IIR 滤波器引入的延迟

补偿 IIR 滤波器引入的延迟

时间:2023-11-14 13:01:38浏览次数:35  
标签:滤波器 IIR 滤波 tn 信号 filtfilt 延迟


补偿 IIR 滤波器引入的延迟

对信号进行滤波会引入延迟。这意味着相对于输入,输出信号在时间上有所偏移。

无限冲激响应滤波器对某些频率分量的延迟可能比其他频率分量更长。它们会使输入信号呈现明显失真。函数 filtfilt 可补偿此类滤波器引入的延迟,从而校正滤波器失真。这种“零相位滤波”是对信号进行前向和后向滤波的结果。

以 500 Hz 的频率对心电图读数采样,采样时间为 1 秒。添加随机噪声。

Fs = 500;
N = 500;

rng default
xn = ecg(N) + 0.2*randn([1 N]);
tn = (0:N-1)/Fs;

使用滤波器阻挡 75 Hz 以上的频率,以消除一部分噪声。指定一个 7 阶 IIR 滤波器,通带波纹为 1 dB,阻带衰减为 60 dB。

Nf = 7;
Fp = 75;
Ap = 1;
As = 60;

d = designfilt('lowpassiir','FilterOrder',Nf,'PassbandFrequency',Fp, ...
    'PassbandRipple',Ap,'StopbandAttenuation',As,'SampleRate',Fs);

对信号进行滤波。滤波后的信号比原始信号干净,但相对于原始信号存在滞后。由于滤波器的非线性相位,它也存在失真。放大峰值附近的区域。

xfilter = filter(d,xn);

plot(tn,xn,tn,xfilter)

title 'Electrocardiogram'
xlabel 'Time (s)', legend('Original Signal','Filtered Signal')
axis([0.25 0.55 -1 1.5])

补偿 IIR 滤波器引入的延迟_算法

通过观察滤波器引入的群延迟,可以看出延迟与频率有关。

grpdelay(d,N,Fs)

补偿 IIR 滤波器引入的延迟_matlab_02

使用 filtfilt 对信号进行滤波。延迟和失真已被有效消除。当使信号的相位信息保持原样至关重要时,请使用 filtfilt

xfiltfilt = filtfilt(d,xn);

plot(tn,xn,tn,xfilter)
hold on
plot(tn,xfiltfilt,'r','linewidth',2)
hold off

title 'Electrocardiogram'
xlabel 'Time (s)'
legend('Original Signal','Filtered Signal', ...
       'Zero-phase filtered with ''filtfilt''')
axis([0.25 0.55 -1 1.5])

补偿 IIR 滤波器引入的延迟_Time_03

另请参阅

designfilt | filter | filtfilt | grpdelay

相关主题

标签:滤波器,IIR,滤波,tn,信号,filtfilt,延迟
From: https://blog.51cto.com/oliverHuang/8366178

相关文章

  • 数字滤波器设计---IIR 滤波器设计
    数字滤波器设计---IIR滤波器设计IIR与FIR滤波器的比较与FIR滤波器相比,IIR滤波器的主要优点是,要满足同一组设定,它的滤波器阶数通常远远低于FIR滤波器。虽然IIR滤波器具有非线性相位,但MATLAB® 软件中的数据处理通常是“离线”执行的,即整个数据序列在滤波之前是可用的。......
  • Spring Boot中使用RabbitMQ完成延迟功能
    MQ-消息队列简单来说就是将“消息”放到“队列”中,然后慢慢处理队列中的消息。完成延迟功能总体的思路是将消息放到队列中,为消息设置过期时间,不直接处理这个队列中的消息,等到消息过期,将它转到另一个队列进行处理,从而完成延迟功能。基本概念1.队列队列是RabbitMQ的内部对象,用......
  • webrtc 低通滤波器
     #include"low_pass_filter.h"  doubleprev_output=0.0;doubleprev_input=0.0;  //去噪 WebRtcNsx_Process(webrtc_nsx,&g_aecmAudio,1,&g_ns); if(WebRtcAgc_Process(webrtc_agc,&g_ns,1,160,&pBuff,in_mic_......
  • vue视频直接播放rtsp流;vue视频延迟问题解决;webRTC占cpu太大卡死问题解决;解决webRTC播
    vue视频直接播放rtsp流;vue视频延迟问题解决;webRTC占cpu太大卡死问题解决;解决webRTC播放卡花屏问题::https://blog.csdn.net/killerdoubie/article/details/133884070......
  • MQ【消息延迟解决方案】
    一、消息延迟如何监控    1、消息队列提供的工具,通过监控消息的堆积来完成。    2、通过生产监控消息对消息延时的监控。二、详情   /2.1、消息队列工具      以kafka为例。不用版本消费者的消费进度不一样。      在Kafka0.9之......
  • dspLearning_频率响应的意义以及简单滤波器的设计
    频率响应的意义\[x(n)=sin(0.01\pin)\\H(z)=\frac{0.05+0.05z^{-1}}{1-0.9z^{-1}}\]n=0.:199;%取两百个点x=sin(0.01*pi*n);%2pi/T=omega=0.01pi,故T=200(所以一个周期采样了200个点)b=[0.05,0.05];a=[1,-0.9];%b是系统响应z变换的分子系数a是分母系数......
  • 数字滤波器的结构
    1.IIR滤波器直接型结构a.直接I型结构b.直接II型结构c.转置直接II型结构d.直接型结构的特点:    优点:简单直观    缺点:①改变某一个{ak}将影响所有极点。②改变一个{bk}将影响所有零点。③对有限字长效应很敏感,容易出现不稳定现象。    所以综上所述,三阶以......
  • 影驰HOF PRO DDR5-8000 24GB内存评测:延迟不到55ns 游戏最低帧暴涨37%
    一、前言:低延迟低电压的单条24GB内存对于高端玩家来说,现在32GB(16GBx2)内存的确有点拿不出手,而64GB内存(32GBx2)虽然容量够了,但是单条32GB不仅价格昂贵,内存的时序和频率都要做妥协,整体性能与16GB版本相差甚远。相比之下,单条24GB内存能在容量和性能之间获得一个完美的平衡,因此现在越......
  • 滤波器
     bandstopfilter带阻滤波器。带阻滤波器(bandstopfilters,简称BSF)是指能通过大多数频率分量、但将某些范围的频率分量衰减到极低水平的滤波器,与带通滤波器的概念相对。其中点阻滤波器(notchfilter)是一种特殊的带阻滤波器,它的阻带范围极小,有着很高的Q值(QFactor)。bandpassfil......
  • 延迟导入Python模块的几种方法
    延迟导入Python模块的几种方法-知乎(zhihu.com)#__init__.pyimportimportlib__all__=['complicated']def__getattr__(name):ifnamein__all__:returnimportlib.import_module("."+name,__name__)else:raiseAttributeError(f&qu......