crit(t)
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.
2.信號的閾值去噪
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)
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)
函數wthcoef用于一維信號小波系數的閾值處理。
格式(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的調用格式有以下兩種:
(1)[XD,TREED,PERF0,PERFL2]=wpdencmp(X,SORH,N,'wname',CRIT,PAR,KEEPAPP)
(2)[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進行去噪或壓縮。