(7)qmf函数【镜像二次滤波器】
Y=qmf(X,p)/Y=qmf(X)(等价于Y=qmf(X,0))
%p为偶数时,函数改变向量x中偶数位置的元素符号;
p为奇数时,函数改变向量x中奇数位置的元素符号;
(8)dyadup函数【二维插值】
Y=dyadup(X,evenodd)
%evenodd为偶数,则进行偶插值;为奇数则进行奇插值。
Y=dyadup(X)%偶插值
Y=dyadup(X,evenodd,’type’)
Y=dyadup(X,’type’,evenodd)
%X为一个矩阵,’type’=’c’,则插入列;’type’=’r’,则插入行;’type’=’m’,则插入行和列。
(9)wavefun函数【小波和尺度函数】
[phi,psi,xval]=wavefun(‘wname’,iter)
%对于正交小波,返回尺度函数和小波函数;(适用meyer小波)
[phi1,psi1,phi2,psi2,xval]=wavefun(‘wname’,iter)
%对于双正交小波,返回分别用于分解和重构的尺度和小波函数;
[psi,xval]=wavefun(‘wname’,iter)
%适用没有尺度函数的小波,如morlet、mexicanhat,Gaussianderivatives和复小波。
[…]=wavefun(‘wname’,A,B)
%A,B为正整数,并画图。
(10)wavefun2函数【二维小波和尺度函数】
返回尺度函数与3个小波函数,它们是一位小波函数与尺度函数的矢量积。
[s,w1,w2,w3,xyval]=wavefun2(‘wname’,iter)
%尺度函数s是phi与psi的矢量积。
小波函数w1,w2,w3分别是(phi,psi),(phi,phi),(psi,psi)的矢量积。
xyval是(xval,yval)的矢量积得到的网格,iter表示重复计算次数。
[s,w1,w2,w3,xyval]=wavefun2(‘wname’,iter,’plot’)
[s,w1,w2,w3,xyval]=wavefun2(‘wname’,iter,A,B)
%AB为正整数,计算小波函数和尺度函数的近似值并画图。
(11)wfilters函数【小波滤波器】
[Lo_D,Hi_D,Lo_R,Hi_R]=wfilters(‘wname’)
%计算正交小波或双正交小波wname相关4个滤波器
[F1,F2]=wfilters(‘wname’,’type’)
‘Type’=’d’,返回分解滤波器
‘Type’=’r’,返回重构滤波器
‘Type’=’l’,返回低通滤波器
‘Type’=’h’,返回高通滤波器
(12)centfrq函数【计算小波中心频率】
freq=centfrq=(‘wname’)
%得到wname小波的中心频率。
freq=centfrq=(‘wname’,iter)
%iter是被wavefun函数调用的次数。
[freq,xval,recfreq]=centfrq=(‘wname’,iter,’plot’)
%返回基于2^iter点网格xval上近似的recfreq,计算相关中心频率,并画出小波函数和recfreq。
(13)dyaddown函数【二元抽取】
Y=dyaddown(X,evenodd)
%从向量X中每隔一个元素抽取一个元素组成的向量Y,evenodd为奇数的时候,进行奇抽取;偶数的时候为偶抽取。
Y=dyaddown(X)%默认evenodd为0
Y=dyaddown(X,evenodd,’type’)
Y=dyaddown(X,’type’,evenodd)
%X为一个矩阵,’type’=’c’,则抽取列;’type’=’r’,则抽取行;’type’=’m’,则抽取行和列。
2、小波函数
(1)fbspwavf函数【频率B样条小波】
[psi,x]=fbspwavf(lb,ub,n,m,fb,fc)
%返回M阶频率B样条小波(m=>1),带宽FB,中心频率FC;
Psi定义在N点均匀分布的区间[lb,ub]。
(2)dbwavf函数【Daubechies小波滤波器】
F=dbwavf(W)
%返回与所指定的Daubechies小波的尺度滤波器。
(3)cmorwavf函数【复morlet小波】
[psi,x]=cmorwavf(lb,ub,n,fb,fc)
%返回复morlet小波,带宽FB,中心频率FC;Psi定义在N点均匀分布的区间[lb,ub]。
(4)mexihat函数【mexicanhat小波】
[psi,x]=mexihat(lb,ub,n)
%返回有效支撑为[lb,ub],N点均匀分布网格上的mexicanhat小波,输出变量为网格X上计算得到的小波函数psi。
(5)coifletf函数【coifletf小波滤波器】
p=coifletf(W)
%返回由W指定的coifletf小波尺度滤波器,其中W=’coifN’,N取值可以是1-5。
(6)meyeraux函数【Meyer小波辅助函数】
Y=meyeraux(X)
%返回meyer小波使用的辅助函数在向量获矩阵X上的各点值。
(7)morlet函数【morlet小波】
[psi,x]=morlet(lb,ub,n)
%返回morlet小波在N点均匀分布的支撑[lb,ub]的值,输出变量为网格X上计算得到的小波函数psi。
(8)symaux函数【计算symlet小波】
W=symaux(N,sumw)%N阶symlet尺度滤波器。
W=symaux(N)
(9)symwavf函数【symlet小波滤波器】
F=symwavf(W)
%返回由字符串W定义的symlet小波相关的尺度滤波器。
(10)Biorwavf函数【双正交样条小波滤波器】
[rf,df]=biorwavf(W)
%返回与指定双正交小波W相交联的两个尺度滤波器。
Rf是重构滤波器,df是分解滤波器。
(11)cgauwavf函数【复高斯小波】
[psi,x]=morlet(lb,ub,n,p)
%定义在区间[lb,ub]上的N点均匀分布的网格上,返回P次复高斯函数。
(12)dbaux函数【计算Daubechies小波滤波器】
W=dbaux(n,sumw)%返回N阶Daubechies尺度滤波器
W=dbaux(n)%等价于W=dbaux(n,1)
(13)gauswavf函数【gaussian小波】
[psi,x]=gausswavf(lb,ub,n,p)
%定义在区间[lb,ub]上的N点均匀分布的网格上,返回P次复高斯函数。
(不同于11中的复高斯函数)
(14)rbiowavf函数【反双正交样条滤波器】
[rf,df]=rbiorwavf(W)
%返回由字符串W定义的和双正交小波相关的两个尺度滤波器。
(15)shanwavf函数【复shannon小波】
[psi,x]=shanwavf(lb,ub,n,fb,fc)
%返回复shannon小波,带宽FB,中心频率FC;Psi定义在N点均匀分布的区间[lb,ub]。
(16)meyer函数【meyer小波】
[phi,psi,t]=meyer(lb,ub,n)
%返回有效支撑为[lb,ub],N点均匀分布网格上的估计得到的meyer尺度与小波函数。
N必须为2的整次幂。
[phi,t]=meyer(lb,ub,n,’phi’)
[psi,t]=meyer(lb,ub,n,’psi’)
四、小波变换的Matlab实现
4.1一维连续小波
1、计算步骤:
(1)选定一个小波,并与处在分析时段部分的信号相比较。
(2)计算该时刻的连续小波变换系数C。
(3)调整参数b,调整信号的分析时间段,向右平以小波,直至分析时段已经覆盖了信号的整个支撑区间。
(4)调整参数a,尺度伸缩。
重复
(1)-(3)。
(5)重复
(1)-(4),计算完所有尺度的连续小波变换系数。
2、相关matlab函数
(1)cwt函数【一维连续小波变换函数】
COEFS=cwt(s,scales,’wname’)
%采用wname小波,在正、实尺度scales下计算向量一维连续小波系数。
S为被分析信号。
COEFS=cwt(s,scales,’wname’,’plot’)%计算小波系数加上图形显示。
COEFS=cwt(s,scales,’wname’,’plotmode’)
%计算并画出连续小波变换的系数,并使用plotmode对图像着色。
COEFS=cwt(s,scales,’wname’,’plotmode’,xlim)
%计算并画出连续小波变换的系数,并使用plotmode和xlim对图像着色。
Mode=’lvl’,使用scale-by-scale着色模式
Mode=’glb’,考虑所有尺度的着色模式
Mode=’abslvl’/’lvlabs’,使用系数绝对值的scale-by-scale着色模式
Mode=’absglb’/’glbabs’,使用系数绝对值并考虑所有尺度的着色模式。
(2)pat2cwav函数【由模式构造小波】
[psi,xval,nc]=pat2cwav(ypat,method,poldegree,regularity)
%计算由xval和psi给定并用于连续小波变换的小波函数,该小波向量ypat定义的模式构造,方差为1。
其中模式隐含的x,xpat=linespace(0,1,length(ypat))。
Nc的选取应保证通过以下方式的最小二乘拟合。
Method=’polynomial’时,为polydegree阶多项式。
Method=’othconst’时,为正交函数空间的投影。
Regularity定义了在0、1点的边界约束可以是’continuous’,’differentiable’,’none’。
当Method=’polynomial’,regularity=’continuous’,polydegree=>3;
当Method=’polynomial’,regularity=’differentiable’,polydegree=>5;
(3)命令行实现
装在信号—完成连续小波变换—显示系数的图形表示
4.2离散小波变换
1、matlab函数
(1)wavedec函数【多尺度一维小波分解】
[c,l]=wacedec(x,n,’wname’)
%返回信号X在N层的小波分解。
N必须是正整数。
输出分解结构包含小波解向量c和相应的记录向量l。
[c,l]=wacedec(x,n,Lo_D,Hi_D)
%使用指定的低通和高通分解滤波器,返回分解结构。
(2)dwt函数【单尺度一维离散小波变换】
[cA,cD]=dwt(X,’wname’)
[cA,cD]=dwt(X,’wname’,’mode’,MODE)
%计算低频系数向量cA和高频系数向量cD,由向量X小波分解得到。
[cA,cD]=dwt(X,Lo_D,Hi_D)
[cA,cD]=dwt(X,Lo_D,Hi_D,’mode’,MODE)
%计算小波分解,Lo_D和Hi_D滤波器为输入。
(3)idwt函数【单尺度一维小波逆变换】
X=idwt(cA,cD,’wname’)
%返回使用wname,返回单尺度重构的低频系数向量cA,高频系数向量cD
X=idwt(cA,cD,Lo_R,Hi_R)
%使用低通滤波器Lo_R高通滤波器Hi_R
X=idwt(cA,cD,’wname’,L)
X=idwt(cA,cD,Lo_R,Hi_R,L)
%返回由idwt得到的长度为L的中间部分,L必须小于LX(length(X))。
X=idwt(…,’mode’,MODE)
%使用指定的延拓模式MODE进行小波重构。
(5)waverec函数【多尺度一维小波重构】
X=waverec(C,L,’wname’)
%基于多尺度小波分解结构[C,L]和小波wname重构信号X。
X=waverec(C,L,Lo_R,Hi_R)
%使用指定重构滤波器重构X。
(6)wrcoef函数【由一维小波函数进行单支重构】
X=wrcoef(‘type’,C,L,’wname’,N)
%基于小波分解结构[c,l]在N层计算重构系数向量。
X=wrcoef(‘type’,C,L,Lo_R,Hi_R,N)
%根据指定的重构滤波器计算系数。
(7)wmaxlev函数【小波分解最大尺度】
L=wmaxlev(S,’wname’)%返回信号或者图像的最大分解尺度
(8)detcoef函数【提取一维小波细节系数】
D=detcoef(C,L,N)%由小波分解结构[c,l]提取N层细节系数。
D=detcoef(C,L)%提取最后一层NMAX的细节系数。
(9)appcoef函数【提取一维近似系数】
A=appcoef(C,L,’wname’,N)/A=appcoef(C,L,’wname’)
%使用小波分解框架[c,l]计算N层系数的近似值。
A=appcoef(C,L,Lo_R,Hi_R)/A=appcoef(C,L,Lo_R,Hi_R,N)
%使用指定滤波器计算。
(10)dwtmode函数【离散小波变换扩展模式】
用来设置信号或图像进行离散小波和小波包变换的扩展模式,扩展模式表示信号或者图像分析时的边界问题处理办法。
ST=dwtmode
%显示当前模式
Dwtmode(‘mode’)
%DWT扩展模式
(11)upcoef函数【一维小波系数直接构造】
Y=upcoef(o,x,’wname’,N)/Y=upcoef(o,x,’wname’,N,L)
%计算向量X向上N步的重构系数/并取出结果中长度为L的中间部分。
Y=upcoef(C,L,Lo_R,Hi_R,N)/A=upcoef(C,L,Lo_R,Hi_R,N,L)
%IfO='a',approximationcoefficientsarereconstructed.
IfO='d',detailcoefficientsarereconstructed.
%使用滤波器计算。
3、计算步骤
装载信号—完成信号的单尺度一维离散小波变换—从系数中重构低频和高频部分—显示低频高频部分—由小波逆变换恢复信号—多层一维分解—提取系数的低频和高频部分—重构第三层的低频系数—重构1-5层高频信号—重构原始信号并显示。
4.3一维小波平稳变换
1、matlab函数
(1)swt函数【一维小波平稳变换】
SWC=swt(x,n,’wname’)
%计算信号x的尺度为n的平稳小波分解。
SWC=swt(x,n,Lo_D,Hi_D)
%使用低通和高通滤波器进行分解,返回信号X.
[SWA,SWD]=swt(x,n,’wname’)
[SWA,SWD]=swt(x,n,Lo_D,Hi_D)
%计算低频系数SWA和高频系数SWD等平稳小波系数。
(2)iswt函数【一维离散平稳小波逆变换】
X=iswt(SWC,’wname’)
X=iswt(SWA,SWD,’wname’)
%基于多尺度小波分解结构SWC,[SWA,SWD],重构信号
X=iswt(SWC,Lo_R,Hi_R)
X=iswt(SWA,SWD,Lo_R,Hi_R)
%使用重构低通、高通滤波器,返回信号X
(3)Wextend函数【信号延拓】
Y=wextend(type,mode,x,l,loc)
Y=wextend(type,mode,x,l)
Type=1/’1’/1d/1D---一维延拓
Type=2/’2’/2d/2D---二维延拓
Type=ar/addrow---添加行
Type=ac/addcol---添加列
命令行实现:
信号延拓—图像延拓
(4)命令行方法实现
装载信号—完成信号的单尺度一维离散平稳小波分解—由平稳小波逆变换—由系数构建低频和高频部分—执行多层平稳小波分解—由系数重构多层低频和高频信号。
五、二维小波变换的实现
1、matlab函数
(1)upwlev2函数【二维小波分解的单尺度重构】
[nc,ns,cA]=upwlev2(c,s,’wname’)
[nc,ns,cA]=upwlev2(c,s,Lo_R,Hi_R)
%对小波分解结构[c,s]单尺度重构,返回新的分解结构[nc,ns],并提取最后一尺度的低频系数矩阵cA。
(2)Wenergy2函数【计算二维小波分解能量】
[Ea,Eh,Ev,Ed]=wenergy2(c,s)
%返回Ea是低频部分能量的百分比,Eh,Ev,Ed分别是高频部分水平、垂直、和对角方向能量百分比的向量。
[Ea,EDetail]=wenergy2(c,s)
%返回Ea和EDetail,后者是向量Eh,Ev,Ed之和。
(3)wavedec2函数【二维多尺度分解】
[c,s]=wavedec2(c,n,’wname’)
%使用小波返回矩阵X尺度N的小波分解,输出是分解向量C和相应的对应矩阵S。
[c,s]=wavedec2(c,n,Lo_R,Hi_R)
(4)dwt2函数【二维单尺度小波变换】
[cA,cH,cV,cD]=dwt2(x,’wname’)
[cA,cH,cV,cD]=dwt2(x,Lo_D,Hi_D)
%根据矩阵X进行小波分解,计算低频系数矩阵cA和高频系数矩阵cH水平,cV垂直,cD对角。
基于指定小波分解滤波器计算二维小波分解系数。
(5)appcoef2函数【提取二维系数】
Y=appcoef2(c,s,’wname’,N)
%使用小波分级结构[c,s],计算N层的低频系数。
Y=appcoef2(c,s,’wname’)%提取最后一层低频系数。
Y=appcoef2(c,s,Lo_R,Hi_R)/Y=appcoef2(c,s,Lo_R,Hi_R,N)
(6)Wrcoef2函数【由二维小波系数重构单支】
二维小波分析函数,用来重构一幅图像的系数。
X=wrcoef2(‘type’,C,L,’wname’,N)
%基于小波分解结构[c,l]在N层计算重构系数向量。
X=wrcoef2(‘type’,C,L,Lo_R,Hi_R,N)
%根据指定的重构滤波器计算系数。
X=wrcoef2(‘type’,C,L,’wname’,N)
X=wrcoef2(‘type’,C,L,Lo_R,Hi_R,N)
(7)waverec2函数【多尺度二维小波重构】
X=waverec2(c,s,’wname’)
%基于小波分解结果[c,s]对矩阵X进行多尺度小波重构。
X=waverec2(c,s,Lo_R,Hi_R)
(8)upcoef2函数【二维小波系数的直接重构】
Y=upcoef2(o,x,’wname’,n,s)
%计算矩阵X的N层重构系数,并提取长度为S的中间部分。
Y=upcoef2(o,x,Lo_R,Hi_R,n,s)
Y=upcoef2(o,x,’wname’,n)
Y=upcoef2(o,x,Lo_R,Hi_R,n)
(9)idwt2函数【二维小波单尺度逆变换】---参见(4)
X=idwt2(cA,cH,cV,cD,’wname’)
X=idwt2(cA,cH,cV,cD,Lo_D,Hi_D)
(10)detcoef2函数【提取二维高频系数】
D=detcoef2(o,c,s,n)
%二维小波分析,由小波分解结构[c,s],提取尺度为N时的水平、垂直或对角高频系数。
命令行实现
装在图像信号并显示图像—执行图像的单尺度小波分解—由系数重