Matlab Wavelet 工具箱的使用

1.小波GUI的启动与功能

在matlab的命令符下输入wavemenu,即会出现小波工具箱窗口。

2.小波工具箱的通用函数

biorfilt 双正交小波滤波器组
centfrq 计算小波中心频率
dyaddown 二元采样
dyadup 二元插值
intwave 积分小波函数
orthfilt 正交小波滤波器组
qmf 镜像二次滤波器
scal2frq 尺度变换为频率
wavefun 小波尺度函数
wavefun2 二维小波尺度函数
wavemngr 小波管理函数
wfilers 小波滤波器组
wmaxlev 计算小波分解的最大尺度


3.小波函数


biorwavf 双正交样条小波滤波器
cgauwavf 复Gaussian小波
cmorwavf 复Morlet小波
coifwavf Coiflet小波滤波器
dbaux 计算Daubechies小波滤波器
dbwavf Daubechies小波滤波器
fbspwavf 复频率B-Spline小波
gauswavf Gaussian小波
mexihat Mexican hat小波
meyer Meyer小波
meyeraux Meyer小波辅助函数
morlet Morlet小波
rbiowavf 反双正交样条小波滤波器
shanwavf 复Shannon小波
symaux 计算Symlet小波滤波器
symwavf Symlets小波滤波器

小波通用函数   Allnodes   计算树结点  
appcoef   提取一维小波变换低频系数  
appcoef2   提取二维小波分解低频系数  
bestlevt   计算完整最佳小波包树  
besttree   计算最佳(优)树  
*  biorfilt   双正交样条小波滤波器组  
biorwavf   双正交样条小波滤波器  
*  centfrq   求小波中心频率  
cgauwavf   Complex Gaussian小波  
cmorwavf   coiflets小波滤波器  
cwt   一维连续小波变换  
dbaux   Daubechies小波滤波器计算  
dbwavf   Daubechies小波滤波器   dbwavf(W)    W='dbN'   N=1,2,3,...,50  
ddencmp   获取默认值阈值(软或硬)熵标准  
depo2ind   将深度-位置结点形式转化成索引结点形式  
detcoef   提取一维小波变换高频系数  
detcoef2   提取二维小波分解高频系数  
disp   显示文本或矩阵  
drawtree   画小波包分解树(GUI)  
dtree   构造DTREE类  
dwt   单尺度一维离散小波变换  
dwt2   单尺度二维离散小波变换  
dwtmode   离散小波变换拓展模式  
*  dyaddown   二元取样  
*  dyadup   二元插值  
entrupd   更新小波包的熵值  
fbspwavf   B样条小波  
gauswavf   Gaussian小波  
get   获取对象属性值  
idwt   单尺度一维离散小波逆变换  
idwt2   单尺度二维离散小波逆变换  
ind2depo   将索引结点形式转化成深度—位置结点形式  
*  intwave   积分小波数  
isnode   判断结点是否存在   
istnode   判断结点是否是终结点并返回排列值  
iswt   一维逆SWT(Stationary Wavelet Transform)变换  
iswt2   二维逆SWT变换  
leaves     Determine terminal nodes
mexihat   墨西哥帽小波  
meyer   Meyer小波  
meyeraux   Meyer小波辅助函数  
morlet   Morlet小波  
nodease   计算上溯结点  
nodedesc   计算下溯结点(子结点)  
nodejoin   重组结点  
nodepar   寻找父结点  
nodesplt   分割(分解)结点  
noleaves     Determine nonterminal nodes
ntnode     Number of terminal nodes
ntree     Constructor for the class NTREE 
*  orthfilt   正交小波滤波器组  
plot   绘制向量或矩阵的图形  
*  qmf   镜像二次滤波器  
rbiowavf     Reverse biorthogonal spline wavelet filters
read   读取二进制数据  
readtree   读取小波包分解树  
*  scal2frq     Scale to frequency
set     
shanwavf     Shannon wavelets
swt   一维SWT(Stationary Wavelet Transform)变换  
swt2   二维SWT变换  
symaux     Symlet wavelet filter computation.
symwavf   Symlets小波滤波器  
thselect   信号消噪的阈值选择  
thodes     References
treedpth   求树的深度  
treeord   求树结构的叉数   
upcoef   一维小波分解系数的直接重构  
upcoef2   二维小波分解系数的直接重构  
upwlev   单尺度一维小波分解的重构  
upwlev2   单尺度二维小波分解的重构  
wavedec   单尺度一维小波分解  
wavedec2   多尺度二维小波分解  
wavedemo   小波工具箱函数demo  
*  wavefun   小波函数和尺度函数  
*  wavefun2   二维小波函数和尺度函数  
wavemenu   小波工具箱函数menu图形界面调用函数  
*  wavemngr   小波管理函数  
waverec   多尺度一维小波重构  
waverec2   多尺度二维小波重构  
wbmpen     Penalized threshold for wavelet 1-D or 2-D de-noising
wcodemat   对矩阵进行量化编码  
wdcbm     Thresholds for wavelet 1-D using Birge-Massart strategy
wdcbm2    Thresholds for wavelet 2-D using Birge-Massart strategy 
wden   用小波进行一维信号的消噪或压缩  
wdencmp    De-noising or compression using wavelets 
wentropy   计算小波包的熵  
wextend    Extend a vector or a matrix 
*  wfilters   小波滤波器  
wkeep   提取向量或矩阵中的一部分  
*  wmaxlev   计算小波分解的最大尺度  
wnoise   产生含噪声的测试函数数据  
wnoisest   估计一维小波的系数的标准偏差  
wp2wtree   从小波包树中提取小波树      
wpcoef   计算小波包系数  
wpcutree   剪切小波包分解树  
wpdec   一维小波包的分解  
wpdec2   二维小波包的分解  
wpdencmp   用小波包进行信号的消噪或压缩  
wpfun   小波包函数  
    wpjoin    重组小波包 
wprcoef   小波包分解系数的重构  
wprec   一维小波包分解的重构  
wprec2   二维小波包分解的重构  
wpsplt   分割(分解)小波包  
wpthcoef   进行小波包分解系数的阈值处理  
wptree     显示小波包树结构
wpviewcf     Plot the colored wavelet packet coefficients. 
wrcoef   对一维小波系数进行单支重构  
wrcoef2   对二维小波系数进行单支重构  
wrev   向量逆序  
write   向缓冲区内存写进数据  
wtbo     Constructor for the class WTBO 
wthcoef   一维信号的小波系数阈值处理  
wthcoef2   二维信号的小波系数阈值处理  
wthresh   进行软阈值或硬阈值处理  
wthrmngr   阈值设置管理  
wtreemgr   管理树结构 

注:

DWT2是二维单尺度小波变换,其可以通过指定小波或者分解滤波器进行二维单尺度小波分解。而WAVEDEC2是二维多尺度小波分解。DWT2的一种语法格式是[cA,cH,cV,cD]=dwt2(X,'wname');而对应的WAVEDEC2的语法格式是[C,S]=wavedec2(X,N,'wname'),其中N为大于1的正整数。也就是说DWT2只能对某个输入矩阵X进行一次分解,而WAVEDEC2可以对输入矩阵X进行N次分解。


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重构高通滤波器');
############################

biorwavf函数

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

centfrq函数

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

centfrq函数应用

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

gauswavf函数

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

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
############################

dbwavf函数

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

coifwavf函数

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

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
############################

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
############################

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))
############################

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
############################

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
############################

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的四个滤波器')
############################

wavefun2函数

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

rbiowavf函数

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

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')
############################

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('转换模量:高通')
############################

morlet函数

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

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 尺度函数')
############################

mexihat函数

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

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]上的积分']);
############################

你可能感兴趣的:(Matlab Wavelet 工具箱的使用)