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