本文目錄一覽:
- 1、小波包分解
- 2、python如何實現類似matlab的小波濾波?
- 3、大家好 我想請問下小波包分解後用wprcoef重構小波包係數有什麼用呢?
- 4、小波包雙尺度函數的數學表達
- 5、Python的pywavelet如何實現 matlab的小波演算法係數重構的信號,matlab演算法如下
- 6、小波包分解,重構的波形與實際波形相差太大是什麼問題。
小波包分解
1.裝載信號
在MATLAB命令行中輸入
load noisbloc
s=noisbloc(1:1024);
ls=length(s);
plot(s);
2.完成信號的單尺度一維離散小波分解
採用db4基本小波分解信號
在命令窗口中輸入
[cA1,cD1]=dwt(s,’db4′);
這就產生了低頻係數cA1和高頻係數cD1。
可以通過whos命令查看cA1和cD1的長度:
whos
Name Size Bytes Class
cA1 1×515 4120 double array
cD1 1×515 4120 double array
ls 1×1 8 double array
noisbloc 1×1024 8192 double array
s 1×1024 8192 double array
Grand total is 3079 elements using 24632 bytes
3.從係數中重構低頻部分和高頻部分
從第二步產生的係數cA1和cD1構造第一層的低頻和高頻(A1和D1)係數;
A1=upcoef(‘a’,cA1,’db4′,1,ls);
D1=upcoef(‘a’,cD1,’db4′,1,ls);
或用下面兩個函數:
A1=idwt(cA1,[],’db4′,ls);
D1=idwt(cD1,[],’db4′,ls);
4.顯示高頻和低頻部分
為了顯示第一層分解結果,輸入
subplot(211); plot(A1); title(‘低頻A1’);
subplot(212); plot(D1); title(‘低頻D1’);
5.由小波逆變換恢複信號
使用idwt函數很容易實現,在命令窗口輸入
subplot(211); plot(s); title(‘原始信號’);
subplot(212); plot(A0); title(‘重構信號’);
6.多層一維分解
為了完成一個5層的分解,輸入:
[C,L]=wavedec(s,5,’db4′);
7.提取係數的低頻和高頻部分
為了從上面的C中提取第3層的低頻係數,輸入:
cA3=appcoef(C,L,’db4′,3);
8.重構第3層的低頻係數
為了從上面的C中重構第3層的低頻係數,輸入:
A3=wrcoef(‘a’,C,L,’db4′,3);
9.重構第1、2、3、4、5層的高頻信號
其方法是:
cA5=appcoef(C,L,’db4′,5);
A5=wrcoef(‘a’,C,L,’db4′,5);
D1=wrcoef(‘d’,C,L,’db4′,1);
D2=wrcoef(‘d’,C,L,’db4′,2);
D3=wrcoef(‘d’,C,L,’db4′,3);
D4=wrcoef(‘d’,C,L,’db4′,4);
D5=wrcoef(‘d’,C,L,’db4′,5);
下面顯示多尺度一維分解的結果:
subplot(322); plot(D1); title(‘低頻D1’);
subplot(323); plot(D2); title(‘低頻D2’);
subplot(323); plot(D3); title(‘低頻D3’);
subplot(325); plot(A5); title(‘低頻D4’);
subplot(326); plot(A5); title(‘低頻D5’);
10.重構原始信號並顯示
A0=waverec(C,L,’db4′);
subplot(311); plot(s); title(‘原始信號’);
subplot(312); plot(A0); title(‘重構信號’);
subplot(313); plot(s-A0); title(‘誤差信號’);
python如何實現類似matlab的小波濾波?
T=wpdec(y,5,’db40′);
%信號y進行波包解層數5T波樹plot看
a10=wprcoef(T,[1,0]);
%a10節點[1,0]進行重構信號貌似沒層重構說吧能某層某節點進行重構節點編號波樹
%以下為濾波程序(主要調節參數c的大小)
c=10;
wn=0.1;
fs=50000; %採樣頻率;
b=fir1(c,wn/(fs/2),hamming(c+1));
y1=filtfilt(b,1,y);%對y濾波。
大家好 我想請問下小波包分解後用wprcoef重構小波包係數有什麼用呢?
wprcoef是某個節點的小波包係數重構,用來得到的是和原信號一樣長度的信號
小波包雙尺度函數的數學表達
小波包(WP)是由Coifman et al.在小波變換的基礎上提出的。小波包變換不僅對低頻分量進行分解,而且對高頻部分提供更精細的分解,能夠更為精確地確定信號所包含的頻率成分,是一種更廣泛的小波分解方法(孫煜等,2005;王雲松等,2005)。
4.1.2.1 小波包變換的數學定義
小波包分解是建立在多解析度分析的基礎上。在多解析度的小波分析中,平方可積空間 表明其小波分析是按照不同的尺度因子j把L2(R)分解為所有子空間Wj(j∈Z)的正交和。其中Wj為小波函數ψ(t)的閉包(小波子空間)。進一步對小波子空間Wj按照二進位進行頻率細分可達到提高頻率解析度的目的。一種自然做法是將尺度空間Vj和小波子空間Wj用一個新的子空間 統一起來表徵(楊超等,2004),令
高光譜遙感影像信息提取技術
,j∈Z,則正交分解Vj+1=Vj⊕Wj,即 得統一分解為
高光譜遙感影像信息提取技術
定義子空間 是函數μn(t)的閉包子空間,而 是函數μ2n(t)的閉包子空間,定義下面的遞推子關係,並令μn(t)滿足遞推子關係的雙尺度方程(Coifman et al.,1992;孫煜等,2005;王雲松等,2005):
高光譜遙感影像信息提取技術
式中:遞歸定義的函數μn(n=1,2,…)稱為由正交尺度函數μ0(t)=ψ(t)確定的小波包。其中,hk、gk、(k∈Z)分別稱為低通濾波係數和高通濾波係數。gk=(-1)kh1-k,即兩係數也具有正交關係。而當n=0時,μ0(t)=ψ(t),μ1(t)=ψ(t),由上式得到:
高光譜遙感影像信息提取技術
式中:μ0(t)和μ1(t)分別為尺度函數和小波函數的雙尺度方程。顯然μ0(t)和μ1(t)分別退化為尺度函數ψ(t)和小波基函數ψ(t)。序列 {μn(t)}(n∈Z+)稱為由正交尺度函數μ0(t)=ψ(t)確定的小波包,或稱序列 {μn(t)}為關於序列{hk}的正交小波包。
對任意非負整數n∈Z+和任一整數j∈Z,令 表示由小波包μn的二進伸縮和平移的線性組合合成的L2(R)的閉子空間,則:
高光譜遙感影像信息提取技術
式中:{Vj}是由尺度函數U0=ψ生成的L2(R)的多分辨分析;{Wj}是由小波U1=ψ生成的正交小波子空間序列。
4.1.2.2 小波包的空間分解與重構演算法
根據尺度函數μ0(t)=ψ(t)和小波函數μ1(t)=ψ(t),利用式(4.2)、式(4.3)可得到如下空間分解:
高光譜遙感影像信息提取技術
令 {μn(t)}n∈z是關於低通濾波係數hk的小波包族,用下式生成子空間族。令n=1,2,…;j=1,2,…,並對上式作迭代分解,得Wj的分解(圖4.2),有:
圖4.2 小波空間的小波包子空間完全分解示意圖
高光譜遙感影像信息提取技術
在實際應用中,通常關心的是L2(R)的某個子空間 的小波分解和小波包分解(Wu Yet al.,1996)。小波包分解有如圖4.2的分解關係。 可以有不同的分解,對應的VL中的信號f(t)∈VL可以用不同的基的組合來表示,通常以信息代價函數為標準,選取該信號的最優表示。信息代價函數有不同的定義,但它必須能反映出將信號(或函數)在這組基下展開時所需要的計算量和存儲量等花費。
記信號f(t)在子空間 上的小波包係數分別為 且l2為L2(R)的平方可積離散序列空間,則由小波包的定義及式(4.6)可得如下的小波包快速分解與重構演算法。小波包分解演算法:
高光譜遙感影像信息提取技術
在對高光譜影像進行小波包分解以及對影像分解係數進行處理之後,就要恢復成處理結果的圖像。小波包變換的重構運算就是小波包分解的逆運算,是將處理後頻率域內的係數重新合成時域圖像。小波包重構演算法:
高光譜遙感影像信息提取技術
式中:hk-2l,gk-2l分別稱為低通濾波係數和高通濾波係數。
Python的pywavelet如何實現 matlab的小波演算法係數重構的信號,matlab演算法如下
T=wpdec(y,5,’db40′);
%信號y進行波包解層數5T波樹plot看
a10=wprcoef(T,[1,0]);
%a10節點[1,0]進行重構信號貌似沒層重構說吧能某層某節點進行重構節點編號波樹看
小波包分解,重構的波形與實際波形相差太大是什麼問題。
瞅你這圖,分解時貌似用滴是db1(即haar)小波吧,用滴是wprcoef函數的那個格式,即6階逼近的單支重構,其意義是除掉原信號中其它63個相對高頻頻段的信息所剩下的單支重構逼近信息,你都除掉了那麼多信息了為啥還會與原信號相差不大?還有像正餘弦這樣規律和平滑的函數為啥用最不光滑的db1處理?
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/155174.html