完全重建QMFB的MATLAB实现

完全重建QMFB的MATLAB实现

滤波器组的概念

在许多应用中,一个离散时间信号首先被一个分析滤波器组分为多个自带信号,各子带信号经过处理后,经过一个综合滤波器组,形成输出信号。各子带信号由于占用的带宽更小,因此可以对其进行抽样再进行处理(这样相比直接处理更加高效)。我们将具有一个共同输入信号或一个共同输出信号的一组滤波器称为滤波器组(Filter Banks)1

两通道正交镜像滤波器组(QMFB)

在分析滤波器组一侧,输入信号(设为宽带信号)被分成 k k k个子频带信号(窄带信号),通过抽取可降低采样率;在综合滤波器一侧,通过零值内插和带通滤波可以重建原来的信号。2


图1 两通道QMFB系统框图

两通道QMFB的幅频特性如图所示。


图2 两通道QMFB的幅频特性

由于 H 0 ( e j ω ) H_0({\rm e}^{{\rm j}ω}) H0(ejω) H 1 ( e j ω ) H_1({\rm e}^{{\rm j}ω}) H1(ejω)关于 π 2 \dfrac π 2 2π镜像对称,因此这种滤波器组称为正交镜像滤波器组。

若综合滤波器的输出信号 x ^ ( n T 1 ) \hat x (nT_1) x^(nT1)与分析滤波器组原来的输入信号 x ( n T 1 ) x(nT_1) x(nT1)满足
x ^ ( n T 1 ) = c x [ ( n − n 0 ) T 1 ] \hat{x}\left(n T_{1}\right)=c x\left[\left(n-n_{0}\right) T_{1}\right] x^(nT1)=cx[(nn0)T1]
其中 c c c n 0 n_0 n0为固定的常数,则称 x ^ ( n T 1 ) \hat x (nT_1) x^(nT1)是对 x ( n T 1 ) x(nT_1) x(nT1)完全重建(Perfect Reconstruction)。但重建信号与原始信号之间存在着以下误差:

  • 混叠失真
  • 幅度失真
  • 相位失真
  • 量化失真

G 0 ( z ) = H 0 ( z ) G_0(z)=H_0(z) G0(z)=H0(z) G 1 ( z ) = − H 1 ( z ) = − H 0 ( − z ) G_1(z)=-H_1(z)=-H_0(-z) G1(z)=H1(z)=H0(z),则 ∣ H 1 ( e j w ) ∣ = ∣ H 0 ( e j ( π + w ) ) ∣ \left|H_{1}\left(e^{j w}\right)\right|=\left|H_{0}\left(e^{j(\pi+w)}\right)\right| H1(ejw)=H0(ej(π+w))。若 H 0 ( z ) H_0(z) H0(z)为低通滤波器,则 H 1 ( z ) , G 0 ( z ) , G 1 ( z ) H_1(z),G_0(z),G_1(z) H1(z),G0(z),G1(z)分别为高通、低通、高通滤波器。

完全重建QMFB的设计与实现

经实验证明,选取阶数 N = 41 N=41 N=41 H 0 H_0 H0的带通截止频率 ω = 0.43 ω=0.43 ω=0.43时可以达到最小的MSE。

代码如下:

N=41;
w=0.43;
[h0,h1,g0,g1]=firpr2chfb(N,w);
[H1z,w]=freqz(h0,1,512);
H1_abs=abs(H1z);H1_db=20*log10(H1_abs);
[H2z,w]=freqz(h1,1,512);
H2_abs=abs(H2z);H2_db=20*log10(H2_abs);
%%%%%%%%%%滤波器h0和h1的幅度响应%%%%%%%%%%
figure(1); 
plot(w/pi,H1_db,'-',w/pi,H2_db,'--'); 
axis([0,1,-100,10]); 
grid 
xlabel('\omega/\pi');ylabel('幅度,dB'); 
sum1=H1_abs.*H1_abs+H2_abs.*H2_abs; 
d=10*log10(sum1);
%%%%%%%%%%%%幅度响应关系误差%%%%%%%%%%%%%
figure(2) 
plot(w/pi,d);grid; 
xlabel('\omega/\pi');ylabel('误差,dB'); 
axis([0,1,-0.04,0.04]); 
%%%%%%%%%%%%%x1(n)%%%%%%%%%%%%%%%%%%%%%
x=zeros(1,500);
x(2)=1;x(3)=1;
x(6)=2;x(7)=2;x(8)=2;
x(17)=1.5;x(18)=1.5;x(19)=1.5;
x(24)=1;x(25)=1;
x(33)=3;x(34)=3;x(35)=3;
%%%%%%%%%%%%%%x2(n)%%%%%%%%%%%%%%%%%%%%
x=zeros(1,500);
x(1)=1;x(2)=1;x(3)=1;
x(9)=2;x(10)=2;x(11)=2;
x(16)=3;x(17)=3;x(18)=3;
x(24)=4;x(25)=4;x(26)=4;
x(33)=3;x(34)=3;x(35)=3;
x(41)=2;x(42)=2;x(43)=2;
x(49)=1;x(50)=1;x(51)=1;
%%%%%%%%%%%%%%x3(n)%%%%%%%%%%%%%%%%%%%%
n=1:500;
T=0.2;
x=sin(n*T);
hlp=mfilt.firdecim(2,h0);
hhp=mfilt.firdecim(2,h1);
glp=mfilt.firinterp(2,g0);
ghp=mfilt.firinterp(2,g1);
x0=filter(hlp,x);
x0=filter(glp,x0);
x1=filter(hhp,x);
x1=filter(ghp,x1);
xidle=x0+x1;
xshift=[zeros(1,N) x(1:end-N)];
e=xidle-xshift;
mes=sum(abs(e).^2)/length(e)
fvtool(h0)
%%%%%%%%%%%%输入信号%%%%%%%%%%%%%%%%%%
figure(4);
plot(x);
%%%%%%%%%%理想输出信号与重建输出信号%%%%%%%
figure(5);
axis([0,500,-1,1]); 
plot(xshift,'r');hold on;
plot(xidle,'-');
axis([0,600,-1.1,1.1]);
%%%%%%%理想输出信号与重建输出信号的偏差%%%%%%
figure(6);
plot(xshift-xidle);

H 0 ( z ) H_0(z) H0(z) H 1 ( z ) H_1(z) H1(z)的幅度响应


图3 两通道QMFB幅频响应的仿真结果

可以看到,两个滤波器关于 π 2 \dfrac π 2 2π镜像对称。

幅度响应关系误差

理论上,
∣ H 1 ( e j w ) ∣ 2 + ∣ H 0 ( e j ( π + w ) ) ∣ 2 ≈ 1 10 log ⁡ ∣ H 1 ( e j w ) ∣ 2 + ∣ H 0 ( e j ( π + w ) ) ∣ 2 ≈ 0 \left|H_{1}\left(e^{j w}\right)\right|^{2}+\left|H_{0}\left(e^{j(\pi+w)}\right)\right|^{2} \approx 1\\ 10 \log \left|H_{1}\left(e^{j w}\right)\right|^{2}+\left|H_{0}\left(e^{j(\pi+w)}\right)\right|^{2} \approx 0 H1(ejw)2+H0(ej(π+w))2110logH1(ejw)2+H0(ej(π+w))20


图4 幅度响应关系误差

从仿真结果中看出,误差非常小,接近于0。

输入信号与重建信号的对比


图5 输入信号(左)与重建信号(右)

从图形上观察,波形无幅度上的失真,仅有时间上的移位。

理想输出信号与重建输出信号的偏差


图6 输入信号与重建信号的偏差

二者偏差较小,仅有 1 0 − 5 10^{-5} 105数量级的偏差,且从程序运行结果知,均方误差MSE仅有 4.89 × 1 0 − 11 4.89\times 10^{-11} 4.89×1011

H 0 H_0 H0的幅度响应

使用fvtool绘制的 H 0 H_0 H0的幅度响应曲线如图7所示。


图7 的幅度响应

参考文献


  1. 李建国. 正交镜像滤波器组的原理及实现[D].广东工业大学,2004. ↩︎

  2. 完全重建QMF滤波器组的设计 ↩︎

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值