小波工具函数详解

1 一维小波变换的 Matlab 实现

(1) dwt 函数

功能:一维离散小波变换

格式:[cA,cD]=dwt(X,'wname')

[cA,cD]=dwt(X,Lo_D,Hi_D)

说明:[cA,cD]=dwt(X,'wname') 使用指定的小波基函数 'wname' 对信号X 进行分解,cA、cD 分别为近似分量和细节分量;[cA,cD]=dwt(X,Lo_D,Hi_D) 使用指定的滤波器组 Lo_D、Hi_D 对信号进行分解。

(2) idwt 函数

功能:一维离散小波反变换

格式:X=idwt(cA,cD,'wname')

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

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

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

说明:X=idwt(cA,cD,'wname') 由近似分量 cA 和细节分量 cD 经小波反变换重构原始信号 X 。

'wname' 为所选的小波函数

X=idwt(cA,cD,Lo_R,Hi_R) 用指定的重构滤波器 Lo_R 和 Hi_R 经小波反变换重构原始信号 X 。

X=idwt(cA,cD,'wname',L) 和 X=idwt(cA,cD,Lo_R,Hi_R,L) 指定返回信号 X 中心附近的 L 个点。

(3) wavedec函数

功能:单尺度一维小波分解函数

格式:[C,L] = wavedec(X,N,'

wname

');

说明:使用小波基函数 'wname' 对一维信号 X 进行 N 层分解。N必须是正整数

[C,S]=wavedec(X,N,'wname') 使用小波基函数 'wname' 对一维信号 X 进行 N 层分解;

(4) waverec 函数

说明:一维信号的多层小波重构

格式:X=waverec(C,S,'wname')

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

说明:X=waverec2(C,S,'wname')用'wname'小波基函数对多层一维小波分解的结果C、S 重构得原始信号X;X=waverec2(C,S,Lo_R,Hi_R) 使用重构低通和高通滤波器 Lo_R 和 Hi_R 重构原信号。

(5) wavedec2 函数

功能:二维信号的多层小波分解

格式:[C,S]=wavedec2(X,N,'wname')

[C,S]=wavedec2(X,N,Lo_D,Hi_D)

说明:[C,S]=wavedec2(X,N,'wname') 使用小波基函数 'wname' 对二维信号 X 进行 N 层分解;

[C,S]=wavedec2(X,N,Lo_D,Hi_D) 使用指定的分解低通和高通滤波器 Lo_D 和 Hi_D 分解信号 X 。

(6) waverec2 函数

说明:二维信号的多层小波重构

格式: X=waverec2(C,S,'wname')

X=waverec2(C,S,Lo_R,Hi_R)

说明: X=waverec2(C,S,'wname') 由多层二维小波分解的结果 C、S 重构原始信号 X ,

'wname'为使用的小波基函数;

X=waverec2(C,S,Lo_R,Hi_R) 使用重构低通和高通滤波器 Lo_R 和 Hi_R 重构原信号。

Wden函数:一维信号的小波消噪处理

[xd,cxd,lxd]=wden(x,tptr,sorh,scal,n,‘wname’);返回经过小波消噪处理后的信号xd及其小波分解结构。

输入参数tptr为阈值选择标准:

thr1=thselect(x,'rigrsure');%stein无偏估计;

thr2=thselect(x,'heursure');%启发式阈值;

thr3=thselect(x,'sqtwolog');%固定式阈值;

thr4=thselect(x,'minimaxi');%极大极小值阈值;

输出参数sorh为函数选择阈值使用方式:

Sorh=s,为软阈值;

Sorh=h,为硬阈值;

输入参数scal规定了阈值处理随噪声水平的变化:

Scal=one,不随噪声水平变化。

Scal=sln,根据第一层小波分解的噪声水平估计进行调整。

Scal=mln,根据每一层小波分解的噪声水平估计进行调整。

[xd,cxd,lxd]=wden(c,l,tptr,sorh,scal,n,‘wname’);由有噪信号的小波分解结构得到消噪处理后的信号xd,及其小波分解结构。

例:比较不同阈值算法进行信号消噪的处理结果;

r=2055415866;

snr=3;%设置信噪比;

[xref,x]=wnoise(3,11,snr,r);%产生有噪信号;

lev=5;

xdH=wden(x,'heursure','s','sln',lev,'sym6');%heursure阈值信号处理;

xdR=wden(x,'rigrsure','s','sln',lev,'sym6');%rigrsure阈值信号处理;

xdS=wden(x,'sqtwolog','s','sln',lev,'sym6');%sqtwolog阈值信号处理;

xdM=wden(x,'minimaxi','s','sln',lev,'sym6');%minimaxi阈值信号处理;

subplot(3,2,1);

plot(xref);title('原始信号');

axis([1,2048,-10,10]);

subplot(3,2,2);

plot(x);title('有噪信号');

axis([1,2048,-10,10]);

subplot(3,2,3);

plot(xdH);xlabel('heursure阈值消噪处理后的信号');

axis([1,2048,-10,10]);

subplot(3,2,4);

plot(xdR);xlabel('rigrsure阈值消噪处理后的信号');

axis([1,2048,-10,10]);

subplot(3,2,5);

plot(xdS);xlabel('sqtwolog阈值消噪处理后的信号');

axis([1,2048,-10,10]);

subplot(3,2,6);

plot(xdM);xlabel('minimaxi阈值消噪处理后的信号');

Thselect函数:选取用于小波消噪处理的阈值

调用方式

Thr=thselect(x,tptr);根据信号x和阈值选择标准tptr来确定一个消噪处理过程中所采用的自适应阈值。阈值选择标准:

Tptr=rigrsure:使用stein的无偏似然估计原理所得到的自适应阈值。

Tptr=heursure:启发式阈值选择;

Tptr=sqtwolog:固定阈值形式;大小为sqrt(2*lg(length(X)));

Tptr=minimaxi:采用极大极小值原理选择阈值。

阈值的选择规则是基于基本模型y=f(t)+e,其中e是白噪声N(0,1);对于未知的噪声或非白噪声可以重新调节输出阈值。

例:自动生成信号在各个阈值规则下的不同阈值结果。

r=2055415866;

randn('seed',r);

x=randn(1,1000);

thr1=thselect(x,'rigrsure');%stein无偏估计;

thr2=thselect(x,'heursure');%启发式阈值;

thr3=thselect(x,'sqtwolog');%固定式阈值;

thr4=thselect(x,'minimaxi');%极大极小值阈值;

运行结果

thr1 =

1.8065

thr2 =

3.7169

thr3 =

3.7169

thr4 =

2.2163

你可能感兴趣的:(分类识别,编程仿真)