hht变换 下载本文

clc;clear;

load('IR007_0.mat'); fs=12000; N=1024;

t=1/12000:1/12000:N/12000; x=X105_DE_time(1:1024,1)'; %EMD分解,展示各imf分量

imf=emd(x); x1=imf(1,:); x2=imf(2,:); x3=imf(3,:); x4=imf(4,:); x5=imf(5,:); x6=imf(6,:); x7=imf(7,:); x8=imf(8,:); x9=imf(9,:); figure(1);

subplot(4,1,1);plot(t,x1),title('imf1'); subplot(4,1,2);plot(t,x2),title('imf2'); subplot(4,1,3);plot(t,x3),title('imf3'); subplot(4,1,4);plot(t,x4),title('imf4'); xlabel('时间(time)t/s'),ylabel('幅值/mm'); figure(2);

subplot(5,1,1);plot(t,x5),title('imf5'); subplot(5,1,2);plot(t,x6),title('imf6'); subplot(5,1,3);plot(t,x7),title('imf7'); subplot(5,1,4);plot(t,x8),title('imf8'); subplot(5,1,5);plot(t,x9),title('res');

xlabel('时间(time)t/s'),ylabel('幅值/mm');

%计算imf的行列维数

[m,n]=size(imf);

for i=1:m-1

%-------------------------------------------------------------------- %计算各IMF的方差贡献率

%定义:方差为平方的均值减去均值的平方 %均值的平方

%imfp2=mean(c(i,:),2).^2 %平方的均值

%imf2p=mean(c(i,:).^2,2)

%各个IMF的方差

mse(i)=mean(imf(i,:).^2,2)-mean(imf(i,:),2).^2; end;

mmse=sum(mse);%总的方差 for i=1:m-1

%方差百分比,也就是方差贡献率

mseb(i)=mse(i)/mmse*100; end;

figure(3);

bar([1:m-1],mseb);%可以改进,最好能做出柱状图 title('各imf分量的方差贡献率'); xlabel('方差'),ylabel('百分比');

%原始信号的Hilbert变换 hx=hilbert(x);

xr=real(hx);xi=imag(hx); %计算瞬时振幅

A=sqrt(xr.^2+xi.^2);

figure(4);plot(t,A);title('瞬时振幅') %计算瞬时相位

P=angle(hx);

figure(5);plot(t,P);title('瞬时相位') %计算瞬时频率

dt=diff(t); dx=diff(P); sp=dx./dt;

figure(6);plot(t(1:N-1),sp);title('瞬时频率')

%imf1的Hilbert变换 xn1=hilbert(imf(1,:)); xr1=real(xn1); xi1=imag(xn1); %imf1的瞬时振幅

A1=sqrt(xr1.^2+xi1.^2); figure(7);

subplot(2,1,1);plot(t,A1);

xlabel('时间(t)');ylabel('瞬时振幅');title('imf1') %imf2的Hilbert变换 xn2=hilbert(imf(2,:)); xr2=real(xn2); xi2=imag(xn2); %imf2的瞬时振幅 A2=sqrt(xr2.^2+xi2.^2);

subplot(2,1,2);plot(t,A2);

xlabel('时间(t)');ylabel('瞬时振幅');title('imf2') %imf1的瞬时相位

P1=atan2(xi1,xr1); figure(8);

subplot(2,1,1);plot(t,P1);

xlabel('时间(t)'); ylabel('瞬时相位');title('imf1') %imf2的瞬时相位

P2=atan2(xi2,xr2);

subplot(2,1,2);plot(t,P2);www.hunanwang.net xlabel('时间(t)'); ylabel('瞬时相位');title('imf2') %imf1瞬时频率

xh1=unwrap(P1); fs=1000;

xhd1=fs*diff(xh1)/(2*pi); figure(9);

subplot(2,1,1);plot(t(1:1023),xhd1);

xlabel('时间(t)');ylabel('瞬时频率');title('imf1') %imf2瞬时频率

xh2=unwrap(P2); fs=1000;

xhd2=fs*diff(xh2)/(2*pi);

subplot(2,1,2);plot(t(1:1023),xhd2); www.visa158.com xlabel('时间(t)');ylabel('瞬时频率');title('imf2')

%计算HHT的时频谱

[A, fa, tt] = hhspectrum(imf); if size(imf,1) > 1

[A,fa,tt] = hhspectrum(imf(1:end-1, :)); else

[A,fa,tt] = hhspectrum(imf); end

[E,tt1]=toimage(A,fa,tt,length(tt));

disp_hhs(E,[],fs) %二维图形显示HHT视频谱,E是求得的HHT谱

for i=1:m-1 faa=fa(i,:);

[FA,TT1]=meshgrid(faa,tt1);%三维图显示HHT时频图 figure(11); surf(FA,TT1,E)

title('HHT时频谱三维显示')www.sm136.com end

%画边际谱