《EMD分解的流程图如下(共8页).doc》由会员分享,可在线阅读,更多相关《EMD分解的流程图如下(共8页).doc(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上 用户名 Email1.什么是HHT?HHT就是先将信号进行经验模态分解(EMD分解),然后将分解后的每个IMF分量进行Hilbert变换,得到信号的时频属性的一种时频分析方法。2.EMD分解的步骤。EMD分解的流程图如下:3.实例演示。给定频率分别为10Hz和35Hz的两个正弦信号相叠加的复合信号,采样频率fs=2048Hz的信号,表达式如下:y=5sin(2*pi*10t)+5*sin(2*pi*35t)(1)为了对比,先用fft对求上述信号的幅频和相频曲线。 1. function fftfenxi2. clear;clc;3. N=2048;4. %fft默认
2、计算的信号是从0开始的5. t=linspace(1,2,N);deta=t(2)-t(1);1/deta6. x=5*sin(2*pi*10*t)+5*sin(2*pi*35*t);7. % N1=256;N2=512;w1=0.2*2*pi;w2=0.3*2*pi;w3=0.4*2*pi;8. % x=(t=-200&t-200+N1*deta&t-200+N2*deta&t=200).*sin(w3*t);9. y = x;10. m=0:N-1;11. f=1./(N*deta)*m;%可以查看课本就是这样定义横坐标频率范围的12. %下面计算的Y就是x(t)的傅里叶变换数值13. %
3、Y=exp(i*4*pi*f).*fft(y)%将计算出来的频谱乘以exp(i*4*pi*f)得到频移后-2,2之间的频谱值14. Y=fft(y);15. z=sqrt(Y.*conj(Y);16. plot(f(1:100),z(1:100);17. title(幅频曲线)18. xiangwei=angle(Y);19. figure(2)20. plot(f,xiangwei)21. title(相频曲线)22. figure(3)23. plot(t,y,r)24. %axis(-2,2,0,1.2)25. title(原始信号)复制代码(2)用Hilbert变换直接求该信号的瞬时频
4、率 1. clear;clc;clf;2. %假设待分析的函数是z=t33. N=2048;4. %fft默认计算的信号是从0开始的5. t=linspace(1,2,N);deta=t(2)-t(1);fs=1/deta;6. x=5*sin(2*pi*10*t)+5*sin(2*pi*35*t);7. z=x;8. hx=hilbert(z);9. xr=real(hx);xi=imag(hx);10. %计算瞬时振幅11. sz=sqrt(xr.2+xi.2);12. %计算瞬时相位13. sx=angle(hx);14. %计算瞬时频率15. dt=diff(t);16. dx=dif
5、f(sx);17. sp=dx./dt;18. plot(t(1:N-1),sp)19. title(瞬时频率)20.复制代码小结:傅里叶变换不能得到瞬时频率,即不能得到某个时刻的频率值。Hilbert变换是求取瞬时频率的方法,但如果只用Hilbert变换求出来的瞬时频率也不准确。(出现负频,实际上负频没有意义!)(3)用HHT求取信号的时频谱与边际谱 1. function HHT2. clear;clc;clf;3. N=2048;4. %fft默认计算的信号是从0开始的5. t=linspace(1,2,N);deta=t(2)-t(1);fs=1/deta;6. x=5*sin(2*p
6、i*10*t)+5*sin(2*pi*35*t);7. z=x;8. c=emd(z);9.10. %计算每个IMF分量及最后一个剩余分量residual与原始信号的相关性11. m,n=size(c);12. for i=1:m;13. a=corrcoef(c(i,:),z);14. xg(i)=a(1,2);15. end16. xg;17.18. for i=1:m-119. %-20. %计算各IMF的方差贡献率21. %定义:方差为平方的均值减去均值的平方22. %均值的平方23. %imfp2=mean(c(i,:),2).224. %平方的均值25. %imf2p=mean(c
7、(i,:).2,2)26. %各个IMF的方差27. mse(i)=mean(c(i,:).2,2)-mean(c(i,:),2).2;28. end;29. mmse=sum(mse);30. for i=1:m-131. mse(i)=mean(c(i,:).2,2)-mean(c(i,:),2).2; 32. %方差百分比,也就是方差贡献率33. mseb(i)=mse(i)/mmse*100;34. %显示各个IMF的方差和贡献率35. end;36. %画出每个IMF分量及最后一个剩余分量residual的图形37. figure(1)38. for i=1:m-139. disp(
8、imf,int2str(i) ;disp(mse(i) mseb(i);40. end;41. subplot(m+1,1,1)42. plot(t,z)43. set(gca,fontname,times New Roman)44. set(gca,fontsize,14.0)45. ylabel(signal,Amplitude)46.47. for i=1:m-148. subplot(m+1,1,i+1);49. set(gcf,color,w)50. plot(t,c(i,:),k)51. set(gca,fontname,times New Roman)52. set(gca,fo
9、ntsize,14.0)53. ylabel(imf,int2str(i)54. end55. subplot(m+1,1,m+1);56. set(gcf,color,w)57. plot(t,c(m,:),k)58. set(gca,fontname,times New Roman)59. set(gca,fontsize,14.0)60. ylabel(r,int2str(m-1)61.62. %画出每个IMF分量及剩余分量residual的幅频曲线63. figure(2)64. subplot(m+1,1,1)65. set(gcf,color,w)66. f,z=fftfenxi(
10、t,z);67. plot(f,z,k)68. set(gca,fontname,times New Roman)69. set(gca,fontsize,14.0)70. ylabel(initial signal,int2str(m-1),Amplitude)71.72. for i=1:m-173. subplot(m+1,1,i+1);74. set(gcf,color,w)75. f,z=fftfenxi(t,c(i,:);76. plot(f,z,k)77. set(gca,fontname,times New Roman)78. set(gca,fontsize,14.0)79.
11、 ylabel(imf,int2str(i),Amplitude)80. end81. subplot(m+1,1,m+1);82. set(gcf,color,w)83. f,z=fftfenxi(t,c(m,:);84. plot(f,z,k)85. set(gca,fontname,times New Roman)86. set(gca,fontsize,14.0)87. ylabel(r,int2str(m-1),Amplitude)88.89. hx=hilbert(z);90. xr=real(hx);xi=imag(hx);91. %计算瞬时振幅92. sz=sqrt(xr.2+
12、xi.2);93. %计算瞬时相位94. sx=angle(hx);95. %计算瞬时频率96. dt=diff(t);97. dx=diff(sx);98. sp=dx./dt;99. figure(6)100. plot(t(1:N-1),sp)101. title(瞬时频率)102.103. %计算HHT时频谱和边际谱104. A,fa,tt=hhspectrum(c);105. E,tt1=toimage(A,fa,tt,length(tt);106. figure(3)107. disp_hhs(E,tt1) %二维图显示HHT时频谱,E是求得的HHT谱108. pause109.
13、figure(4)110. for i=1:size(c,1)111. faa=fa(i,:);112. FA,TT1=meshgrid(faa,tt1);%三维图显示HHT时频图113. surf(FA,TT1,E)114. title(HHT时频谱三维显示)115. hold on116. end117. hold off118. E=flipud(E);119. for k=1:size(E,1)120. bjp(k)=sum(E(k,:)*1/fs; 121. end122. f=(1:N-2)/N*(fs/2);123. figure(5)124. plot(f,bjp);125.
14、xlabel(频率 / Hz);126. ylabel(信号幅值);127. title(信号边际谱)%要求边际谱必须先对信号进行EMD分解128.129. function A,f,tt = hhspectrum(x,t,l,aff)130.131. error(nargchk(1,4,nargin);132.133. if nargin 2134.135. t=1:size(x,2);136.137. end138.139. if nargin 3140.141. l=1;142.143. end144.145. if nargin 4146.147. aff = 0;148.149. e
15、nd150.151. if min(size(x) = 1152. if size(x,2) = 1153. x = x;154. if nargin = 0214. error(inf doit etre 0)215. end216.217. M=max(max(im);218.219. im = log10(im/M+1e-300);220.221. inf=inf/10;222.223.224. imagesc(t,fliplr(1:size(im,1)/(2*size(im,1),im,inf,0);225. set(gca,YDir,normal)226. xlabel(time)2
16、27. ylabel(normalized frequency)228. title(Hilbert-Huang spectrum)229. function f,z=fftfenxi(t,y)230. L=length(t);N=2nextpow2(L);231. %fft默认计算的信号是从0开始的232. t=linspace(t(1),t(L),N);deta=t(2)-t(1);233. m=0:N-1;234. f=1./(N*deta)*m;235. %下面计算的Y就是x(t)的傅里叶变换数值236. %Y=exp(i*4*pi*f).*fft(y)%将计算出来的频谱乘以exp(i
17、*4*pi*f)得到频移后-2,2之间的频谱值237. Y=fft(y);238. z=sqrt(Y.*conj(Y);239.240.241.242.复制代码4.总结。(1)边际谱与傅里叶谱的比较: 意义不同:边际谱从统计意义上表征了整组数据每个频率点的累积幅值分布,而傅里叶频谱的某一点频率上的幅值表示在整个信号里有一个含有此频率的三角函数组分。 作用不同:边际谱可以处理非平稳信号,如果信号中存在某一频率的能量出现,就表示一定有该频率的振动波出现,也就是说,边际谱能比较准确地反映信号的实际频率成分。而傅里叶变换只能处理平稳信号。(2) HHT与Hilbert变换的比较: Hilbert变换只是单纯地求信号的瞬时振幅,频率和相位,有可能出现没有意义的负频率;HHT变换先将信号进行EMD分解,得到的是各个不同尺度的分量,对每一个分量进行Hilbert变换后得到的是有实际意义的瞬时频率。PS:运行上面的程序需要装时频工具箱,我仅将用到的emd分解的程序贴到下面。专心-专注-专业