求助EMD程序如何使用

求助EMD程序如何使用,第1张

时间序列t,最简单用法就是imf=emd(t),当然emd里面还有很多可选项,例如 IMF = EMD(X,...,'Option_name',Option_value,...),详细使用方法安装HHT工具箱后看帮助即可

下载的工具箱中的emd.m文件里的注释有详细的用法介绍。

工具箱的安装

运行install_emd.m文件可以实现此工具箱的安装,uninstall_emd.m实现卸载。

安装中的问题

但是安装的时候,如果使用的是VS的编译器(mbuild –setup、mex –setup设置),会报找不到complex.h的问题(用Linux下的Matlab不会出错),从而使cemdc2_fix.c等文件编译失败,这几个文件是为了快速实现计算EMD而用c编写的,所以即使编译失败,也不影响直接使用emd.m实现EMD功能。如果想编译成功,可如下修改:(摘自http://www.chinavib.com/thread-79866-1-1.html)

G. Rilling 07年3月份的程序,运行作者的install_emd.m,出现找不到complex.h的问题,以下是个人的理解和解决过程:(个人的运行环境为matlab6.5)

complex.h的问题

产生原因:采用matlab的C编译函数mex时,定义了C99_OK的宏(EMDS/make_emdc.m (28行)),利用的是ANSI C99标准如果个人的电脑中没有相关的支持,就会出现这个问题。

解决方法:EMDS/make_emdc.m中第28行中mex(’-DC99_OK‘,args(:))语句中的 '-DC99_OK' 即可。

注意:

改完之后,运行install_emd,会出现M_PI没有定义的问题,缺少了常数PI的宏定义,导致一些.c文件编译失败。

产生原因:去掉C99_OK之后,程序中使用的是作者提供的 emd_complex.h和emd_complex.c两个文件来支持复数运算,这两个文件中,并没有定义M_PI这个宏。

解决方法:M_PI这个宏,只在两个文件中(clocal_mean.c和clocal_mean2.c)使用,个人的解决方法是,在相应的头文件(clocal_mean.h和clocal_mean2.h)中加入M_PI的宏定义即可。

在两个.h文件中分别加入一下语句:

#define CLOCAL_MEAN_H

#ifndef M_PI

#define M_PI 3.1415926

#endif

安装完成后,编译输出的.dll文件会出现,重复后缀名的问题,及 xxx.dll 变成了 xxx.dll.dll自己去掉多余的.dll即可

最后,关于版本问题:作者推荐使用7.1+版本,但只是针对个别的函数有影响,主要是作者提供的例子程序,无法在matlab6.5环境中运行,算法的主要功能函数并不受影响。

一般的的查询可在matlab里的帮助界面进行搜索,点击帮助。

打开帮助页面,左侧检索栏进行检索需要查询的语句,然后即可查看右侧查询结果。

或者在主界面,输入help 空格+你要查询的内容,进行查询。下次你可以尝试一下。

一般程序都会有不懂得语句,或没用过的,可以在刚刚说过的帮助页面进行查询,看如何使用,输入参量什么意义,程序输出结果是什么。

你这个描述太过于简略了,我只能给出这样的答案了,一般可以都给一点程序,也许会有对答题人帮助。

不过你这个程序的确有点复杂,不根据前后逻辑,和主程序和目的是很难解答的。

你可以看看主程序,再查查帮助。

希望对你有所帮助。谢谢。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11577187.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存