Matlab小波包分解后如何求各频带信号的能量值?
生活随笔
收集整理的這篇文章主要介紹了
Matlab小波包分解后如何求各频带信号的能量值?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
| clear; clc; n=3; wpname='db3'; % [b,a]=butter(8,[5/100 99/100]); % load a1_1-1; load k301_1-4; % Data=filter(b,a,Data); Data=Data-mean(Data); Data=detrend(Data); wpt1=wpdec(Data,n,wpname); %對數據進行小波包分解 for i=1:2^n %wpcoef(wpt1,[n,i-1])是求第n層第i個節點的系數 E(i)=norm(wpcoef(wpt1,[n,i-1]),2);%求第i個節點的范數平方,其實也就是平方和 end % disp('每個節點的能量E(i)'); % E % disp('小波包分解總能量E_total'); E_total=sum(E); %求總能量 for i=1:2^n pfir(i)= E(i)/E_total;%求每個節點的概率 end pfir % load a1_1-2; load k302_1-4; % Data=filter(b,a,Data); Data=Data-mean(Data); Data=detrend(Data); wpt2=wpdec(Data,n,wpname); %對數據進行小波包分解 for i=1:2^n %wpcoef(wpt1,[n,i-1])是求第n層第i個節點的系數 E(i)=norm(wpcoef(wpt2,[n,i-1]),2);%求第i個節點的范數平方,其實也就是平方和 end E_total=sum(E); %求總能量 for i=1:2^n psec(i)= E(i)/E_total;%求每個節點的概率 end psec % load a1_1-4; load k303_1-4; % Data=filter(b,a,Data); Data=Data-mean(Data); Data=detrend(Data); wpt3=wpdec(Data,n,wpname); %對數據進行小波包分解 for i=1:2^n %wpcoef(wpt1,[n,i-1])是求第n層第i個節點的系數 E(i)=norm(wpcoef(wpt3,[n,i-1]),2);%求第i個節點的范數平方,其實也就是平方和 end E_total=sum(E); %求總能量 for i=1:2^n pthi(i)= E(i)/E_total;%求每個節點的概率 end pthi |
格式:
y = detrend(x) % 消除時間序列中的線性趨勢項
y = detrend(x,'constant') % 消除時間序列中的均值
y = detrend(x,'linear',bp) % 分段消除時間序列中的線性趨勢項,bp為分段點向量
如
detrend的一個實例 sig = [0 1 -2 1 0 1 -2 1 0]; % 無線性趨勢的信號
trend = [0 1 2 3 4 3 2 1 0]; % 有兩段線性的趨勢
x = sig+trend; % 將上面趨勢疊加到信號上
y = detrend(x,'linear',5) % 根據指定的分段點去除兩段線性趨勢
y =
? ?-0.0000 ? ?1.0000 ? -2.0000 ? ?1.0000 ? ? ? ? 0 ? ?1.0000 ? -2.0000 ? ?1.0000 ? ?0.0000
總結
以上是生活随笔為你收集整理的Matlab小波包分解后如何求各频带信号的能量值?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 部署thinkphp5框架的php,三、
- 下一篇: bar