Matlab 小波分析工具箱使用教程系列(二)
(2015-08-30 18:38:01)
标签:
小波分析matlab工具箱gui |
分类: 小波分析 |
Matlab 小波分析工具箱使用教程系列(二)
小波函数调用说明。
1. |
%计算与bior3.5相关的分解滤波器和重构滤波器
[Rf,Df] =
biorwavf('bior3.5');
% 计算需要的4个滤波器
[Lo_D,Hi_D,Lo_R,Hi_R] =
biorfilt(Df,Rf);
subplot(221);
stem(Lo_D);
title('bior3.5分解低通滤波器');
subplot(222);
stem(Hi_D);
title('bior3.5分解高通滤波器');
subplot(223);
stem(Lo_R);
title('bior3.5重构低通滤波器');
subplot(224);
stem(Hi_R);
title('bior3.5重构高通滤波器');
|
2. |
%设置双正交样条小波
wname =
'bior2.2';
% 计算两个相关的尺度滤波器rf和df
[rf,rd] =
biorwavf(wname);
|
3. |
%实小波
wname =
'db2';
% 计算中心频率并且显示小波函数和近似的关联中心频率
iter =
4;
[cfreq,XVAL,RECFREQ] =
centfrq(wname,4,'plot');
|
4. |
%复小波
wname =
'cgau6';
% 计算中心频率并且显示小波函数和近似的关联中心频率
[cfreq,XVAL,RECFREQ] =
centfrq(wname,8,'plot');
|
5. |
%设置有效支撑和网格参数
lb = -5; ub = 5; n = 1000;
%
计算8阶高斯小波
[psi,x] = gauswavf(lb,ub,n,8);
%
画出8阶高斯小波
plot(x,psi);
title('8阶高斯小波'),
grid;
|
6. |
%设置阶次,带宽,中心频率等参数
m = 2; fb = 1; fc = 0.5;
%
设置有效支撑和网格参数
lb = -20; ub = 20; n = 1000;
%
计算复频率B样条小波fbsp2-0.5-1
[psi,x] = fbspwavf(lb,ub,n,m,fb,fc);
%
画出复频率B样条小波
subplot(211);
plot(x,real(psi));
title('复频率B样条小波fbsp2-0.5-1');
xlabel('实部'),
grid;
subplot(212);
plot(x,imag(psi));
xlabel('虚部'),
grid;
|
7. |
%设置Daubechies
小波名
wname = 'db4';
%
计算相关的尺度滤波器
f = dbwavf(wname);
|
8. |
%设置coiflet小波名
wname = 'coif2';
%
计算相关的尺度滤波器
f = coifwavf(wname);
|
9. |
%定义带宽和中心频率
fb = 1.5; fc = 1;
%
设置有效支撑和网格
lb = -8; ub = 8; n = 1000;
%
计算复Morlet小波cmor1.5-1
[psi,x] = cmorwavf(lb,ub,n,fb,fc);
%
画出复Morlet小波
subplot(211);
plot(x,real(psi));
title('复Morlet小波cmor1.5-1');
xlabel('实部'),
grid;
subplot(212);
plot(x,imag(psi));
xlabel('虚部'),
grid;
|
10. |
%设置有效支撑和网格参数
lb = -5; ub = 5; n = 1000;
%
计算4阶复Gaussian小波
[psi,x] = cgauwavf(lb,ub,n,4);
%
画出4阶复Gaussian小波
subplot(211);
plot(x,real(psi)),;
title('4阶复Gaussian小波');
xlabel('实部'),
grid;
subplot(212);
plot(x,imag(psi));
xlabel('虚部'),
grid;
|
11. |
%设置小波函数、时间间隔和采样点数
wname = 'db10';
A = -64;
B = 64; P = 224;
%
计算采样周期和采样函数及真实频率
delta = (B-A)/(P-1);
t =
linspace(A,B,P);
omega =
5; x = cos(omega*t);
freq
%
设置尺度并且使用scal2frq函数来计算准周期数列
scales = [0.25:0.25:3.75];
TAB_PF =
scal2frq(scales,wname,delta);
%
计算最近似的准周期和相应的尺度
[dummy,ind] = min(abs(TAB_PF-freq));
freq_APP
scale_APP
= scales(ind);
%
进行连续分解并绘图
str1 = ['224 samples of x = cos(5t) on [-64,64]
-
str2 = ['准周期数组和尺度:
'];
str3 = [num2str([TAB_PF',scales'],3)];
str4 = ['准频率=
' num2str(freq_APP,3)];
str5 = ['对应尺度=
' num2str(scale_APP,3)];
figure;
cwt(x,scales,wname,'plot');
ax = gca; colorbar;
axTITL =
get(ax,'title');
axXLAB =
get(ax,'xlabel');
set(axTITL,'String',str1)
set(axXLAB,'String',[str4,'
clc
;
disp(strvcat('
',str1,' ',str2,str3,' ',str4,str5));
|
12. |
%设置带宽和中心频率
fb = 1; fc = 1.5;
%
设置有效支撑和网格参数
lb = -20; ub = 20; n =
1000;
%
计算复Shannon小波shan1.5-1.
[psi,x] = shanwavf(lb,ub,n,fb,fc);
%
画出复Shannon小波
subplot(211);
plot(x,real(psi));
title('复Shannon小波shan1.5-1');
xlabel('实部'),
grid;
subplot(212);
plot(x,imag(psi));
xlabel('虚部'),
grid;
|
13. |
%设置小波名称和计算次数
iter = 10;
wav =
'sym4';
%
用迭代算法计算小波函数的近似值
for i = 1:iter
end
title('小波函数sym4的近似值(iter从1到10)');
hold off;
|
14. |
%设置小波名称
wname =
'db5';
% 计算该小波的4个滤波器
[Lo_D,Hi_D,Lo_R,Hi_R] =
wfilters(wname);
subplot(221);
stem(Lo_D);
title('分解低通滤波器');
subplot(222);
stem(Hi_D);
title('分解高通滤波器');
subplot(223);
stem(Lo_R);
title('重构低通滤波器');
subplot(224);
stem(Hi_R);
title('重构高通滤波器');
xlabel('db5的四个滤波器')
|
15. |
%设置小波函数和迭代次数
iter =
4;
wav = 'sym4';
% 采用迭代算法计算小波函数和尺度函数的近似值并画图
[s,w1,w2,w3,xyval] =
wavefun2(wav,iter,0);
|
16. |
%设置反双正交样条滤波器
wname =
'rbio2.2';
% 计算两个相关滤波器:rf是重构尺度滤波器,df是分解尺度滤波器
[rf,df] =
rbiowavf(wname);
|
17. |
%装载正交小波相关的尺度滤波器
load
db10;
subplot(321); stem(db10);
title('db10 低通滤波器');
% 计算二次镜像滤波器
qmfdb10 =
qmf(db10);
subplot(322);
stem(qmfdb10); title('QMF db10 滤波器');
% 检查频率条件(对于正交很有必要),对于每个频率点:
% abs(fft(filter))^2 +
abs(fft(qmf(filter))^2 = 1
m =
fft(db10);
mt =
fft(qmfdb10);
freq =
[1:length(db10)]/length(db10);
subplot(323);
plot(freq,abs(m));
title('db10转换模量');
subplot(324);
plot(freq,abs(mt));
title('QMF
db10的转换模量');
subplot(325);
plot(freq,abs(m).^2 +
abs(mt).^2);
title('检查db10
and QMF db10的QMF条件')
;
xlabel(' abs(fft(db10))^2 +
abs(fft(qmf(db10))^2 = 1');
|
18. |
%装载尺度滤波器
load db8; w =
db8;
subplot(421);
stem(w);
title('原始尺度滤波器');
% 计算4个滤波器
[Lo_D,Hi_D,Lo_R,Hi_R] =
orthfilt(w);
subplot(423);
stem(Lo_D);
title('分解低通滤波器');
subplot(424);
stem(Hi_D);
title('分解高通滤波器');
subplot(425);
stem(Lo_R);
title('重构低通滤波器');
subplot(426);
stem(Hi_R);
title('重构高通滤波器');
% 检验正交性
df =
[Lo_D;Hi_D];
rf =
[Lo_R;Hi_R];
id = df*df';
id = rf*rf';
% 检验二元转换后的正交性
df = [Lo_D 0 0;Hi_D 0
0];
dft = [0 0 Lo_D; 0 0
Hi_D];
zer = df*dft';
% 高频和低频解释
fftld = fft(Lo_D); ffthd =
fft(Hi_D);
freq =
[1:length(Lo_D)]/length(Lo_D);
subplot(427);
plot(freq,abs(fftld));
title('转换模量:低通');
subplot(428);
plot(freq,abs(ffthd));
title('转换模量:高通');
|
19. |
%设置有效支撑和网格参数
lb = -4; ub = 4; n =
1000;
% 计算并画出Morlet
小波
[psi,x] =
morlet(lb,ub,n);
plot(x,psi),
title('Morlet小波');
|
20. |
%设置有效支撑和网格参数
lb = -8; ub = 8; n =
1024;
% 计算并画出Meyer小波和尺度函数
[phi,psi,x] =
meyer(lb,ub,n);
subplot(211), plot(x,psi)
;
title('Meyer
小波')
;
subplot(212), plot(x,phi)
;
title('Meyer
尺度函数');
|
21. |
%设置有效支撑和网格参数
lb = -5; ub = 5; n =
1000;
% 计算并画出
Mexican
hat小波
[psi,x] =
mexihat(lb,ub,n);
plot(x,psi);
title('Mexican hat
小波');
|
22. |
%指定小波类型
wname =
'db4';
% 画出小波函数
[phi,psi,xval] =
wavefun(wname,7);
subplot(211);
plot(xval,psi); title('db4小波');
% 计算并画出小波积分的近似值
[integ,xval] =
intwave(wname,7);
subplot(212);
plot(xval,integ);
title(['小波在区间[-Inf
xval]上的积分']);
|
以上为Matlab小波分析工具箱使用教程系列(二)的内容。