python小波包重構,python小波包分解

本文目錄一覽:

小波包分解

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-hant/n/155174.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-17 02:38
下一篇 2024-11-17 02:38

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論