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