EMD分解的流程图如下
更新时间:2024-06-05 13:01:01 阅读量: 综合文库 文档下载
- EMD分解流程图推荐度:
- 相关推荐
1.什么是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. 2. 3. 4. 5. 6. 7. 8.
function fftfenxi clear;clc; N=2048;
?t默认计算的信号是从0开始的
t=linspace(1,2,N);deta=t(2)-t(1);1/deta x=5*sin(2*pi*10*t)+5*sin(2*pi*35*t);
% N1=256;N2=512;w1=0.2*2*pi;w2=0.3*2*pi;w3=0.4*2*pi; %
x=(t>=-200&t<=-200+N1*deta).*sin(w1*t)+(t>-200+N1*deta&t<=-200+N2*deta).*sin(w2*t)+(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. %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变换直接求该信号的瞬时频率
1. clear;clc;clf;
2. %假设待分析的函数是z=t^3 3. N=2048;
4. ?t默认计算的信号是从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=diff(sx); 17. sp=dx./dt;
18. plot(t(1:N-1),sp) 19. title('瞬时频率') 20.
复制代码
小结:傅里叶变换不能得到瞬时频率,即不能得到某个时刻的频率值。Hilbert变换是求取瞬时频率的方法,但如果只用Hilbert变换求出来的瞬时频率也不准确。(出现负频,实际上负频没有意义!)
(3)用HHT求取信号的时频谱与边际谱
1. function HHT 2. clear;clc;clf; 3. N=2048;
4. ?t默认计算的信号是从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. 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. end 16. xg; 17.
18. for i=1:m-1
19. %--------------------------------------------------------------------
20. %计算各IMF的方差贡献率
21. %定义:方差为平方的均值减去均值的平方 22. %均值的平方
23. %imfp2=mean(c(i,:),2).^2 24. %平方的均值
25. %imf2p=mean(c(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-1
31. 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-1
39. disp(['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-1
48. 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,'fontsize',14.0) 53. ylabel(['imf',int2str(i)]) 54. end
55. 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(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-1
73. 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. ylabel(['imf',int2str(i),'Amplitude']) 80. end
81. 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+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. pause 109. 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 on 116. end 117. hold off 118. E=flipud(E); 119. for k=1:size(E,1) 120. bjp(k)=sum(E(k,:))*1/fs; 121. end 122. f=(1:N-2)/N*(fs/2); 123. figure(5) 124. plot(f,bjp); 125. xlabel('频率 / Hz'); 126. ylabel('信号幅值'); 127. title('信号边际谱')%要求边际谱必须先对信号进行EMD分解 128. 129. function [A,f,tt] = hhspectrum(x,t,l,aff) 130.
131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. error(nargchk(1,4,nargin));
if nargin < 2
t=1:size(x,2); end
if nargin < 3 l=1; end
if nargin < 4
aff = 0; end
if min(size(x)) == 1 if size(x,2) == 1 x = x';
if nargin < 2 t = 1:size(x,2); end end
Nmodes = 1; else
Nmodes = size(x,1); end
lt=length(t);
tt=t((l+1):(lt-l));
for i=1:Nmodes
an(i,:)=hilbert(x(i,:)')';
f(i,:)=instfreq(an(i,:)',tt,l)'; A=abs(an(:,l+1:end-l));
if aff
disprog(i,Nmodes,max(Nmodes,100))
175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. end end
function disp_hhs(im,t,inf)
% DISP_HHS(im,t,inf)
% displays in a new figure the spectrum contained in matrix \% (amplitudes in log). %
% inputs : - im : image matrix (e.g., output of \% - t (optional) : time instants (e.g., output of \% - inf (optional) : -dynamic range in dB (wrt max) % default : inf = -20 %
% utilisation : disp_hhs(im) ; disp_hhs(im,t) ; disp_hhs(im,inf) % disp_hhs(im,t,inf)
figure
colormap(bone)
colormap(1-colormap);
if nargin==1 inf=-20;
t = 1:size(im,2); end
if nargin == 2 if length(t) == 1 inf = t;
t = 1:size(im,2); else
inf = -20; end end
if inf >= 0
error('inf doit etre < 0') end
M=max(max(im));
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']) 227. ylabel(['normalized frequency']) 228. title('Hilbert-Huang spectrum') 229. function [f,z]=fftfenxi(t,y) 230. L=length(t);N=2^nextpow2(L); 231. ?t默认计算的信号是从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*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分解的程序贴到下面。
正在阅读:
EMD分解的流程图如下06-05
精选纪录片《飞越冰雪线》观后感多篇范文08-02
高三学生入党申请书2013最新模板06-04
禁止用地项目目录(2012年本)05-16
简述VHDL的基本结构及每部分的基本功能11-15
大学生创业大赛活动策划方案-策划方案09-07
第四章习题02-03
琅琊榜祁王是谁怎么死的02-10
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 流程图
- 分解
- 如下
- EMD
- 医学遗传学习题(附答案)第6章 线粒体遗传病
- 新人教版五年级下册数学 长方体和正方体
- 消费经济学00183自考试题及答案大全
- 五年级 综合 八 多巧板的制作
- 华邦 地下室 高支模施工方案
- 规范药房创建验收自查报告
- 市政道路、排水、房建施工方案
- 2002-2012年云南省教师资格证考试中学教育心理学试卷历年真题(试
- 2016年哈尔滨工程大学电子设计竞赛B题
- DOTNET编程实训标准
- 光纤通信技术实验报告-密集波分复用
- VB API教程
- 蒙脱土
- 尔雅2015-创新思维训练-期末考试答案
- Word操作技巧系列
- 数字信号处理部分习题答案
- 阅读和精神生活试卷(部分)
- 墨玉县扎瓦乡农贸市场(道路、混凝土地坪、彩砖地面)建设工程(技
- 2018年福建省南平市普通高中毕业班第二次综合质量检查考试理科综
- 人力资源若干管理办法下发稿