zl程序教程

您现在的位置是:首页 >  后端

当前栏目

基于matlab的CQMFB单带滤波器设计仿真

MATLAB 基于 设计 仿真 滤波器
2023-09-14 09:06:06 时间

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

QMF

        在滤波器的某些附加条件下,与分析滤波器组和合成滤波器组相关联的变换是正交的。正态性意味着样品的能量在转换过程中保持不变。如果满足这些条件,滤波器具有以下显著特性:合成滤波器是分析滤波器的时间反转版本,高通滤波器是低通滤波器的调制版本,即,其中K是整数延迟。这种滤波器通常被称为正交镜滤波器(QMF)、共轭正交滤波器(CQF)或功率互补滤波器,因为两个低通(分别为高通)滤波器具有相同的频率响应,并且低通和高通滤波器的频率响应通过功率互补特性,适用于所有频率。滤波器h0(n)被视为原型滤波器,因为它自动确定其他三个滤波器。

  在滤波器的某些附加条件下,与分析滤波器组和合成滤波器组相关联的变换是正交的。正态性意味着样品的能量在转换过程中保持不变。如果满足这些条件,滤波器具有以下显著特性:合成滤波器是分析滤波器的时间反转版本,高通滤波器是低通滤波器的调制版本,即,其中K是整数延迟。这种滤波器通常被称为正交镜滤波器(QMF)、共轭正交滤波器(CQF)或功率互补滤波器,因为两个低通(分别为高通)滤波器具有相同的频率响应,并且低通和高通滤波器的频率响应通过功率互补特性,适用于所有频率。滤波器h0(n)被视为原型滤波器,因为它自动确定其他三个滤波器。

QMF 正交镜像滤波器和共轭QMF


最小相位:所有的零点都在单位圆内或者单位圆上最大相位:所有零点都在单位圆外 

CQMFB

       滤波器组包括分析滤波器组综合滤波器组。分析滤波器组将信号分成M个子带,对每个子带做M倍的抽取。综合滤波器组做M倍插值,得到和原信号相同的抽样率,实现信号的重建。

      当M=2时,分析滤波器组由一个低通滤波器一个高通滤波器组成,把信号分成一个低通信号和一个高通信号。对于一个给定的信号,经过分析滤波器后,再进行抽取、编码、传输,可以通过零值内插、综合滤波器滤波、求和运算得到恢复和重建。重建后的信号与原始信号存在误差,误差来源包括:

  • 混叠失真
    抽取和内插产生的混叠和镜像带来的误差,导致分析滤波器组和综合滤波器组的频带不能完全分开。
  • 幅度失真
    由于分析和综合滤波器组的频带在通带内不是全通函数,其幅频特性波纹产生的误差。
  • 相位失真
    由滤波器相频特性的非线性所产生的误差。
  • 量化失真
    由编、解码产生的误差,与量化噪声相似,这类误差无法完全消除,只能设法减小。

3.完全重建QMFB的设计

  1. 选定W,对应不同的输入信号 ,改变的大小求出均方误差,通过比较得到最优的值;
  2. 固定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);
aA229

4.完整MATLAB

V