天天看點

小波工具函數詳解

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

繼續閱讀