%首先对信号进行小波或者小波包去燥,然后对去燥信号作3层小波包分解,并且利用第三层各节点系数重构信号%,利用Hilbert变换分别对第三%层8个节点重构信号求取包络,求取包络信号的能量熵作为特征熵向量,或者小波%包分解后直接求取各频带的能量占总能量的百分比。
fs=10000;
N=10016;
t=0:1/fs:(N-1)/fs;
x=load('C:\Users\Administrator\Desktop\ceshi.txt');
%小波包去燥
figure(1)
subplot(211) %分区域绘图,这个只是分区域的指令,而非绘图指令。
plot(x);
title('原始信号的波形图')
[thr1,sorh1,keepapp1,crit]=ddencmp('den','wp',x);% 获取信号默认值,den为信号去燥,wp为小波分解,x%为信号
x1=wpdencmp(x,'h',4,'sym4','sure',thr1,1);%h为硬阈值,4为分解层数,sym4为小波基,sure为熵函数类型%=crit,thr1为函数选择的阈%=thr1,1=keepapp1.
subplot(212);plot(x1);title('小波包降噪信号');
axis tight;
%小波包分解重构
wpt=wpdec(x1,3,'db1','shannon'); %%进行小波包分解,shannon表示分解所选取的熵值分别提取第三层从低频%到高频8个频率成分的信号特征
%plot(wpt);对三层小波包分解系数进行重构,wpt表示被重构的信号,[3,0]表示所重构的节点。
s130=wprcoef(wpt,[3,0]);
s131=wprcoef(wpt,[3,1]);
s132=wprcoef(wpt,[3,2]);
s133=wprcoef(wpt,[3,3]);
s134=wprcoef(wpt,[3,4]);
s135=wprcoef(wpt,[3,5]);
s136=wprcoef(wpt,[3,6]);
s137=wprcoef(wpt,[3,7]);
%去燥信号的三层小波包分解重构后的图形
figure(2)
subplot(4,2,1);plot(s130); ylabel('S130');
subplot(4,2,2);plot(s131); ylabel('S131');
subplot(4,2,3);plot(s132); ylabel('S132');
subplot(4,2,4);plot(s133); ylabel('S133');
subplot(4,2,5);plot(s134); ylabel('S134');
subplot(4,2,6);plot(s135); ylabel('S135');
subplot(4,2,7);plot(s136); ylabel('S136');
subplot(4,2,8);plot(s137); ylabel('S137');
%对第3层8个节点重构信号求取包络
figure(3)
[upperenv1 lowerenv1]=envelope(s130);
subplot(421);plot(t,upperenv1,'g');%上包络
[upperenv2 lowerenv2]=envelope(s131);
subplot(422);plot(t,upperenv2,'g');%上包络
[upperenv3 lowerenv3]=envelope(s132);
subplot(423);plot(t,upperenv3,'g');%上包络
[upperenv4 lowerenv4]=envelope(s133);
subplot(424);plot(t,upperenv4,'g');%上包络
[upperenv5 lowerenv5]=envelope(s134);
subplot(425);plot(t,upperenv5,'g');%上包络
[upperenv6 lowerenv6]=envelope(s135);
subplot(426);plot(t,upperenv6,'g');%上包络
[upperenv7 lowerenv7]=envelope(s136);
subplot(427);plot(t,upperenv7,'g');%上包络
[upperenv8 lowerenv8]=envelope(s137);
subplot(428);plot(t,upperenv8,'g');%上包络
%求取各节点(频带)能量占总能量的百分比
Es130=sum(s130.^2,2);
Es131=sum(s131.^2,2);
Es132=sum(s132.^2,2);
Es133=sum(s133.^2,2);
Es134=sum(s134.^2,2);
Es135=sum(s135.^2,2);
Es136=sum(s136.^2,2);
Es137=sum(s137.^2,2);
disp('各节点能量');
disp(['Es130=']);disp(Es130);
disp(['Es131=']);disp(Es131);
disp(['Es132=']);disp(Es132);
disp(['Es133=']);disp(Es133);
disp(['Es134=']);disp(Es134);
disp(['Es135=']);disp(Es135);
disp(['Es136=']);disp(Es136);
disp(['Es137=']);disp(Es137);
sumE=Es130+Es131+Es132+Es133+Es134+Es135+Es136+Es137;
disp(['节点总能量']);disp(sumE);
%各节点能量的百分比
pEs130=Es130/sumE;disp(['节点(3,0)的能量百分比']);disp(pEs130);
pEs131=Es131/sumE;disp(['节点(3,1)的能量百分比']);disp(pEs131);
pEs132=Es132/sumE;disp(['节点(3,2)的能量百分比']);disp(pEs132);
pEs133=Es133/sumE;disp(['节点(3,3)的能量百分比']);disp(pEs133);
pEs134=Es134/sumE;disp(['节点(3,4)的能量百分比']);disp(pEs134);
pEs135=Es135/sumE;disp(['节点(3,5)的能量百分比']);disp(pEs135);
pEs136=Es136/sumE;disp(['节点(3,6)的能量百分比']);disp(pEs136);
pEs137=Es137/sumE;disp(['节点(3,7)的能量百分比']);disp(pEs137);
E(1)=pEs130;E(2)=pEs131;E(3)=pEs132;E(4)=pEs133;E(5)=pEs134;E(6)=pEs135;E(7)=pEs136;E(8)=pEs137;
for i=1:8
p(i)=E(i);
end
figure(4)
title('能量百分比概率分布图像');bar(p);
%求取各包络信号的特征熵,怎么分段,时域振动时间等分or积分能量等分
%每个包络信号为10016个数据,按时间划分为15段,求其能量熵
Eupperenv11=sum(upperenv1(1:667).^2,2);
Eupperenv12=sum(upperenv1(667:1334).^2,2);
Eupperenv13=sum(upperenv1(1334:2001).^2,2);
Eupperenv14=sum(upperenv1(2001:2668).^2,2);
Eupperenv15=sum(upperenv1(2668:3335).^2,2);
Eupperenv16=sum(upperenv1(3335:4002).^2,2);
Eupperenv17=sum(upperenv1(4002:4669).^2,2);
Eupperenv18=sum(upperenv1(4669:5336).^2,2);
Eupperenv19=sum(upperenv1(5336:6003).^2,2);
Eupperenv110=sum(upperenv1(6003:6670).^2,2);
Eupperenv111=sum(upperenv1(6670:7337).^2,2);
Eupperenv112=sum(upperenv1(7337:8004).^2,2);
Eupperenv113=sum(upperenv1(8004:8671).^2,2);
Eupperenv114=sum(upperenv1(8671:9338).^2,2);
Eupperenv115=sum(upperenv1(9338:10016).^2,2);
%求取包络总能量
Eupperenv1=sum(upperenv1.^2,2);
q(1)=Eupperenv11;q(2)=Eupperenv12;q(3)=Eupperenv13;q(4)=Eupperenv14;q(5)=Eupperenv15;q(6)=Eupperenv16;
q(7)=Eupperenv17;q(8)=Eupperenv18;q(9)=Eupperenv19;q(10)=Eupperenv110;q(11)=Eupperenv111;q(12)=Eupperenv112;
q(13)=Eupperenv113;q(14)=Eupperenv114;q(15)=Eupperenv115;
for j=1:15
v(j)=q(j)/Eupperenv1;
HE(j)=-sum(v(j).*log(v(j)));
end
disp('EMD能量熵=%.4f');
disp(HE(1:15));
HEupperenv1=sum(HE(1:15))
Eupperenv51=sum(upperenv5(1:667).^2,2);
Eupperenv52=sum(upperenv5(667:1334).^2,2);
Eupperenv53=sum(upperenv5(1334:2001).^2,2);
Eupperenv54=sum(upperenv5(2001:2668).^2,2);
Eupperenv55=sum(upperenv5(2668:3335).^2,2);
Eupperenv56=sum(upperenv5(3335:4002).^2,2);
Eupperenv57=sum(upperenv5(4002:4669).^2,2);
Eupperenv58=sum(upperenv5(4669:5336).^2,2);
Eupperenv59=sum(upperenv5(5336:6003).^2,2);
Eupperenv510=sum(upperenv5(6003:6670).^2,2);
Eupperenv511=sum(upperenv5(6670:7337).^2,2);
Eupperenv512=sum(upperenv5(7337:8004).^2,2);
Eupperenv513=sum(upperenv5(8004:8671).^2,2);
Eupperenv514=sum(upperenv5(8671:9338).^2,2);
Eupperenv515=sum(upperenv5(9338:10016).^2,2);
%求取包络总能量
Eupperenv5=sum(upperenv5.^2,2);
q(1)=Eupperenv51;q(2)=Eupperenv52;q(3)=Eupperenv53;q(4)=Eupperenv54;q(5)=Eupperenv55;q(6)=Eupperenv56;
q(7)=Eupperenv57;q(8)=Eupperenv58;q(9)=Eupperenv59;q(10)=Eupperenv510;q(11)=Eupperenv511;q(12)=Eupperenv512;
q(13)=Eupperenv513;q(14)=Eupperenv514;q(15)=Eupperenv515;
for j=1:15
v(j)=q(j)/Eupperenv5;
HE(j)=-sum(v(j).*log(v(j)));
end
disp('EMD能量熵=%.4f');
disp(HE(1:15));
HEupperenv5=sum(HE(1:15))
评论0