小波包分解、重构、去噪与matlab函数使用
小波包分解與重構目錄
- 1 小波包分解、重構原理
- 1.1 小波變換
- 1.2 小波包變換
- 2 小波包使用到的函數(shù)及示例代碼
- 2.1 小波包分解
- 2.1.1 T = wpdec(X,N,'wname')
- 2.1.2 X = wpcoef(T,N)
- 2.2 小波包重構
- 2.2.1 X = wprcoef(T,N)
- 2.2.2 [T,X] = wpjoin(T,N)
- 2.2.3 T = write(T,'cfs',NODE,COEFS)
- 2.2.4 X = wprec(T)
- 2.2.5 原始信號小波包分解后的重構方法
- 2.3 小波包去噪
- 2.3.1 [THR,SORH,KEEPAPP,CRIT] = ddencmp(IN1,IN2,X)
- 2.3.2 [XC,CXC,LXC,PERF0,PERFL2] = wdencmp('gbl',X,'wname',N,THR,SORH,KEEPAPP)
- 參考文獻
1 小波包分解、重構原理
1.1 小波變換
小波變換只對信號的低頻部分做進一步分解,而對高頻部分也即信號的細節(jié)部分不再繼續(xù)分解,所以小波變換能夠很好地表征一大類以低頻信息為主要成分的信號,不能很好地分解和表示包含大量細節(jié)信息(細小邊緣或紋理)的信號,如非平穩(wěn)機械振動信號、遙感圖象、地震信號和生物醫(yī)學信號等。
1.2 小波包變換
小波包變換既可以對低頻部分信號進行分解,也可以對高頻部分進行分解,而且這種分解既無冗余,也無疏漏,所以對包含大量中、高頻信息的信號能夠進行更好的時頻局部化分析。
2 小波包使用到的函數(shù)及示例代碼
以上即是小波包樹,其中節(jié)點的命名規(guī)則是從(1,0)開始,叫1號, (1,1)是2號………依此類推,(3,0)是7號,(3,7)是14號。 每個節(jié)點都有對應的小波包系數(shù),這個系數(shù)決定了頻率的大小,也就是說頻率信息已經(jīng)有了,但是時域信息在哪里呢? 那就是 order。 這個order就是這些節(jié)點的順序,也就是頻率的順序。
2.1 小波包分解
2.1.1 T = wpdec(X,N,‘wname’)
T = wpdec(X,N,‘wname’) 小波分解函數(shù)
T為小波包分解樹,X為待分解信號,N分解層數(shù),'wname’小波基選擇
2.1.2 X = wpcoef(T,N)
X = wpcoef(T,N) 小波包分解系數(shù)函數(shù)
X為返回的小波包系數(shù),T為小波包分解樹,N為小波樹節(jié)點
需要注意的是:小波包節(jié)點系數(shù)的長度等于250,為原始信號長度1000/N = 250。其中N為2^2,為第N層小波包樹的節(jié)點個數(shù)
2.2 小波包重構
2.2.1 X = wprcoef(T,N)
X = wprcoef(T,N) 小波包重構系數(shù)函數(shù)
X為重構后的小波包節(jié)點系數(shù),T為小波包分解樹,N為小波分解節(jié)點數(shù)
需要注意的是:小波重構系數(shù)的信號長度與原始信號長度一致
2.2.2 [T,X] = wpjoin(T,N)
[T,X] = wpjoin(T,N) 用于合并小波包樹的節(jié)點
返回T:為修改后的小波包樹T
返回X:合并后的節(jié)點系數(shù)
T:輸入的小波包數(shù)T
N:為合并的節(jié)點
2.2.3 T = write(T,‘cfs’,NODE,COEFS)
T = write(T,‘cfs’,NODE,COEFS) 將
返回T:修改后的小波包樹
T:輸入的小波包樹
NODE:小波包節(jié)點序號
COEFS:小波包系數(shù)
2.2.4 X = wprec(T)
對于一位小波包分解重構
X = wprec(T) 重組小波包
X:為小波包分解樹
T:重構后的信號
2.2.5 原始信號小波包分解后的重構方法
2.3 小波包去噪
2.3.1 [THR,SORH,KEEPAPP,CRIT] = ddencmp(IN1,IN2,X)
[THR,SORH,KEEPAPP,CRIT] = ddencmp(IN1,IN2,X)
THR是閾值,SORH是閾值函數(shù),KEEPAPP近似系數(shù),CRIT熵的選擇(僅用于小波包)
KEEPAPP:選擇0或1可對近似系數(shù)進行閾值處理
IN1:‘den’ 表示去噪, ‘cmp’ 表示壓縮.
IN2:'wv’用于小波,'wp’用于小波包
X:表示待去噪的信號
下面是小波去噪代碼:
[thr,sorh,keepapp] = ddencmp('den','wv',x); [A,D] = dwt(x,'db1'); noiselev = median(abs(D))/0.6745; thresh = sqrt(2*log(length(x)))*noiselev;2.3.2 [XC,CXC,LXC,PERF0,PERFL2] = wdencmp(‘gbl’,X,‘wname’,N,THR,SORH,KEEPAPP)
[XC,CXC,LXC,PERF0,PERFL2] = wdencmp(‘gbl’ or ‘lvd’,X,‘wname’,N,THR,SORH,KEEPAPP)
返回值XC:
返回值CXC:XC的小波包分解結構
返回值LXC:XC的小波包分解結構
返回值PERF0:恢復L^2的范數(shù)百分比, 是用百分制表明降噪所保留的能量成分
返回值PERFL2:壓縮L^2的范數(shù)百分比, 是用百分制表明壓縮所保留的能量成分
‘gbl’:表示每層都采用同一個閾值進行處理
‘lvd’:對每層采用不同的閾值進行處理
X:輸入的信號
‘wname’:小波基
N:小波分解的層數(shù)
THR:閾值向量的長度
SORH:閾值函數(shù),'s’軟閾值,'h’硬閾值
KEEPAPP:0對低頻近似系數(shù)不進行閾值量化處理;1對低頻近似系數(shù)進行閾值量化處理
參考文獻
1.matlab自帶的help
2. https://blog.csdn.net/cqfdcw/article/details/84995904.
總結
以上是生活随笔為你收集整理的小波包分解、重构、去噪与matlab函数使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对抗机器学习—— 迭代FGSM
- 下一篇: matlab得到小波参数,matlab小