1.算法描述
QMF
在滤波器的某些附加条件下,与分析滤波器组和合成滤波器组相关联的变换是正交的。正态性意味着样品的能量在转换过程中保持不变。如果满足这些条件,滤波器具有以下显著特性:合成滤波器是分析滤波器的时间反转版本,高通滤波器是低通滤波器的调制版本,即,其中K是整数延迟。这种滤波器通常被称为正交镜滤波器(QMF)、共轭正交滤波器(CQF)或功率互补滤波器,因为两个低通(分别为高通)滤波器具有相同的频率响应,并且低通和高通滤波器的频率响应通过功率互补特性,适用于所有频率。滤波器h0(n)被视为原型滤波器,因为它自动确定其他三个滤波器。
在滤波器的某些附加条件下,与分析滤波器组和合成滤波器组相关联的变换是正交的。正态性意味着样品的能量在转换过程中保持不变。如果满足这些条件,滤波器具有以下显著特性:合成滤波器是分析滤波器的时间反转版本,高通滤波器是低通滤波器的调制版本,即,其中K是整数延迟。这种滤波器通常被称为正交镜滤波器(QMF)、共轭正交滤波器(CQF)或功率互补滤波器,因为两个低通(分别为高通)滤波器具有相同的频率响应,并且低通和高通滤波器的频率响应通过功率互补特性,适用于所有频率。滤波器h0(n)被视为原型滤波器,因为它自动确定其他三个滤波器。
QMF 正交镜像滤波器和共轭QMF
最小相位:所有的零点都在单位圆内或者单位圆上最大相位:所有零点都在单位圆外
CQMFB
滤波器组包括分析滤波器组和综合滤波器组。分析滤波器组将信号分成M个子带,对每个子带做M倍的抽取。综合滤波器组做M倍插值,得到和原信号相同的抽样率,实现信号的重建。
当M=2时,分析滤波器组由一个低通滤波器和一个高通滤波器组成,把信号分成一个低通信号和一个高通信号。对于一个给定的信号,经过分析滤波器后,再进行抽取、编码、传输,可以通过零值内插、综合滤波器滤波、求和运算得到恢复和重建。重建后的信号与原始信号存在误差,误差来源包括:
混叠失真
抽取和内插产生的混叠和镜像带来的误差,导致分析滤波器组和综合滤波器组的频带不能完全分开。
幅度失真
由于分析和综合滤波器组的频带在通带内不是全通函数,其幅频特性波纹产生的误差。
相位失真
由滤波器相频特性的非线性所产生的误差。
量化失真
由编、解码产生的误差,与量化噪声相似,这类误差无法完全消除,只能设法减小。
3.完全重建QMFB的设计
选定W,对应不同的输入信号 ,改变的大小求出均方误差,通过比较得到最优的值;
固定N,对应不同的输入信号 ,改变的大小求出均方误差,通过比较得到最优的值。至此,找到了使得完全重建QMFB效果最好的参数和。
2.仿真效果预览
matlab2022a仿真结果如下:
3.MATLAB核心程序
% 由单带滤波器得到半带滤波器 for j=1:N+1 tmp(2*j-1)=0.5*hsb(j); tmp(2*j)=0; end hlf=tmp(1:(2*N+1)); hlf(N+1)=hlf(N+1)+0.5; wf=0:pi/N0:pi*(N0-1)/N0; wff=0:0.5/N0:(N0-1)/N0/2; a=1; Gw= freqz(hlf,a,wf); Ew=exp(i*2*N*wf/2); Gr=Ew.*Gw; % Gr 现在是零相位半带滤波器的频率特性,,其虚部应为零,实际上是滤波器的“增益” mmax=max(real(Gr)) mmin=min(real(Gr)) subplot(222) plot(wff,real(Gr));grid; %title('half band filter HLF(z)') % 获得“增益”恒正的半带滤波器, P+ hlf(N+1)=hlf(N+1)+abs(mmin); p=hlf*0.5/(0.5+abs(mmin)); subplot(223) stem(p,'.');grid; %title('halfband filter p(n)'); Gw= freqz(p,a,wf); Gr=Ew.*Gw; subplot(224) plot(wff,real(Gr));grid; %title('halfband filter P(z)'); %save p.mat p; %--------------------------------------------------------------------- % 谱分解部分,求出 h0(n); l=2*N+1; A=zeros(l,1); A(1)=1; A=A'; [Z,P,K]=tf2zp(p,A); Z1=sort(Z) ll=length(Z1)/2; ZZ=Z1(1:ll); temp=1; for m=1:ll temp=(-ZZ(m))*temp; end if imag(temp)<0.0001 temp=real(temp); end KK=sqrt(K/temp); l2=length(ZZ); PP=zeros(l2,1); [h0,P1]=zp2tf(ZZ,PP,KK); subplot(122) zplane(h0,P1); title('the zeros and poles after resolve') %----------------------------------------------------------------------------- % 利用CQMFB四个滤波器之间的关系,得到 h1, g0, g1; h1=qmf(h0,1); g0=-wrev(h0); g1=qmf(g0); % 求出并画出分析滤波器组的对数幅频特性; [H0,w]= freqz(h0,a,N0,Fs); [H1,w]= freqz(h1,a,N0,Fs); absH0=abs(H0); absH1=abs(H1); ah0=20*log10(absH0); ah1=20*log10(absH1);
标签:滤波器,Gr,误差,高通,matlab,N0,hlf,单带,CQMFB From: https://www.cnblogs.com/51matlab/p/17281601.html