MATLAB中實(shí)現(xiàn)閾值獲取的函數(shù)有ddencmp、thselect、wbmpen和wwdcbm,下面對(duì)它們的用法進(jìn)行簡(jiǎn)單的說(shuō)明。
ddencmp的調(diào)用格式有以下三種:
(1)[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,IN2,X)
(2)[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,'wp',X)
(3)[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,'wv',X)
函數(shù)ddencmp用于獲取信號(hào)在消噪或壓縮過(guò)程中的默認(rèn)閾值。輸入?yún)?shù)X為一維或二維信號(hào);IN1取值為'den'或'cmp','den'表示進(jìn)行去噪,'cmp'表示進(jìn)行壓縮;IN2取值為'wv'或'wp',wv表示選擇小波,wp表示選擇小波包。返回值THR是返回的閾值;SORH是軟閾值或硬閾值選擇參數(shù);KEEPAPP表示保存低頻信號(hào);CRIT是熵名(只在選擇小波包時(shí)使用)。
函數(shù)thselect的調(diào)用格式如下:
THR=thselect(X,TPTR);
THR=thselect(X,TPTR)根據(jù)字符串TPTR定義的閾值選擇規(guī)則來(lái)選擇信號(hào)X的自適應(yīng)閾值。
自適應(yīng)閾值的選擇規(guī)則包括以下四種:
*TPTR='rigrsure',自適應(yīng)閾值選擇使用Stein的無(wú)偏風(fēng)險(xiǎn)估計(jì)原理。
*TPTR='heursure',使用啟發(fā)式閾值選擇。
*TPTR='sqtwolog',閾值等于sqrt(2*log(length(X))).
*TPTR='minimaxi',用極大極小原理選擇閾值。
閾值選擇規(guī)則基于模型 y = f(t) + e,e是高斯白噪聲N(0,1)。
函數(shù)wbmpen的調(diào)用格式如下:
THR=wbmpen(C,L,SIGMA,ALPHA);
THR=wbmpen(C,L,SIGMA,ALPHA)返回去噪的全局閾值THR。THR通過(guò)給定的一種小波系數(shù)選擇規(guī)則計(jì)算得到,小波系數(shù)選擇規(guī)則使用Birge-Massart的處罰算法。{C,L]是進(jìn)行去噪的信號(hào)或圖像的小波分解結(jié)構(gòu);SIGMA是零均值的高斯白噪聲的標(biāo)準(zhǔn)偏差;ALPHA是用于處罰的調(diào)整參數(shù),它必須是一個(gè)大于1的實(shí)數(shù),一般去ALPHA=2。
設(shè)t*使crit(t)=-sum(c(k)^2,k<=t) + 2 * SIGMA^2 * t*(ALPHA+log(n/t))的最小值,其中c(k)是按絕對(duì)值從大到小排列的小波包系數(shù),n是系數(shù)的個(gè)數(shù),則THR=|c(t*)|。
wbmpen(C,L,SIGMA,ALPHA,ARG)計(jì)算閾值并畫(huà)出三條曲線。
2 * SIGMA^2 * t*(ALPHA+log(n/t))
sum(c(k)^2, k<=t)
crit(t)
wdcbm的調(diào)用格式有以下兩種:
(1)[THR,NKEEP]=wdcbm(C,L,ALPHA);
(2)[THR,NKEEP]=wdcbm(C,L,ALPHA,M);
函數(shù)wdcbm是使用Birge-Massart算法獲取一維小波變換的閾值。返回值THR是與尺度無(wú)關(guān)的閾值,NKEEP是系數(shù)的個(gè)數(shù)。[C,L]是要進(jìn)行壓縮或消噪的信號(hào)在j=length(L)-2層的分解結(jié)構(gòu);LAPHA和M必須是大于1的實(shí)數(shù);THR是關(guān)于j的向量,THR(i)是第i層的閾值;NKEEP也是關(guān)于j的向量,NKEEP(i)是第i層的系數(shù)個(gè)數(shù)。一般壓縮時(shí)ALPHA取1.5,去噪時(shí)ALPHA取3.
2.信號(hào)的閾值去噪
MATLAB中實(shí)現(xiàn)信號(hào)的閾值去噪的函數(shù)有wden、wdencmp、wthresh、wthcoef、wpthcoef以及wpdencmp。下面對(duì)它們的用法作簡(jiǎn)單的介紹。
函數(shù)wden的調(diào)用格式有以下兩種:
(1)[XD,CXD,LXD]=wden(X,TPTR,SORH,SCAL,N,'wname')
(2)[XD,CXD,LXD]=wden(C,L,TPTR,SORH,SCAL,N,'wname')
函數(shù)wden用于一維信號(hào)的自動(dòng)消噪。X為原始信號(hào),[C,L]為信號(hào)的小波分解,N為小波分解的層數(shù)。
THR為閾值選擇規(guī)則:
*TPTR='rigrsure',自適應(yīng)閾值選擇使用Stein的無(wú)偏風(fēng)險(xiǎn)估計(jì)原理。
*TPTR='heursure',使用啟發(fā)式閾值選擇。
*TPTR='sqtwolog',閾值等于sqrt(2*log(length(X))).
*TPTR='minimaxi',用極大極小原理選擇閾值。
SORH是軟閾值或硬閾值的選擇(分別對(duì)應(yīng)'s'和'h')。
SCAL指所使用的閾值是否需要重新調(diào)整,包含下面三種:
*SCAL='one' 不調(diào)整;
*SCAL='sln' 根據(jù)第一層的系數(shù)進(jìn)行噪聲層的估計(jì)來(lái)調(diào)整閾值。
*SCAL='mln' 根據(jù)不同的噪聲估計(jì)來(lái)調(diào)整閾值。
XD為消噪后的信號(hào),[CXD,LXD]為消噪后信號(hào)的小波分解結(jié)構(gòu)。格式(1)返回對(duì)信號(hào)X經(jīng)過(guò)N層分解后的小波系數(shù)進(jìn)行閾值處理后的消噪信號(hào)XD和信號(hào)XD的小波分解結(jié)構(gòu)[CXD,LXD]。格式(2)返回參數(shù)與格式(1)相同,但其結(jié)構(gòu)是由直接對(duì)信號(hào)的小波分解結(jié)構(gòu)[C,L]進(jìn)行閾值處理得到的。
函數(shù)wdencmp的調(diào)用格式有以下三種:
(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);
函數(shù)wdencmp用于一維或二維信號(hào)的消噪或壓縮。wname是所用的小波函數(shù),gbl(global的縮寫(xiě))表示每一層都采用同一個(gè)閾值進(jìn)行處理,lvd表示每層采用不同的閾值進(jìn)行處理,N表示小波分解的層數(shù),THR為閾值向量,對(duì)于格式(2)和(3)每層都要求有一個(gè)閾值,因此閾值向量THR的長(zhǎng)度為N,SORH表示選擇軟閾值或硬閾值(分別取值為's'和'h'),參數(shù)KEEPAPP取值為1時(shí),則低頻系數(shù)不進(jìn)行閾值量化,反之,低頻系數(shù)要進(jìn)行閾值量化。XC是要進(jìn)行消噪或壓縮的信號(hào),[CXC,LXC]是XC的小波分解結(jié)構(gòu),PERF0和PERFL2是恢復(fù)或壓縮L^2的范數(shù)百分比。如果[C,L]是X的小波分解結(jié)構(gòu),則PERFL2=100*(CXC向量的范數(shù)/C向量的范數(shù))^2;如果X是一維信號(hào),小波wname是一個(gè)正交小波,則PERFL2=100||XC||^2/||X||^2。
函數(shù)wthresh的調(diào)用格式如下:
Y=wthresh(X,SORH,T)
Y=wthresh(X,SORH,T) 返回輸入向量或矩陣X經(jīng)過(guò)軟閾值(如果SORH='s')或硬閾值(如果SORH='h')處理后的信號(hào)。T是閾值。
Y=wthresh(X,'s',T)返回的是Y=SIG(X)*(|X|-T)+,即把信號(hào)的絕對(duì)值與閾值進(jìn)行比較,小于或等于閾值的點(diǎn)變?yōu)榱?,大于閾值的點(diǎn)為該點(diǎn)值與閾值的差值。
Y=wthresh(X,'h',T)返回的是Y=X*1(|X|>T),即把信號(hào)的絕對(duì)值和閾值進(jìn)行比較,小于或等于閾值的點(diǎn)變?yōu)榱?,大于閾值的點(diǎn)保持不變。一般來(lái)說(shuō),用硬閾值處理后的信號(hào)比用軟閾值處理后的信號(hào)更粗糙。
函數(shù)wthcoef的調(diào)用格式下面四種:
(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)
函數(shù)wthcoef用于一維信號(hào)小波系數(shù)的閾值處理。
格式(1)返回小波分解結(jié)構(gòu)[C,L]經(jīng)向量N和P定義的壓縮率處理后的新的小波分解向量NC,[NC,L]構(gòu)成一個(gè)新的小波分解結(jié)構(gòu)。N包含被壓縮的細(xì)節(jié)向量,P是把較小系數(shù)置0的百分比信息的向量。N和P的長(zhǎng)度必須相同,向量N必須滿(mǎn)足1<=N(i)<=length(L)-2。
格式(2)返回小波分解結(jié)構(gòu)[C,L]經(jīng)過(guò)向量N中指定的細(xì)節(jié)系數(shù)置0后的小波分解向量NC。
格式(3)返回小波分解結(jié)構(gòu)[C,L]經(jīng)過(guò)近似系數(shù)置0后的小波分解向量NC。
格式(4)返回小波分解結(jié)構(gòu)[C,L]經(jīng)過(guò)將向量N作閾值處理后的小波分解向量NC。如果SORH=’s‘,則為軟閾值;如果SORH='h'則為硬閾值。N包含細(xì)節(jié)的尺度向量,T是N相對(duì)應(yīng)的閾值向量。N和T的長(zhǎng)度必須相等。
函數(shù)wpdencmp的調(diào)用格式有以下兩種:
(1)[XD,TREED,PERF0,PERFL2]=wpdencmp(X,SORH,N,'wname',CRIT,PAR,KEEPAPP)
(2)[XD,TREED,PERF0,PERFL2]=wpdencmp(TREE,SORH,CRIT,PAR,KEEPAPP)
函數(shù)wpdencmp用于使用小波包變換進(jìn)行信號(hào)的壓縮或去噪。
格式(1)返回輸入信號(hào)X(一維或二維)的去噪或壓縮后的信號(hào)XD。輸出參數(shù)TREED是XD的最佳小波包分解樹(shù);PERFL2和PERF0是恢復(fù)和壓縮L2的能量百分比。PERFL2=100*(X的小波包系數(shù)范數(shù)/X的小波包系數(shù))^2;如果X是一維信號(hào),小波wname是一個(gè)正交小波,則PERFL2=100*||XD||^2/||X||^2。SORH的取值為's'或'h',表示的是軟閾值或硬閾值。
輸入?yún)?shù)N是小波包的分解層數(shù),wname是包含小波名的字符串。函數(shù)使用由字符串CRIT定義的熵和閾值參數(shù)PAR實(shí)現(xiàn)最佳分解。如果KEEPAPP=1,則近似信號(hào)的小波系數(shù)不進(jìn)行閾值量化;否則,進(jìn)行閾值量化。
格式(2)與格式(1)的輸出參數(shù)相同,輸入選項(xiàng)也相同,只是它從信號(hào)的小波包分解樹(shù)TREE進(jìn)行去噪或壓縮。