Matlab 小波分析工具箱使用教程系列(二)

小波函数调用说明。

1.        biorfilt函数

%计算与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.        biorwavf函数

%设置双正交样条小波
wname = \’bior2.2\’; 
% 计算两个相关的尺度滤波器rf和df
[rf,rd] = biorwavf(wname);

3.        centfrq函数

%实小波 
wname = \’db2\’;
% 计算中心频率并且显示小波函数和近似的关联中心频率
iter = 4;
[cfreq,XVAL,RECFREQ] = centfrq(wname,4,\’plot\’);

4.        centfrq函数

%复小波
wname = \’cgau6\’;
% 计算中心频率并且显示小波函数和近似的关联中心频率
[cfreq,XVAL,RECFREQ] = centfrq(wname,8,\’plot\’);

5.        gauswavf函数

%设置有效支撑和网格参数
lb = -5; ub = 5; n = 1000;
% 计算8阶高斯小波
[psi,x] = gauswavf(lb,ub,n,8);
% 画出8阶高斯小波
plot(x,psi);
title(\’8阶高斯小波\’), grid;

6.        fbspwavf函数

%设置阶次,带宽,中心频率等参数
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.        dbwavf函数

%设置Daubechies 小波名
wname = \’db4\’; 
% 计算相关的尺度滤波器
f = dbwavf(wname);

8.        coifwavf函数

%设置coiflet小波名
wname = \’coif2\’; 
% 计算相关的尺度滤波器
f = coifwavf(wname);

9.        cmorwavf函数

%定义带宽和中心频率
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.    cgauwavf函数

%设置有效支撑和网格参数
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.   scal2frq函数

%设置小波函数、时间间隔和采样点数
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  = omega/(2*pi);
% 设置尺度并且使用scal2frq函数来计算准周期数列
scales = [0.25:0.25:3.75];
TAB_PF = scal2frq(scales,wname,delta);
% 计算最近似的准周期和相应的尺度
[dummy,ind] = min(abs(TAB_PF-freq));
freq_APP  = TAB_PF(ind);
scale_APP = scales(ind);
% 进行连续分解并绘图
str1 = [\’224 samples of x = cos(5t) on [-64,64] – 真实频率= 5/(2*pi) =~ \’ num2str(freq,3)];
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,\’  –  \’ str5]);
clc ; 
disp(strvcat(\’ \’,str1,\’ \’,str2,str3,\’ \’,str4,str5));

12.    shanwavf函数

%设置带宽和中心频率
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.    wavefun函数

%设置小波名称和计算次数
iter = 10;
wav = \’sym4\’;
% 用迭代算法计算小波函数的近似值
for i = 1:iter 
    [phi,psi,xval] = wavefun(wav,i); 
    plot(xval,psi); 
    hold on 
end
title(\’小波函数sym4的近似值(iter从1到10)\’); 
hold off;

14.    wfilters函数

%设置小波名称
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.    wavefun2函数

%设置小波函数和迭代次数
iter = 4;
wav = \’sym4\’;
% 采用迭代算法计算小波函数和尺度函数的近似值并画图
[s,w1,w2,w3,xyval] = wavefun2(wav,iter,0);

16.    rbiowavf函数

%设置反双正交样条滤波器
wname = \’rbio2.2\’;    
% 计算两个相关滤波器:rf是重构尺度滤波器,df是分解尺度滤波器
[rf,df] = rbiowavf(wname);

17.    qmf函数

%装载正交小波相关的尺度滤波器
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.    orthfilt函数

%装载尺度滤波器
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.    morlet函数

%设置有效支撑和网格参数
lb = -4; ub = 4; n = 1000; 
% 计算并画出Morlet 小波
[psi,x] = morlet(lb,ub,n); 
plot(x,psi), title(\’Morlet小波\’);

20.    meyer函数

%设置有效支撑和网格参数
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.    mexihat函数

%设置有效支撑和网格参数
lb = -5; ub = 5; n = 1000; 
% 计算并画出 Mexican hat小波
[psi,x] = mexihat(lb,ub,n); 
plot(x,psi);
title(\’Mexican hat 小波\’);

22.    intwave函数

%指定小波类型
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]上的积分\’]);

版权声明:本文为my871208586原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/my871208586/p/8653975.html