日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

代码:小波包分解与重构、小波包能量特征提取

發布時間:2023/12/31 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 代码:小波包分解与重构、小波包能量特征提取 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、小波變換的理解

傅里葉變換——短時傅里葉變換——小波變換。

參考文獻:以下兩篇參考資料講述得十分清楚,有助于理解小波變換。

但具體的數學角度闡述,請參考其他資料。

(1)知乎專欄:形象易懂講解算法I——小波變換

https://zhuanlan.zhihu.com/p/22450818

(2)知乎專欄:傅里葉分析之掐死教程。

https://zhuanlan.zhihu.com/p/19763358


2、小波包分解

小波包是為了克服小波分解在高頻段的頻率分辨率較差,而在低頻段的時間分辨率較差的問題的基礎上而提出的。

它是一種更精細的信號分析的方法,提高了信號的時域分辨率。

下面是兩者的對比圖:


3、能量譜

? ? ? 基于小波包分解提取多尺度空間能量特征的原理是把不同分解尺度上的信號能量求解出來,將這些能量值按尺度順序排列成特征向量供識別使用。

20180510補充更新:具體計算公式如下所示,本文中未使用重構后的系數進行能量值計算,直接使用小波包分解后的系數,參考文獻《基于小波包能量特征的滾動軸承故障監測方法 》。


4、Matlab代碼

給出兩部分代碼,寫成兩個函數。一個是小波包分解與重構,另一個是能量譜函數。

下載地址:https://download.csdn.net/download/ckzhb/10030651

代碼名稱:wavelet_packetdecomposition_reconstruct

function wpt= wavelet_packetdecomposition_reconstruct( x,n,wpname ) %% 對信號進行小波包分解,得到節點的小波包系數。然后對每個節點系數進行重構。 % Decompose x at depth n with wpname wavelet packets.using Shannon entropy. % % x-input signal,列向量。 % n-the number of decomposition layers % wpname-a particular wavelet.type:string. % %Author hubery_zhang %Date 20170714%% wpt=wpdec(x,n,wpname); % Plot wavelet packet tree (binary tree) plot(wpt) %% wavelet packet coefficients.default:use the front 4. cfs0=wpcoef(wpt,[n 0]); cfs1=wpcoef(wpt,[n 1]); cfs2=wpcoef(wpt,[n 2]); cfs3=wpcoef(wpt,[n 3]); figure; subplot(5,1,1); plot(x); title('原始信號'); subplot(5,1,2); plot(cfs0); title(['結點 ',num2str(n) ' 1',' 系數']) subplot(5,1,3); plot(cfs1); title(['結點 ',num2str(n) ' 2',' 系數']) subplot(5,1,4); plot(cfs2); title(['結點 ',num2str(n) ' 3',' 系數']) subplot(5,1,5); plot(cfs3); title(['結點 ',num2str(n) ' 4',' 系數']) %% reconstruct wavelet packet coefficients. rex0=wprcoef(wpt,[n 0]); rex1=wprcoef(wpt,[n 1]); rex2=wprcoef(wpt,[n 2]); rex3=wprcoef(wpt,[n 3]); figure; subplot(5,1,1); plot(x); title('原始信號'); subplot(5,1,2); plot(rex0); title(['重構結點 ',num2str(n) ' 1',' 系數']) subplot(5,1,3); plot(rex1); title(['重構結點 ',num2str(n) ' 2',' 系數']) subplot(5,1,4); plot(rex2); title(['重構結點 ',num2str(n) ' 3',' 系數']) subplot(5,1,5); plot(rex3); title(['重構結點 ',num2str(n) ' 4',' 系數']) end
代碼名稱:wavelet_energy_spectrum

function E = wavelet_energy_spectrum( wpt,n ) %% 計算每一層每一個節點的能量 % wpt-wavelet packet tree % n-第n層能量 % % Author hubery_zhang % Date 20170714%% % 求第n層第i個節點的系數 E(1:2^n )=0; for i=1:2^n E(i) = norm(wpcoef(wpt,[n,i-1]),2)^2; %20180604更新 原代碼:E(i) = norm(wpcoef(wpt,[n,i-1]),2) end %求每個節點的概率 E_total=sum(E); for i=1:2^n p_node(i)= 100*E(i)/E_total; end % E = wenergy(wpt); only get the last layer figure; x=1:2^n; bar(x,p_node); title(['第',num2str(n),'層']); axis([0 2^n 0 100]); xlabel('結點'); ylabel('能量百分比/%'); for j=1:2^n text(x(j),p_node(i),num2str(p_node(j),'%0.2f'),...'HorizontalAlignment','center',...'VerticalAlignment','bottom') endend


總結

以上是生活随笔為你收集整理的代码:小波包分解与重构、小波包能量特征提取的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。