matlab小波函数.docx
- 文档编号:29985797
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:17
- 大小:22.16KB
matlab小波函数.docx
《matlab小波函数.docx》由会员分享,可在线阅读,更多相关《matlab小波函数.docx(17页珍藏版)》请在冰豆网上搜索。
matlab小波函数
Matlab小波函数
一、Matlab小波去噪根本原理
1、带噪声的信号一般是由含有噪声的高频信号和原始信号所在的低频信号。
利用多层小波,将高频噪声信号从混合信号中分解出来。
2、选择适宜的阈值对图像的高频信号进展量化处理
3、重构小波图像:
依据图像小波分解的低频信号与处理之后的高频信号来重构图像的信息。
二、第二代小波变换
1、构造方法特点:
(1)继承了第一代小波的多分辨率的特性。
(2)不依赖fourior变换,直接在时域完成小波变换。
(3)变换之后的系数可以是整数。
(4)图像恢复质量与变换是边界采用何种延拓方式无关。
2、优点:
算法简单,速度快,适合并行处理。
对存需求量小,便于DSP芯片实现、可用于本位操作运算。
3、提升原理:
构造紧支集双正交小波
〔1〕步骤:
分裂—预测—更新
〔2〕分解与重构
三、matlab小波函数库
1、matlab小波通用函数:
(1)wavemngr函数【小波管理器〔用于小波管理,添加、删除、储存、读取小波〕】
wavemngr(‘add’,FN,FSN,WT,NUMS,FILE)
wavemngr(‘add’,FN,FSN,WT,NUMS,FILE,B)
%添加小波函数,FN为familyname,FSN为familyshortname
WT为小波类型:
WT=1表示正交小波,=2表示非正交小波,=3表示带尺度函数的小波,=4表示无尺度函数的小波,=5表示无尺度函数的复小波。
小波族只有一个小波,则NUMS=“,否则NUMS表示小波参数的字符串
FILE表示文件名
B=[lbub]指定小波有效支撑的上下界
wavemngr(‘del’,N)%删除小波
wavemngr(‘restore’)/wavemngr(‘restore’,IN2)%保存原始小波
OUT1=wavemngr(‘read’)%返回小波族的名称
OUT1=wavemngr(‘read’,IN2)%返回所有小波的名称
OUT1=wavemngr(‘read_asc’)
%读取wavelets.asc文件并返回小波信息
(2)scal2frq函数【尺度转换频率】
F=scal2frq(A,’wname’,DELTA)
%返回由尺度A,小波函数“wname〞和采样周期DELTA决定的准频率。
(3)orthfilt函数【正交小波滤波器组】
[Lo_D,Hi_D,Lo_R,Hi_R]=orthfilt(W)
%计算与小波函数对应的尺度滤波器相关的4个滤波器
Lo_D—分解低通滤波器
Hi_D—分解高通滤波器
Lo_R—重构低通滤波器
Hi_R—重构高通滤波器
(4)wma*lev函数【小波分解的最大尺度】
L=wma*lev(S,’wname’)
%返回信号或者图像的最大分解尺度,可以帮助防止分解是超过这个值。
(5)biorfilt函数【双正交小波滤波器组】
[Lo_D,Hi_D,Lo_R,Hi_R]=biorfilt(DF,RF)
[Lo_D1,Hi_D1,Lo_R1,Hi_R1,Lo_D2,Hi_D2,Lo_R2,Hi_R2]=biorfilt(DF,RF,’8’)
%DF—分解滤波器,RF—重构滤波器。
(6)intwave函数【积分小波函数】
[INTEG,*VAL]=intwave(‘wname’,PREC)
[INTEG,*VAL]=intwave(‘wname’,PREC,PFLAG)
[INTEG,*VAL]=intwave(‘wname’)
%计算小波函数在区间(<*val)上的积分INTEG
(7)qmf函数【镜像二次滤波器】
Y=qmf(*,p)/Y=qmf(*)〔等价于Y=qmf(*,0)〕
%p为偶数时,函数改变向量*中偶数位置的元素符号;
p为奇数时,函数改变向量*中奇数位置的元素符号;
(8)dyadup函数【二维插值】
Y=dyadup(*,evenodd)
%evenodd为偶数,则进展偶插值;为奇数则进展奇插值。
Y=dyadup(*)%偶插值
Y=dyadup(*,evenodd,’type’)
Y=dyadup(*,’type’,evenodd)
%*为一个矩阵,’type’=’c’,则插入列;’type’=’r’,则插入行;’type’=’m’,则插入行和列。
(9)wavefun函数【小波和尺度函数】
[phi,psi,*val]=wavefun(‘wname’,iter)
%对于正交小波,返回尺度函数和小波函数;〔适用meyer小波〕
[phi1,psi1,phi2,psi2,*val]=wavefun(‘wname’,iter)
%对于双正交小波,返回分别用于分解和重构的尺度和小波函数;
[psi,*val]=wavefun(‘wname’,iter)
%适用没有尺度函数的小波,如morlet、me*icanhat,Gaussianderivatives和复小波。
[…]=wavefun(‘wname’,A,B)
%A,B为正整数,并画图。
(10)wavefun2函数【二维小波和尺度函数】
返回尺度函数与3个小波函数,它们是一位小波函数与尺度函数的矢量积。
[s,w1,w2,w3,*yval]=wavefun2(‘wname’,iter)
%尺度函数s是phi与psi的矢量积。
小波函数w1,w2,w3分别是〔phi,psi〕,〔phi,phi〕,〔psi,psi〕的矢量积。
*yval是〔*val,yval〕的矢量积得到的网格,iter表示重复计算次数。
[s,w1,w2,w3,*yval]=wavefun2(‘wname’,iter,’plot’)
[s,w1,w2,w3,*yval]=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,*val,recfreq]=centfrq=(‘wname’,iter,’plot’)
%返回基于2^iter点网格*val上近似的recfreq,计算相关中心频率,并画出小波函数和recfreq。
(13)dyaddown函数【二元抽取】
Y=dyaddown(*,evenodd)
%从向量*中每隔一个元素抽取一个元素组成的向量Y,evenodd为奇数的时候,进展奇抽取;偶数的时候为偶抽取。
Y=dyaddown(*)%默认evenodd为0
Y=dyaddown(*,evenodd,’type’)
Y=dyaddown(*,’type’,evenodd)
%*为一个矩阵,’type’=’c’,则抽取列;’type’=’r’,则抽取行;’type’=’m’,则抽取行和列。
2、小波函数
(1)fbspwavf函数【频率B样条小波】
[psi,*]=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,*]=cmorwavf(lb,ub,n,fb,fc)
%返回复morlet小波,带宽FB,中心频率FC;Psi定义在N点均匀分布的区间[lb,ub]。
(4)me*ihat函数【me*icanhat小波】
[psi,*]=me*ihat(lb,ub,n)
%返回有效支撑为[lb,ub],N点均匀分布网格上的me*icanhat小波,输出变量为网格*上计算得到的小波函数psi。
(5)coifletf函数【coifletf小波滤波器】
p=coifletf(W)
%返回由W指定的coifletf小波尺度滤波器,其中W=’coifN’,N取值可以是1-5。
(6)meyerau*函数【Meyer小波辅助函数】
Y=meyerau*(*)
%返回meyer小波使用的辅助函数在向量获矩阵*上的各点值。
(7)morlet函数【morlet小波】
[psi,*]=morlet(lb,ub,n)
%返回morlet小波在N点均匀分布的支撑[lb,ub]的值,输出变量为网格*上计算得到的小波函数psi。
(8)symau*函数【计算symlet小波】
W=symau*(N,sumw)%N阶symlet尺度滤波器。
W=symau*(N)
(9)symwavf函数【symlet小波滤波器】
F=symwavf(W)
%返回由字符串W定义的symlet小波相关的尺度滤波器。
(10)Biorwavf函数【双正交样条小波滤波器】
[rf,df]=biorwavf(W)
%返回与指定双正交小波W相交联的两个尺度滤波器。
Rf是重构滤波器,df是分解滤波器。
(11)cgauwavf函数【复高斯小波】
[psi,*]=morlet(lb,ub,n,p)
%定义在区间[lb,ub]上的N点均匀分布的网格上,返回P次复高斯函数。
(12)dbau*函数【计算Daubechies小波滤波器】
W=dbau*(n,sumw)%返回N阶Daubechies尺度滤波器
W=dbau*(n)%等价于W=dbau*(n,1)
(13)gauswavf函数【gaussian小波】
[psi,*]=gausswavf(lb,ub,n,p)
%定义在区间[lb,ub]上的N点均匀分布的网格上,返回P次复高斯函数。
〔不同于11中的复高斯函数〕
(14)rbiowavf函数【反双正交样条滤波器】
[rf,df]=rbiorwavf(W)
%返回由字符串W定义的和双正交小波相关的两个尺度滤波器。
(15)shanwavf函数【复shannon小波】
[psi,*]=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’,*lim)
%计算并画出连续小波变换的系数,并使用plotmode和*lim对图像着色。
Mode=’lvl’,使用scale-by-scale着色模式
Mode=’glb’,考虑所有尺度的着色模式
Mode=’abslvl’/’lvlabs’,使用系数绝对值的scale-by-scale着色模式
Mode=’absglb’/’glbabs’,使用系数绝对值并考虑所有尺度的着色模式。
〔2〕pat2cwav函数【由模式构造小波】
[psi,*val,nc]=pat2cwav(ypat,method,poldegree,regularity)
%计算由*val和psi给定并用于连续小波变换的小波函数,该小波向量ypat定义的模式构造,方差为1。
其中模式隐含的*,*pat=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(*,n,’wname’)
%返回信号*在N层的小波分解。
N必须是正整数。
输出分解构造包含小波解向量c和相应的记录向量l。
[c,l]=wacedec(*,n,Lo_D,Hi_D)
%使用指定的低通和高通分解滤波器,返回分解构造。
〔2〕dwt函数【单尺度一维离散小波变换】
[cA,cD]=dwt(*,’wname’)
[cA,cD]=dwt(*,’wname’,’mode’,MODE)
%计算低频系数向量cA和高频系数向量cD,由向量*小波分解得到。
[cA,cD]=dwt(*,Lo_D,Hi_D)
[cA,cD]=dwt(*,Lo_D,Hi_D,’mode’,MODE)
%计算小波分解,Lo_D和Hi_D滤波器为输入。
〔3〕idwt函数【单尺度一维小波逆变换】
*=idwt(cA,cD,’wname’)
%返回使用wname,返回单尺度重构的低频系数向量cA,高频系数向量cD
*=idwt(cA,cD,Lo_R,Hi_R)
%使用低通滤波器Lo_R高通滤波器Hi_R
*=idwt(cA,cD,’wname’,L)
*=idwt(cA,cD,Lo_R,Hi_R,L)
%返回由idwt得到的长度为L的中间局部,L必须小于L*〔length(*)〕。
*=idwt(…,’mode’,MODE)
%使用指定的延拓模式MODE进展小波重构。
(5)waverec函数【多尺度一维小波重构】
*=waverec(C,L,’wname’)
%基于多尺度小波分解构造[C,L]和小波wname重构信号*。
*=waverec(C,L,Lo_R,Hi_R)
%使用指定重构滤波器重构*。
(6)wrcoef函数【由一维小波函数进展单支重构】
*=wrcoef(‘type’,C,L,’wname’,N)
%基于小波分解构造[c,l]在N层计算重构系数向量。
*=wrcoef(‘type’,C,L,Lo_R,Hi_R,N)
%根据指定的重构滤波器计算系数。
(7)wma*lev函数【小波分解最大尺度】
L=wma*lev(S,’wname’)%返回信号或者图像的最大分解尺度
(8)detcoef函数【提取一维小波细节系数】
D=detcoef(C,L,N)%由小波分解构造[c,l]提取N层细节系数。
D=detcoef(C,L)%提取最后一层NMA*的细节系数。
(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,*,’wname’,N)/Y=upcoef(o,*,’wname’,N,L)
%计算向量*向上N步的重构系数/并取出结果中长度为L的中间局部。
Y=upcoef(C,L,Lo_R,Hi_R,N)/A=upcoef(C,L,Lo_R,Hi_R,N,L)
%IfO='a',appro*imationcoefficientsarereconstructed.
IfO='d',detailcoefficientsarereconstructed.
%使用滤波器计算。
3、计算步骤
装载信号—完成信号的单尺度一维离散小波变换—从系数中重构低频和高频局部—显示低频高频局部—由小波逆变换恢复信号—多层一维分解—提取系数的低频和高频局部—重构第三层的低频系数—重构1-5层高频信号—重构原始信号并显示。
4.3一维小波平稳变换
1、matlab函数
〔1〕swt函数【一维小波平稳变换】
SWC=swt(*,n,’wname’)
%计算信号*的尺度为n的平稳小波分解。
SWC=swt(*,n,Lo_D,Hi_D)
%使用低通和高通滤波器进展分解,返回信号*.
[SWA,SWD]=swt(*,n,’wname’)
[SWA,SWD]=swt(*,n,Lo_D,Hi_D)
%计算低频系数SWA和高频系数SWD等平稳小波系数。
〔2〕iswt函数【一维离散平稳小波逆变换】
*=iswt(SWC,’wname’)
*=iswt(SWA,SWD,’wname’)
%基于多尺度小波分解构造SWC,[SWA,SWD],重构信号
*=iswt(SWC,Lo_R,Hi_R)
*=iswt(SWA,SWD,Lo_R,Hi_R)
%使用重构低通、高通滤波器,返回信号*
〔3〕We*tend函数【信号延拓】
Y=we*tend(type,mode,*,l,loc)
Y=we*tend(type,mode,*,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’)
%使用小波返回矩阵*尺度N的小波分解,输出是分解向量C和相应的对应矩阵S。
[c,s]=wavedec2(c,n,Lo_R,Hi_R)
(4)dwt2函数【二维单尺度小波变换】
[cA,cH,cV,cD]=dwt2(*,’wname’)
[cA,cH,cV,cD]=dwt2(*,Lo_D,Hi_D)
%根据矩阵*进展小波分解,计算低频系数矩阵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函数【由二维小波系数重构单支】
二维小波分析函数,用来重构一幅图像的系数。
*=wrcoef2(‘type’,C,L,’wname’,N)
%基于小波分解构造[c,l]在N层计算重构系数向量。
*=wrcoef2(‘type’,C,L,Lo_R,Hi_R,N)
%根据指定的重构滤波器计算系数。
*=wrcoef2(‘type’,C,L,’wname’,N)
*=wrcoef2(‘type’,C,L,Lo_R,Hi_R,N)
(7)waverec2函数【多尺度二维小波重构】
*=waverec2(c,s,’wname’)
%基于小波分解结果[c,s]对矩阵*进展多尺度小波重构。
*=waverec2(c,s,Lo_R,Hi_R)
(8)upcoef2函数【二维小波系数的直接重构】
Y=upcoef2(o,*,’wname’,n,s)
%计算矩阵*的N层重构系数,并提取长度为S的中间局部。
Y=upcoef2(o,*,Lo_R,Hi_R,n,s)
Y=upcoef2(o,*,’wname’,n)
Y=upcoef2(o,*,Lo_R,Hi_R,n)
(9)idwt2函数【二维小波单尺度逆变换】---参见〔4〕
*=idwt2(cA,cH,cV,cD,’wname’)
*=idwt2(cA,cH,cV,cD,Lo_D,Hi_D)
(10)detcoef2函数【提取二维高频系数】
D=detcoef2(o,c,s,n)
%二维小波分析,由小波分解构造[c,s],提取尺度为N时的水平、垂直或对角高频系数。
命令行实现
装在图像信号并显示图像—执行图像的单尺度小波分解—由系数重构低频
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 函数