小波变换 matlab 总结Word文档格式.docx
- 文档编号:22638414
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:78
- 大小:4.87MB
小波变换 matlab 总结Word文档格式.docx
《小波变换 matlab 总结Word文档格式.docx》由会员分享,可在线阅读,更多相关《小波变换 matlab 总结Word文档格式.docx(78页珍藏版)》请在冰豆网上搜索。
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('
)
计算对应小波的滤波器。
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'
时,做行编码;
col'
时,做列编码,
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'
,'
表示进行去噪,'
表示进行压缩;
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('
'
x);
输出:
thr=3.8593
sorh=s
keepapp=1
thselect函数
调用格式如下:
THR=thselect(X,TPTR);
根据字符串TPTR定义的阈值选择规则来选择信号X的自适应阈值。
自适应阈值的选择规则包括以下四种:
*TPTR='
rigrsure'
,自适应阈值选择使用Stein的无偏风险估计原理。
heursure'
,使用启发式阈值选择。
sqtwolog'
,阈值等于sqrt(2*log(length(X))).
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,'
(2)[XD,CXD,LXD]=wden(C,L,TPTR,SORH,SCAL,N,'
函数wden用于一维信号的自动消噪。
X为原始信号,[C,L]为信号的小波分解,N为小波分解的层数。
THR为阈值选择规则:
SORH是软阈值或硬阈值的选择(分别对应'
s'
和'
h'
)。
SCAL指所使用的阈值是否需要重新调整,包含下面三种:
*SCAL='
one'
不调整;
sln'
根据第一层的系数进行噪声层的估计来调整阈值。
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,'
N,THTR,SORH,KEEPAPP);
(2)[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('
lvd'
N,THTR,SORH);
(3)[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('
C,L,'
函数wdencmp用于一维或二维信号的消噪或压缩。
wname是所用的小波函数。
gbl(global的缩写)表示每一层都采用同一个阈值进行处理。
lvd表示每层采用不同的阈值进行处理。
N表示小波分解的层数。
THR为阈值向量,对于格式
(2)和(3)每层都要求有一个阈值,因此阈值向量THR的长度为N。
SORH表示选择软阈值或硬阈值(分别取值为'
),
参数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='
)或硬阈值(如果SORH='
)处理后的信号。
T是阈值。
Y=wthresh(X,'
T)返回的是Y=SIG(X)*(|X|-T)+,即把信号的绝对值与阈值进行比较,小于或等于阈值的点变为零,大于阈值的点为该点值与阈值的差值。
T)返回的是Y=X*1(|X|>
T),即把信号的绝对值和阈值进行比较,小于或等于阈值的点变为零,大于阈值的点保持不变。
一般来说,用硬阈值处理后的信号比用软阈值处理后的信号更粗糙。
wthcoef函数
(1)NC=wthcoef('
d'
C,L,N,P)
(2)NC=wthcoef('
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='
则为硬阈值。
N包含细节的尺度向量,T是N相对应的阈值向量。
N和T的长度必须相等。
wpdencmp函数
[XD,TREED,PERF0,PERFL2]=wpdencmp(X,SORH,N,'
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的取值为'
,表示的是软阈值或硬阈值。
输入参数N是小波包的分解层数,wname是包含小波名的字符串。
函数使用由字符串CRIT定义的熵和阈值参数PAR实现最佳分解。
如果KEEPAPP=1,则近似信号的小波系数不进行阈值量化;
否则,进行阈值量化。
格式
(2)与格式
(1)的输出参数相同,输入选项也相同,只是它从信号的小波包分解树TREE进行去噪或压缩。
实例:
loadnoisdopp;
x=noisdopp;
%给出全局阈值
%根据全局阈值对信号降噪
xc=wdencmp('
x,'
sym4'
2,thr,sorh,keepapp);
[c,l]=wavedec(x,2,'
);
[thr1,nkeep]=wdcbm(c,l,3);
xc1=wdencmp('
c,l,'
2,thr1,'
subplot(311);
plot(x);
title('
原始信号'
subplot(312);
plot(xc);
title('
使用全局阈值降噪后的信号'
subplot(313);
plot(xc1);
使用分层阈值降噪后的信号'
loadwoman
%下面进行噪声的产生
init=3;
rand('
init);
Xn=X+18*(rand(size(X)));
%下面进行图像的去噪处理
Xn);
Xd=wdencmp('
Xn,'
sym5'
%用sym5小波对图像信号进行二层的小波分解
[c,s]=wavedec2(X,2,'
[thr1,nkeep1]=wdcbm2(c,s,1.5);
Xd1=wdencmp('
c,s,'
%显示图像
subplot(221);
image(X);
colormap(map);
原始图像X'
axissquare
subplot(222);
image(Xn);
含噪声的图像'
subplot(223);
image(Xd);
colormap(map);
去噪后的图像'
subplot(224);
image(Xd1);
分层去噪后的图像'
二、小波变换函数
单尺度一维小波变换
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’)
【使用指定的小波基函数'
对信号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'
plot(cA);
plot(cD)
[cA1,cD1]=dwt(s,Lo_D,Hi_D);
plot(cA1);
plot(cD1)
idwt一维离散小波逆变换
X=idwt(cA,cD,'
【由近似分量cA和细节分量cD经小波反变换重构原始信号X】
X=idwt(cA,cD,Lo_R,Hi_R)
【用指定的重构滤波器Lo_R和Hi_R经小波反变换重构原始信号X
】
L)
【指定返回信号X中心附近的L个点】
X=idwt(cA,cD,Lo_R,Hi_R,L)
【与上边一致】
upcoef一维小波系数重构
Y=upcoef(O,X,'
N)
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('
cA1,'
1,l_s)相当于A1=idwt(cA1,[],'
l_s);
D1=upcoef('
cD1,'
1,l_s)相当于D1=idwt([],cD1,'
而O是一个标识符,O=‘a’低频,O=‘d’高频
N代表了小波系数的级别,是几级小波系数。
L则指定返回信号X中心附近的L个点
例子:
A1=upcoef('
cA,'
1,ls);
D1=upcoef('
cD,'
%A1=idwt(cA,[],'
ls);
D1=idwt([],cD,'
subplot(1,2,1);
plot(A1);
ApproximationA1'
subplot(1,2,2);
plot(D1);
DetailD1'
多尺度一维小波变换
wavedec多尺度一维分解
[C,L]=wavedec(X,N,’wname’)
[C,L]=wavedec(X,N,Lo_D,Hi_D)
函数返回N层分解的各组分系数C(连接在一个向量里),向量L里返回的是各组分的长度。
分解的结构如下
[C,L]=wavedec(s,3,'
plot(C);
C'
plot(L);
L'
waverec多尺度一维重构
X=waverec(C,L,’wname’)
X=waverec(C,L,Lo_R,Hi_R)
A0=waverec(C,L,'
Err=abs(s-A0);
figure
(1)
subplot(3,1,1);
plot(s);
originals'
subplot(3,1,2);
plot(A0);
wavereconstructions'
subplot(3,1,3);
plot(Err);
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)
cA3=appcoef(C,L,'
3);
cD3=detcoef(C,L,3);
cD2=detcoef(C,L,2);
cD1=detcoef(C,L,1);
subplot(2,2,1);
plot(cA3);
cA3'
subplot(2,2,2);
plot(cD3);
cD3'
subplot(2,2,3);
plot(cD2);
cD2'
subplot(2,2,4);
plot(cD1);
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,只不过是多尺度函数。
cA3=wrcoef('
cD1=wrcoef('
1);
cD
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 小波变换 matlab 总结 变换