最新小波变换matlab总结.docx

上传人:b****3 文档编号:6042161 上传时间:2023-05-09 格式:DOCX 页数:77 大小:5.44MB
下载 相关 举报
最新小波变换matlab总结.docx_第1页
第1页 / 共77页
最新小波变换matlab总结.docx_第2页
第2页 / 共77页
最新小波变换matlab总结.docx_第3页
第3页 / 共77页
最新小波变换matlab总结.docx_第4页
第4页 / 共77页
最新小波变换matlab总结.docx_第5页
第5页 / 共77页
最新小波变换matlab总结.docx_第6页
第6页 / 共77页
最新小波变换matlab总结.docx_第7页
第7页 / 共77页
最新小波变换matlab总结.docx_第8页
第8页 / 共77页
最新小波变换matlab总结.docx_第9页
第9页 / 共77页
最新小波变换matlab总结.docx_第10页
第10页 / 共77页
最新小波变换matlab总结.docx_第11页
第11页 / 共77页
最新小波变换matlab总结.docx_第12页
第12页 / 共77页
最新小波变换matlab总结.docx_第13页
第13页 / 共77页
最新小波变换matlab总结.docx_第14页
第14页 / 共77页
最新小波变换matlab总结.docx_第15页
第15页 / 共77页
最新小波变换matlab总结.docx_第16页
第16页 / 共77页
最新小波变换matlab总结.docx_第17页
第17页 / 共77页
最新小波变换matlab总结.docx_第18页
第18页 / 共77页
最新小波变换matlab总结.docx_第19页
第19页 / 共77页
最新小波变换matlab总结.docx_第20页
第20页 / 共77页
亲,该文档总共77页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

最新小波变换matlab总结.docx

《最新小波变换matlab总结.docx》由会员分享,可在线阅读,更多相关《最新小波变换matlab总结.docx(77页珍藏版)》请在冰点文库上搜索。

最新小波变换matlab总结.docx

最新小波变换matlab总结

 

小波变换matlab总结

一、预置工具

1.预置信号

Matlab内置了大量的信号实例,进行信号试验的时候可以调用。

调用格式:

loadsignal

matlab安装目录的toolbox/wavelet/wavedemo

noissin包含噪声的正弦波

leleccum一维电压信号,有365560个采样点

wbarb专指图片:

2.预置小波

Matlab预置了共计15种小波。

查看语句:

wavemngr('read',1)

查看单个小波:

waveinfo('wname')

1.Haar小波

小波名haar

2.Daubechies小波系

小波名db

调用名db1db2db3db4db5db6db7db8db9db10

3.对称小波系Symlets

小波名sym

调用名sym2sym3sym4sym5sym6sym7sym8

4.Coiflets小波系

小波名coif

调用名coif1coif2coif3coif4coif5

5.Biorthogonal小波系

小波名bior

调用名bior1.1bior1.3bior1.5bior2.2bior2.4bior2.6bior2.8bior3.1bior3.3bior3.5bior3.7bior3.9bior4.4bior5.5bior6.8

6.ReverseBior小波系

小波名rbio

调用名rbio1.1rbio1.3rbio1.5rbio2.2rbio2.4rbio2.6rbio2.8rbio3.1rbio3.3rbio3.5rbio3.7rbio3.9rbio4.4rbio5.5rbio6.8

7.Meyer小波

小波名meyr

8.Dmeyer小波

小波名dmey

9.Gaussian小波系

小波名gaus

调用名gaus1gaus2gaus3gaus4gaus5gaus6gaus7gaus8

10.Mexicanhat小波

小波名mexh

11.Morlet小波

小波名morl

12.ComplexGaussian小波系

小波名cgau

调用名cgau1cgau2cgau3cgau4cgau5cgau

13.Shannon小波系

小波名shan

调用名shan1-1.5shan1-1shan1-0.5shan1-0.1shan2-3

14.FrequencyB小波系

小波名fbsp

调用名fbsp1-1-1.5fbsp1-1-1fbsp1-1-0.5fbsp2-1-1fbsp2-1-0.5fbsp2-1-0.1

15.ComplexMorlet小波系

小波名cmor

调用名cmor1-1.5cmor1-1cmor1-0.5cmor1-1cmor1-0.5cmor1-0.1

3.滤波器函数

wfilters函数

[Lo_D,Hi_D,Lo_R,Hi_R]=wfilters('wname')

计算对应小波的滤波器。

Thefouroutputfiltersare

Lo_D,用于分解的低通滤波器

Hi_D,用于分解的高通滤波器

Lo_R,用于重构的低通滤波器

Hi_R,用于重构的高通滤波器

4.量化编码

wcodemat函数

y=wcodemat(x,nb,opt,absol)

y=wcodemat(x,nb,opt)

y=wcodemat(x,nb)

y=wcodemat(x)

该函数是用来对矩阵X进行量化编码,它返回矩阵X的一个编码矩阵,在编码中,把矩阵X中元素绝对值最大的作为NB(NB是一个整数),绝对值最小的作为1,其他元素依其绝对值的大小在1与NB中排列.

当OPT为'row'时,做行编码;

当OPT为'col'时,做列编码,

当OPT为'mat'时,做全局编码,即把整个矩阵中的元素绝对值最大的元素作为NB,最小的作为1,其他元素依其绝对值的大小在整个矩阵中排列.

当ABSOL为0时,该函数返回输入矩阵X的一个编码版本;为非0时,返回X的绝对值

5.阈值获取

MATLAB中实现阈值获取的函数有ddencmp、thselect、wbmpen和wwdcbm,下面对它们的用法进行简单的说明。

ddencmp函数

调用格式:

[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,IN2,X)

函数ddencmp用于获取信号在消噪或压缩过程中的默认阈值。

输入参数X为一维或二维信号;

IN1取值为'den'或'cmp','den'表示进行去噪,'cmp'表示进行压缩;

IN2取值为'wv'或'wp',wv表示选择小波,wp表示选择小波包。

输出参数THR为函数选择的阈值,SORH为函数选择阈值使用方式。

Sorh=s,为软阈值;

Sorh=h,为硬阈值;

输出参数KEEPAPP决定了是否对近似分量进行阈值处理。

可选为0或1。

CRIT为使用小波包进行分解时所选取的熵函数类型。

例:

自动生成信号小波处理的阈值选取方案。

r=2055415866;randn('seed',r);

x=randn(1,1000);%产生白噪声;

%求取对信号进行小波消噪处理的默认阈值、软阈值,并且保留低频系数;

[thr,sorh,keepapp]=ddencmp('den','wv',x);

输出:

thr=3.8593

sorh=s

keepapp=1

thselect函数

调用格式如下:

THR=thselect(X,TPTR);

根据字符串TPTR定义的阈值选择规则来选择信号X的自适应阈值。

自适应阈值的选择规则包括以下四种:

*TPTR='rigrsure',自适应阈值选择使用Stein的无偏风险估计原理。

*TPTR='heursure',使用启发式阈值选择。

*TPTR='sqtwolog',阈值等于sqrt(2*log(length(X))).

*TPTR='minimaxi',用极大极小原理选择阈值。

阈值选择规则基于模型y=f(t)+e,e是高斯白噪声N(0,1)。

wbmpen函数

调用格式:

THR=wbmpen(C,L,SIGMA,ALPHA);

返回去噪的全局阈值THR。

THR通过给定的一种小波系数选择规则计算得到,小波系数选择规则使用Birge-Massart的处罚算法。

[C,L]是进行去噪的信号或图像的小波分解结构;

SIGMA是零均值的高斯白噪声的标准偏差;

ALPHA是用于处罚的调整参数,它必须是一个大于1的实数,一般去ALPHA=2。

wdcbm函数

调用格式:

(1)[THR,NKEEP]=wdcbm(C,L,ALPHA);

(2)[THR,NKEEP]=wdcbm(C,L,ALPHA,M);

函数wdcbm是使用Birge-Massart算法获取一维小波变换的阈值。

返回值THR是与尺度无关的阈值,

NKEEP是系数的个数。

[C,L]是要进行压缩或消噪的信号在j=length(L)-2层的分解结构;

LAPHA和M必须是大于1的实数;

THR是关于j的向量,THR(i)是第i层的阈值;

NKEEP也是关于j的向量,NKEEP(i)是第i层的系数个数。

一般压缩时ALPHA取1.5,去噪时ALPHA取3.

6.阈值去噪

MATLAB中实现信号的阈值去噪的函数有wden、wdencmp、wthresh、wthcoef、wpthcoef以及wpdencmp。

下面对它们的用法作简单的介绍。

wden函数

调用格式:

(1)[XD,CXD,LXD]=wden(X,TPTR,SORH,SCAL,N,'wname')

(2)[XD,CXD,LXD]=wden(C,L,TPTR,SORH,SCAL,N,'wname')

函数wden用于一维信号的自动消噪。

X为原始信号,[C,L]为信号的小波分解,N为小波分解的层数。

THR为阈值选择规则:

*TPTR='rigrsure',自适应阈值选择使用Stein的无偏风险估计原理。

*TPTR='heursure',使用启发式阈值选择。

*TPTR='sqtwolog',阈值等于sqrt(2*log(length(X))).

*TPTR='minimaxi',用极大极小原理选择阈值。

SORH是软阈值或硬阈值的选择(分别对应's'和'h')。

SCAL指所使用的阈值是否需要重新调整,包含下面三种:

*SCAL='one'不调整;

*SCAL='sln'根据第一层的系数进行噪声层的估计来调整阈值。

*SCAL='mln'根据不同的噪声估计来调整阈值。

XD为消噪后的信号,[CXD,LXD]为消噪后信号的小波分解结构。

格式

(1)返回对信号X经过N层分解后的小波系数进行阈值处理后的消噪信号XD和信号XD的小波分解结构[CXD,LXD]。

格式

(2)返回参数与格式

(1)相同,但其结构是由直接对信号的小波分解结构[C,L]进行阈值处理得到的。

wdencmp函数

调用格式有以下三种:

(1)[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('gbl',X,'wname',N,THTR,SORH,KEEPAPP);

(2)[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('lvd',X,'wname',N,THTR,SORH);

(3)[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('lvd',C,L,'wname',N,THTR,SORH);

函数wdencmp用于一维或二维信号的消噪或压缩。

wname是所用的小波函数。

gbl(global的缩写)表示每一层都采用同一个阈值进行处理。

lvd表示每层采用不同的阈值进行处理。

N表示小波分解的层数。

THR为阈值向量,对于格式

(2)和(3)每层都要求有一个阈值,因此阈值向量THR的长度为N。

SORH表示选择软阈值或硬阈值(分别取值为's'和'h'),

参数KEEPAPP取值为1时,则低频系数不进行阈值量化,反之,低频系数要进行阈值量化。

XC是要进行消噪或压缩的信号,

[CXC,LXC]是XC的小波分解结构,

PERF0和PERFL2是恢复或压缩L^2的范数百分比。

如果[C,L]是X的小波分解结构,则PERFL2=100*(CXC向量的范数/C向量的范数)^2;如果X是一维信号,小波wname是一个正交小波,则PERFL2=100||XC||^2/||X||^2。

wthresh函数

调用格式:

Y=wthresh(X,SORH,T)

返回输入向量或矩阵X经过软阈值(如果SORH='s')或硬阈值(如果SORH='h')处理后的信号。

T是阈值。

Y=wthresh(X,'s',T)返回的是Y=SIG(X)*(|X|-T)+,即把信号的绝对值与阈值进行比较,小于或等于阈值的点变为零,大于阈值的点为该点值与阈值的差值。

Y=wthresh(X,'h',T)返回的是Y=X*1(|X|>T),即把信号的绝对值和阈值进行比较,小于或等于阈值的点变为零,大于阈值的点保持不变。

一般来说,用硬阈值处理后的信号比用软阈值处理后的信号更粗糙。

wthcoef函数

调用格式:

(1)NC=wthcoef('d',C,L,N,P)

(2)NC=wthcoef('d',C,L,N)

(3)NC=wthcoef('a',C,L)

(4)NC=wthcoef('t',C,L,N,T,SORH)

用于一维信号小波系数的阈值处理。

格式

(1)返回小波分解结构[C,L]经向量N和P定义的压缩率处理后的新的小波分解向量NC,[NC,L]构成一个新的小波分解结构。

N包含被压缩的细节向量,P是把较小系数置0的百分比信息的向量。

N和P的长度必须相同,向量N必须满足1<=N(i)<=length(L)-2。

格式

(2)返回小波分解结构[C,L]经过向量N中指定的细节系数置0后的小波分解向量NC。

格式(3)返回小波分解结构[C,L]经过近似系数置0后的小波分解向量NC。

格式(4)返回小波分解结构[C,L]经过将向量N作阈值处理后的小波分解向量NC。

如果SORH=’s‘,则为软阈值;如果SORH='h'则为硬阈值。

N包含细节的尺度向量,T是N相对应的阈值向量。

N和T的长度必须相等。

wpdencmp函数

调用格式:

[XD,TREED,PERF0,PERFL2]=wpdencmp(X,SORH,N,'wname',CRIT,PAR,KEEPAPP)

[XD,TREED,PERF0,PERFL2]=wpdencmp(TREE,SORH,CRIT,PAR,KEEPAPP)

函数wpdencmp用于使用小波包变换进行信号的压缩或去噪。

格式

(1)返回输入信号X(一维或二维)的去噪或压缩后的信号XD。

输出参数TREED是XD的最佳小波包分解树;

PERFL2和PERF0是恢复和压缩L2的能量百分比。

PERFL2=100*(X的小波包系数范数/X的小波包系数)^2;如果X是一维信号,小波wname是一个正交小波,则PERFL2=100*||XD||^2/||X||^2。

SORH的取值为's'或'h',表示的是软阈值或硬阈值。

输入参数N是小波包的分解层数,wname是包含小波名的字符串。

函数使用由字符串CRIT定义的熵和阈值参数PAR实现最佳分解。

如果KEEPAPP=1,则近似信号的小波系数不进行阈值量化;否则,进行阈值量化。

格式

(2)与格式

(1)的输出参数相同,输入选项也相同,只是它从信号的小波包分解树TREE进行去噪或压缩。

实例:

loadnoisdopp;

x=noisdopp;

%给出全局阈值

[thr,sorh,keepapp]=ddencmp('den','wv',x);

%根据全局阈值对信号降噪

xc=wdencmp('gbl',x,'sym4',2,thr,sorh,keepapp);

[c,l]=wavedec(x,2,'sym4');

[thr1,nkeep]=wdcbm(c,l,3);

xc1=wdencmp('lvd',c,l,'sym4',2,thr1,'s');

subplot(311);plot(x);title('原始信号')

subplot(312);plot(xc);title('使用全局阈值降噪后的信号');

subplot(313);plot(xc1);title('使用分层阈值降噪后的信号');

loadwoman

%下面进行噪声的产生

init=3;

rand('seed',init);

Xn=X+18*(rand(size(X)));

%下面进行图像的去噪处理

[thr,sorh,keepapp]=ddencmp('den','wv',Xn);

Xd=wdencmp('gbl',Xn,'sym5',2,thr,sorh,keepapp);

%用sym5小波对图像信号进行二层的小波分解

[c,s]=wavedec2(X,2,'sym5');

[thr1,nkeep1]=wdcbm2(c,s,1.5);

Xd1=wdencmp('lvd',c,s,'sym5',2,thr1,'s');

%显示图像

subplot(221);image(X);colormap(map);title('原始图像X');axissquare

subplot(222);image(Xn);colormap(map);title('含噪声的图像');axissquare

subplot(223);image(Xd);colormap(map);title('去噪后的图像');axissquare

subplot(224);image(Xd1);colormap(map);title('分层去噪后的图像');axissquare

二、小波变换函数

单尺度一维小波变换

cwt一维连续小波变换

调用格式:

coefs=cwt(s,scale,’wname’)【仅给出系数值】

coefs=cwt(s,scale,’wname’,’plot’)【给出系数值同时生成图像】

实例:

loadnoissin;

figure

subplot(121)

plot(noissin);

subplot(122)

c=cwt(noissin,1:

48,'db4','plot');

dwt一维离散小波变换

调用格式:

[cA1,cD1]=dwt(X,’wname’)【使用指定的小波基函数'wname'对信号X进行分解】

[cA1,cD1]=dwt(X,Lo_D,Hi_D)【使用指定的滤波器组Lo_D、Hi_D对信号进行分解】

实例:

loadleleccum;

s=leleccum(1:

3920);

ls=length(s);

[cA,cD]=dwt(s,'db1');

figure

subplot(121)

plot(cA);

subplot(122)

plot(cD)

[Lo_D,Hi_D,Lo_R,Hi_R]=wfilters('db1')

[cA1,cD1]=dwt(s,Lo_D,Hi_D);

figure

subplot(121)

plot(cA1);

subplot(122)

plot(cD1)

idwt一维离散小波逆变换

调用格式:

X=idwt(cA,cD,'wname')

【由近似分量cA和细节分量cD经小波反变换重构原始信号X】

X=idwt(cA,cD,Lo_R,Hi_R)

【用指定的重构滤波器Lo_R和Hi_R经小波反变换重构原始信号X 】

X=idwt(cA,cD,'wname',L)

【指定返回信号X中心附近的L个点】

X=idwt(cA,cD,Lo_R,Hi_R,L)

【与上边一致】

upcoef一维小波系数重构

调用格式:

Y=upcoef(O,X,'wname',N)

Y=upcoef(O,X,'wname',N,L)

Y=upcoef(O,X,Lo_R,Hi_R,N)

Y=upcoef(O,X,Lo_R,Hi_R,N,L)

这一函数是一维小波分解系数的直接重构

它重建的是原信号在指定层次的,高频或者低频分量。

也就是说,这个信号不是原本的信号,而且某个层次上的逼近。

N=1条件下相当与缺省模式的idwt

A1=upcoef('a',cA1,'db1',1,l_s)相当于A1=idwt(cA1,[],'db1',l_s);

D1=upcoef('d',cD1,'db1',1,l_s)相当于D1=idwt([],cD1,'db1',l_s);

而O是一个标识符,O=‘a’低频,O=‘d’高频

N代表了小波系数的级别,是几级小波系数。

L则指定返回信号X中心附近的L个点

例子:

loadleleccum;

s=leleccum(1:

3920);

ls=length(s);

[cA,cD]=dwt(s,'db1');

A1=upcoef('a',cA,'db1',1,ls);D1=upcoef('d',cD,'db1',1,ls);

%A1=idwt(cA,[],'db1',ls);D1=idwt([],cD,'db1',ls);

subplot(1,2,1);plot(A1);title('ApproximationA1')

subplot(1,2,2);plot(D1);title('DetailD1')

多尺度一维小波变换

wavedec多尺度一维分解

调用格式:

[C,L]=wavedec(X,N,’wname’)

[C,L]=wavedec(X,N,Lo_D,Hi_D)

函数返回N层分解的各组分系数C(连接在一个向量里),向量L里返回的是各组分的长度。

分解的结构如下

例子:

loadleleccum;

s=leleccum(1:

3920);

[C,L]=wavedec(s,3,'db1');

subplot(1,2,1);plot(C);title('C')

subplot(1,2,2);plot(L);title('L')

waverec多尺度一维重构

调用格式:

X=waverec(C,L,’wname’)

X=waverec(C,L,Lo_R,Hi_R)

实例:

loadleleccum;

s=leleccum(1:

3920);

[C,L]=wavedec(s,3,'db1');

A0=waverec(C,L,'db1');

Err=abs(s-A0);

figure

(1)

subplot(3,1,1);

plot(s);title('originals');

subplot(3,1,2);

plot(A0);title('wavereconstructions');

subplot(3,1,3);

plot(Err);title('wavereconstructionerr');

appcoef低频系数提取

调用格式:

A=appcoef(C,L,’wname’,N)从C中抽取N层近似系数

A=appcoef(C,L,’wname’)

A=appcoef(C,L,Lo_R,Hi_R,N)

A=appcoef(C,L,Lo_R,Hi_R)

detcoef高频系数提取

调用格式:

A=detcoef(C,L,N)

A=detcoef(C,L)

实例:

loadleleccum;

s=leleccum(1:

3920);

[C,L]=wavedec(s,3,'db1');

cA3=appcoef(C,L,'db1',3);

cD3=detcoef(C,L,3);

cD2=detcoef(C,L,2);

cD1=detcoef(C,L,1);

subplot(2,2,1);plot(cA3);title('cA3')

subplot(2,2,2);plot(cD3);title('cD3')

subplot(2,2,3);plot(cD2);title('cD2')

subplot(2,2,4);plot(cD1);title('cD1')

wrcoef多尺度小波系数重构

调用格式:

X=wrcoef(‘type’,C,L,’wname’,N)

X=wrcoef(‘type’,C,L,Lo_R,Hi_R,N)

X=wrcoef(‘type’,C,L,’wname’)

X=wrcoef(‘type’,C,L,Lo_R,Hi_R)

其中type=‘a’低频,type=‘d’高频

作用类似于upcoef,只不过是多尺度函数。

实例:

loadleleccum;

s=leleccum(1:

3920);

[C,L]=wavedec(s,3,'db1');

cA3=wrcoef('a',C,L,'db1',3);

cD1=wrcoef('d',C,L,'db1',1);

cD2=w

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2