(一)
%加载一个尺度滤波器
load db8;
w=db8;
figure
subplot(4,2,1);
stem(w);
title('原尺度滤波器');
%计算4个滤波器
[Lo_D,Hi_D,Lo_R,Hi_R]=orthfilt(w);
subplot(4,2,3);
stem(Lo_D);
title('分解低通滤波器');
xlabel('尺度');
ylabel('分解低通效果');
subplot(4,2,4);
stem(Hi_D);
title('分解高通滤波器');
xlabel('尺度');
ylabel('分解高通效果');
subplot(4,2,5);
stem(Lo_R);
title('重构低通滤波器');
xlabel('尺度');
ylabel('重构低通效果');
subplot(4,2,6);
stem(Hi_R);
title('重构高通滤波器');
xlabel('尺度');
ylabel('重构高通效果');
%检查双正交性
df=[Lo_D;Hi_D];
rf=[Lo_R;Hi_R];
id=df*df'
%高频和低频
fftld=fft(Lo_D);
ffthd=fft(Hi_D);
freq=[1:length(Lo_D)]/length(Lo_D);
subplot(4,2,7);
plot(freq,abs(fftld));
title('低通:转换模量');
xlabel('尺度');
ylabel('低通模量');
subplot(4,2,8);
plot(freq,abs(ffthd));
title('高通:转换模量');
xlabel('尺度');
ylabel('高通模量');
(二)
%计算与bior3.5相关联的分解滤波器DF和重构滤波器RF
[Rf,Df]=biorwavf('bior3.5');
%计算所需要的4个滤波器
[Lo_D,Hi_D,Lo_R,Hi_R]=biorfilt(Df,Rf);
x=randn(1,500); %添加随机噪声
[a,d]=dwt(x,Lo_D,Hi_D); %利用一维小波函数进行重构
xrec=idwt(a,d,Lo_R,Hi_R); %利用一维小波函数进行逆重构
erro=x-xrec;
%高频和低频
fftld=fft(Lo_D);
ffthd=fft(Hi_D);
freq=[1:length(Lo_D)]/length(Lo_D);
figure
subplot(2,2,1);
plot(freq,abs(fftld),freq,abs(ffthd));
title('分解:滤波器变换模型');
xlabel('系数');
ylabel('分解效果');
fftlr=fft(Lo_R);
ffthr=fft(Hi_R);
freq=[1:length(Lo_R)]/length(Lo_R);
subplot(2,2,2);
plot(freq,abs(fftlr),freq,abs(ffthr));
title('重构:滤波器变换模型');
xlabel('系数');
ylabel('分解效果');
subplot(2,1,2);
plot(freq,abs(fftlr.*fftld+ffthd.*ffthr));
title('双正交情况');
xlabel('|fft(Lo_R)fft(Lo_D)+fft(Hi_R)fft(Hi_D)|=2');
ylabel('变换');
(三)
%计算与bior3.5相关联的分解滤波器DF和重构滤波器RF
[Rf,Df]=biorwavf('bior3.5');
%计算所需要的4个滤波器
[Lo_D,Hi_D,Lo_R,Hi_R]=biorfilt(Df,Rf);
figure
subplot(2,2,1);
stem(Lo_D);
title('分解低通滤波器');
xlabel('滤波器系数');
ylabel('分解效果');
subplot(2,2,2);
stem(Hi_D);
title('分解高通滤波器');
xlabel('滤波器系数');
ylabel('分解效果');
subplot(2,2,3);
stem(Lo_R);
title('重构低通滤波器');
xlabel('滤波器系数');
ylabel('重构效果');
subplot(2,2,4);
stem(Hi_R);
title('重构高通滤波器');
xlabel('滤波器系数');
ylabel('重构效果');