声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2111|回复: 5

[HHT] 有没有能用的EMD程序!!!

[复制链接]
发表于 2006-2-27 15:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本人急需EMD的程序!如有哪位高人提供,将感激不尽!

[ 本帖最后由 zhangnan3509 于 2007-6-22 14:59 编辑 ]
回复
分享到:

使用道具 举报

发表于 2006-2-27 20:48 | 显示全部楼层
发表于 2006-2-27 21:14 | 显示全部楼层
其中缺少的extr试试下面的代码
  1. %extr
  2. function [indmin,indmax,indzer]=extr(x)
  3. [DATAfile DATApath]=uigetfile('*.txt','输入信号');
  4. watchon;

  5. FILENAME=[DATApath,DATAfile];
  6. x=load(FILENAME);

  7. numzer=1;
  8. nummin=1;
  9. nummax=1;
  10. for g=2:(length(x)-1)

  11. if (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g-1)==0)
  12. indzer(numzer)=g-1;
  13. numzer=numzer+1;
  14. elseif (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g)==0)
  15. indzer(numzer)=g;
  16. numzer=numzer+1;
  17. elseif (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g-1)~=0)&(x(g)~=0)
  18. indzer(numzer)=(2*g-1)/2;
  19. numzer=numzer+1;
  20. end

  21. if (x(g-1)>x(g))&(x(g)>x(g+1))
  22. continue;
  23. elseif (x(g-1)>x(g))&(x(g) indmin(nummin)=g;
  24. nummin=nummin+1;
  25. elseif (x(g-1) continue;
  26. elseif (x(g-1)x(g+1))
  27. indmax(nummax)=g;
  28. nummax=nummax+1;
  29. end
  30. end
  31. %subplot(2,3,1)
  32. plot(indzer,x(indzer),'r-+')
  33. title('indzer')
  34. pause
  35. % subplot(2,3,2)
  36. plot(indmin,x(indmin),'b-o')
  37. title('indmin')
  38. pause
  39. %subplot(2,3,3)
  40. plot(indmax,x(indmax),'g-*')
  41. title('indmax')
  42. pause
  43. %subplot(2,3,4)
  44. plot(1:length(x),x,'k-s')
  45. title('x')
  46. pause

  47. envmax = interp1(indmax,x(indmax),1:length(x),'spline');
  48. envmin = interp1(indmin,x(indmin),1:length(x),'spline');
  49. %subplot(2,3,5)
  50. plot(1:length(x),envmin,'y-d')
  51. title('envmin')
  52. pause
  53. %subplot(2,3,6)
  54. plot(1:length(x),envmax,'c-h')
  55. title('envmax')
  56. pause
  57. plot(1:length(x),mean((envmax+envmin)/2),'m-p')
  58. title('mean((envmax+envmin)/2)')%extr
  59. function [indmin,indmax,indzer]=extr(x)
  60. [DATAfile DATApath]=uigetfile('*.txt','输入信号');
  61. watchon;

  62. FILENAME=[DATApath,DATAfile];
  63. x=load(FILENAME);

  64. numzer=1;
  65. nummin=1;
  66. nummax=1;
  67. for g=2:(length(x)-1)

  68. if (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g-1)==0)
  69. indzer(numzer)=g-1;
  70. numzer=numzer+1;
  71. elseif (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g)==0)
  72. indzer(numzer)=g;
  73. numzer=numzer+1;
  74. elseif (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g-1)~=0)&(x(g)~=0)
  75. indzer(numzer)=(2*g-1)/2;
  76. numzer=numzer+1;
  77. end

  78. if (x(g-1)>x(g))&(x(g)>x(g+1))
  79. continue;
  80. elseif (x(g-1)>x(g))&(x(g) indmin(nummin)=g;
  81. nummin=nummin+1;
  82. elseif (x(g-1) continue;
  83. elseif (x(g-1)x(g+1))
  84. indmax(nummax)=g;
  85. nummax=nummax+1;
  86. end
  87. end
  88. %subplot(2,3,1)
  89. plot(indzer,x(indzer),'r-+')
  90. title('indzer')
  91. pause
  92. % subplot(2,3,2)
  93. plot(indmin,x(indmin),'b-o')
  94. title('indmin')
  95. pause
  96. %subplot(2,3,3)
  97. plot(indmax,x(indmax),'g-*')
  98. title('indmax')
  99. pause
  100. %subplot(2,3,4)
  101. plot(1:length(x),x,'k-s')
  102. title('x')
  103. pause

  104. envmax = interp1(indmax,x(indmax),1:length(x),'spline');
  105. envmin = interp1(indmin,x(indmin),1:length(x),'spline');
  106. %subplot(2,3,5)
  107. plot(1:length(x),envmin,'y-d')
  108. title('envmin')
  109. pause
  110. %subplot(2,3,6)
  111. plot(1:length(x),envmax,'c-h')
  112. title('envmax')
  113. pause
  114. plot(1:length(x),mean((envmax+envmin)/2),'m-p')
  115. title('mean((envmax+envmin)/2)')%extr
  116. function [indmin,indmax,indzer]=extr(x)
  117. [DATAfile DATApath]=uigetfile('*.txt','输入信号');
  118. watchon;

  119. FILENAME=[DATApath,DATAfile];
  120. x=load(FILENAME);

  121. numzer=1;
  122. nummin=1;
  123. nummax=1;
  124. for g=2:(length(x)-1)

  125. if (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g-1)==0)
  126. indzer(numzer)=g-1;
  127. numzer=numzer+1;
  128. elseif (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g)==0)
  129. indzer(numzer)=g;
  130. numzer=numzer+1;
  131. elseif (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g-1)~=0)&(x(g)~=0)
  132. indzer(numzer)=(2*g-1)/2;
  133. numzer=numzer+1;
  134. end

  135. if (x(g-1)>x(g))&(x(g)>x(g+1))
  136. continue;
  137. elseif (x(g-1)>x(g))&(x(g) indmin(nummin)=g;
  138. nummin=nummin+1;
  139. elseif (x(g-1) continue;
  140. elseif (x(g-1)x(g+1))
  141. indmax(nummax)=g;
  142. nummax=nummax+1;
  143. end
  144. end
  145. %subplot(2,3,1)
  146. plot(indzer,x(indzer),'r-+')
  147. title('indzer')
  148. pause
  149. % subplot(2,3,2)
  150. plot(indmin,x(indmin),'b-o')
  151. title('indmin')
  152. pause
  153. %subplot(2,3,3)
  154. plot(indmax,x(indmax),'g-*')
  155. title('indmax')
  156. pause
  157. %subplot(2,3,4)
  158. plot(1:length(x),x,'k-s')
  159. title('x')
  160. pause

  161. envmax = interp1(indmax,x(indmax),1:length(x),'spline');
  162. envmin = interp1(indmin,x(indmin),1:length(x),'spline');
  163. %subplot(2,3,5)
  164. plot(1:length(x),envmin,'y-d')
  165. title('envmin')
  166. pause
  167. %subplot(2,3,6)
  168. plot(1:length(x),envmax,'c-h')
  169. title('envmax')
  170. pause
  171. plot(1:length(x),mean((envmax+envmin)/2),'m-p')
  172. title('mean((envmax+envmin)/2)')%extr
  173. function [indmin,indmax,indzer]=extr(x)
  174. [DATAfile DATApath]=uigetfile('*.txt','输入信号');
  175. watchon;

  176. FILENAME=[DATApath,DATAfile];
  177. x=load(FILENAME);

  178. numzer=1;
  179. nummin=1;
  180. nummax=1;
  181. for g=2:(length(x)-1)

  182. if (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g-1)==0)
  183. indzer(numzer)=g-1;
  184. numzer=numzer+1;
  185. elseif (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g)==0)
  186. indzer(numzer)=g;
  187. numzer=numzer+1;
  188. elseif (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g-1)~=0)&(x(g)~=0)
  189. indzer(numzer)=(2*g-1)/2;
  190. numzer=numzer+1;
  191. end

  192. if (x(g-1)>x(g))&(x(g)>x(g+1))
  193. continue;
  194. elseif (x(g-1)>x(g))&(x(g) indmin(nummin)=g;
  195. nummin=nummin+1;
  196. elseif (x(g-1) continue;
  197. elseif (x(g-1)x(g+1))
  198. indmax(nummax)=g;
  199. nummax=nummax+1;
  200. end
  201. end
  202. %subplot(2,3,1)
  203. plot(indzer,x(indzer),'r-+')
  204. title('indzer')
  205. pause
  206. % subplot(2,3,2)
  207. plot(indmin,x(indmin),'b-o')
  208. title('indmin')
  209. pause
  210. %subplot(2,3,3)
  211. plot(indmax,x(indmax),'g-*')
  212. title('indmax')
  213. pause
  214. %subplot(2,3,4)
  215. plot(1:length(x),x,'k-s')
  216. title('x')
  217. pause

  218. envmax = interp1(indmax,x(indmax),1:length(x),'spline');
  219. envmin = interp1(indmin,x(indmin),1:length(x),'spline');
  220. %subplot(2,3,5)
  221. plot(1:length(x),envmin,'y-d')
  222. title('envmin')
  223. pause
  224. %subplot(2,3,6)
  225. plot(1:length(x),envmax,'c-h')
  226. title('envmax')
  227. pause
  228. plot(1:length(x),mean((envmax+envmin)/2),'m-p')
  229. title('mean((envmax+envmin)/2)')%extr
  230. function [indmin,indmax,indzer]=extr(x)
  231. [DATAfile DATApath]=uigetfile('*.txt','输入信号');
  232. watchon;

  233. FILENAME=[DATApath,DATAfile];
  234. x=load(FILENAME);

  235. numzer=1;
  236. nummin=1;
  237. nummax=1;
  238. for g=2:(length(x)-1)

  239. if (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g-1)==0)
  240. indzer(numzer)=g-1;
  241. numzer=numzer+1;
  242. elseif (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g)==0)
  243. indzer(numzer)=g;
  244. numzer=numzer+1;
  245. elseif (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g-1)~=0)&(x(g)~=0)
  246. indzer(numzer)=(2*g-1)/2;
  247. numzer=numzer+1;
  248. end

  249. if (x(g-1)>x(g))&(x(g)>x(g+1))
  250. continue;
  251. elseif (x(g-1)>x(g))&(x(g) indmin(nummin)=g;
  252. nummin=nummin+1;
  253. elseif (x(g-1) continue;
  254. elseif (x(g-1)x(g+1))
  255. indmax(nummax)=g;
  256. nummax=nummax+1;
  257. end
  258. end
  259. %subplot(2,3,1)
  260. plot(indzer,x(indzer),'r-+')
  261. title('indzer')
  262. pause
  263. % subplot(2,3,2)
  264. plot(indmin,x(indmin),'b-o')
  265. title('indmin')
  266. pause
  267. %subplot(2,3,3)
  268. plot(indmax,x(indmax),'g-*')
  269. title('indmax')
  270. pause
  271. %subplot(2,3,4)
  272. plot(1:length(x),x,'k-s')
  273. title('x')
  274. pause

  275. envmax = interp1(indmax,x(indmax),1:length(x),'spline');
  276. envmin = interp1(indmin,x(indmin),1:length(x),'spline');
  277. %subplot(2,3,5)
  278. plot(1:length(x),envmin,'y-d')
  279. title('envmin')
  280. pause
  281. %subplot(2,3,6)
  282. plot(1:length(x),envmax,'c-h')
  283. title('envmax')
  284. pause
  285. plot(1:length(x),mean((envmax+envmin)/2),'m-p')
  286. title('mean((envmax+envmin)/2)')%extr
  287. function [indmin,indmax,indzer]=extr(x)
  288. [DATAfile DATApath]=uigetfile('*.txt','输入信号');
  289. watchon;

  290. FILENAME=[DATApath,DATAfile];
  291. x=load(FILENAME);

  292. numzer=1;
  293. nummin=1;
  294. nummax=1;
  295. for g=2:(length(x)-1)

  296. if (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g-1)==0)
  297. indzer(numzer)=g-1;
  298. numzer=numzer+1;
  299. elseif (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g)==0)
  300. indzer(numzer)=g;
  301. numzer=numzer+1;
  302. elseif (x(g-1)*x(g)<0)|(x(g-1)*x(g)==0)&(x(g-1)~=0)&(x(g)~=0)
  303. indzer(numzer)=(2*g-1)/2;
  304. numzer=numzer+1;
  305. end

  306. if (x(g-1)>x(g))&(x(g)>x(g+1))
  307. continue;
  308. elseif (x(g-1)>x(g))&(x(g) indmin(nummin)=g;
  309. nummin=nummin+1;
  310. elseif (x(g-1) continue;
  311. elseif (x(g-1)x(g+1))
  312. indmax(nummax)=g;
  313. nummax=nummax+1;
  314. end
  315. end
  316. %subplot(2,3,1)
  317. plot(indzer,x(indzer),'r-+')
  318. title('indzer')
  319. pause
  320. % subplot(2,3,2)
  321. plot(indmin,x(indmin),'b-o')
  322. title('indmin')
  323. pause
  324. %subplot(2,3,3)
  325. plot(indmax,x(indmax),'g-*')
  326. title('indmax')
  327. pause
  328. %subplot(2,3,4)
  329. plot(1:length(x),x,'k-s')
  330. title('x')
  331. pause

  332. envmax = interp1(indmax,x(indmax),1:length(x),'spline');
  333. envmin = interp1(indmin,x(indmin),1:length(x),'spline');
  334. %subplot(2,3,5)
  335. plot(1:length(x),envmin,'y-d')
  336. title('envmin')
  337. pause
  338. %subplot(2,3,6)
  339. plot(1:length(x),envmax,'c-h')
  340. title('envmax')
  341. pause
  342. plot(1:length(x),mean((envmax+envmin)/2),'m-p')
  343. title('mean((envmax+envmin)/2)')
复制代码
 楼主| 发表于 2006-3-2 18:21 | 显示全部楼层
谢谢了!非常感谢!!
发表于 2006-4-6 11:00 | 显示全部楼层
请问dnj0306,你也在做HHT方面的研究吗?
我现在也在做,可否向你学习一下。
发表于 2011-5-22 18:00 | 显示全部楼层
学习了,有简单的代码吗?楼上的好乱啊
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-12 23:28 , Processed in 0.147589 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表