采用matlab的iirgrpdelay函数设计全通滤波器校正系统群延时 | 您所在的位置:网站首页 › MATLAB延时函数delay › 采用matlab的iirgrpdelay函数设计全通滤波器校正系统群延时 |
函数目标:根据描述的群延时设计全通滤波器对指定区间的群延迟进行校正。 iirgrpdelay函数共有以下7种用法: 1、[num,den] = iirgrpdelay(n,f,edges,a) 2、[num,den] = iirgrpdelay(n,f,edges,a,w) 3、[num,den] = iirgrpdelay(n,f,edges,a,w,radius) 4、[num,den] = iirgrpdelay(n,f,edges,a,w,radius,p) 5、[num,den] = iirgrpdelay(n,f,edges,a,w,radius,p,dens) 6、[num,den] = iirgrpdelay(n,f,edges,a,w,radius,p,dens,initden) 7、[num,den] = iirgrpdelay(n,f,edges,a,w,radius,p,dens,initden,tau) 拿第2个[num,den] = iirgrpdelay(n,f,edges,a) 来说: 输出:num是IIR滤波器分子,den是IIR滤波器分母 输入: n是滤波器阶数,f是角频率范围矢量如0.3:0.001:0.6 edges是通带范围如[0.3,0.6],a是描述的群延迟差如max(g)-g 下面是例子: clc;clear all;close all; [n,d] = ellip(4,1,35,0.6); %椭圆滤波器(n,d为椭圆滤波器系数) 阶数:4 通带衰减(波纹)1dB 阻带衰减35dB 低通边界频率0.3 [GdH,w] = grpdelay(n,d); %求出群时延(GdH为群时延,w为角频率) F = 0.3:0.001:0.6; %取0.3~0.6的角频率点 g = grpdelay(n,d,F,2); % Equalize the passband(g给0~0.3的群时延) Gd = max(g)-g; %Gd为需要补偿的群时延量 % 采用iirgrpdelay函数全通滤波器 [num,den] = iirgrpdelay(20, F,[0.3 0.6], Gd); %返回20阶全通滤波器,num和den是系数。 [GdA,w] = grpdelay(num,den); %计算全通滤波器的群时延 % 画图 He1=dfilt.df2(num,den); %根据系数得到滤波器系统函数 He=dfilt.df2(n,d); %根据系数得到滤波器系统函数 He_all=dfilt.cascade(He,He1); %将两个滤波器级联得到新的滤波器 grpdelay(He) %显示未校正系统的群延迟 grpdelay(He1) %显示设计的IIR滤波器群延迟 grpdelay(He_all) %经过校正后的群延迟结果: |
CopyRight 2018-2019 实验室设备网 版权所有 |