1 20 50 150 500
欢迎来到瑞博软件站,找素材,搜软件,就上瑞博软件站!
当前位置 >首页 >软件下载 >电脑软件 >编程开发 >编程软件

Matlab-EMD工具箱 官方版

软件信息
  • 分类:编程软件
  • 大小:100KB
  • 语言: 英文
  • 环境: WinAll, WinXP
  • 更新:2024-11-12
  • 评级:
  • 系统: Windows Linux Mac Ubuntu
  • 软件类别: 国产软件 / 免费软件 / 编程辅助
  • 插件情况:
  • 相关链接: http://www.cr173.com

EMD工具箱,在MATLAB中实现EMD的各种功能所必须的工具箱。

工具箱的安装

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

1、首先下载emd工具箱,50楼网址里面可以下。下载后解压放在matlab的work工作路径下package_emd文件夹。

2、打开matlab,选择File- Set Path- Add with Subfolders-你刚才下载的工具箱(package_emd)点进去- Save- Close。

3、此时选择work下package_emd文件夹作为工作路径,即是C:Program FilesMATLABR2010a oolboxpackage_emd。

4、在Command Window里面输入mex -setup回车,问是否选择已有的编译器你选y回车,再问选择哪个编译器,你可以选择C++的那个选择相应的编号(如 2)回车,然后让你核对是否选择对了编译器等等,你输入y回车。就安装成功了

>> mex -setup

Please choose your compiler for building external interface (MEX) files: 

Would you like mex to locate installed compilers [y]/n? y

Select a compiler: 

[1] Lcc-win32 C 2.4.1 in C:PROGRA~1MATLABR2010asyslcc 

[2] Microsoft Visual C++ 6.0 in C:Program FilesMicrosoft Visual Studio 

[0] None 

Compiler: 2

Please verify your choices: 

Compiler: Microsoft Visual C++ 6.0 

Location: C:Program FilesMicrosoft Visual Studio 

Are these correct [y]/n? y

Trying to update options file: C:UsersAdministratorAppDataRoamingMathWorksMATLABR2010amexopts.bat 

From template: C:PROGRA~1MATLABR2010ainwin32mexoptsmsvc60opts.bat 

Done . . . 

************************************************************************** 

  Warning: The MATLAB C and Fortran API has changed to support MATLAB 

           variables with more than 2^32-1 elements. In the near future 

           you will be required to update your code to utilize the new 

           API. You can find more information about this at: 

           http://www.mathworks.com/support/solutions/en/data/1-5C27B9/?solution=1-5C27B9 

           Building with the -largeArrayDims option enables the new API. 

************************************************************************** 

MATLAB的emd的工具箱  可是不知道怎么用  也不知道怎么用它来处理txt中的数据

安装中的问题

    但是安装的时候,如果使用的是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环境中运行,算法的主要功能函数并不受影响。

工具箱的使用

工具箱函数

   运行help index_emd可以查看工具箱提供的函数,如下

index_emd.M list of functions in the EMD package
 
 type help function_name for more information on a specific function
 
 Empirical Mode Decomposition
 
   emd         - computes EMD and bivariate/complex EMD with various options
   emd_local   - computes local EMD variation
   emd_online  - computes on-line EMD variation. Note that it does not truly
                  apply on-line: the function is only a demonstration.
   emdc        - fast implementation for EMD with Cauchy-like stopping criterion
                  (requires compilation, see make_emdc function)
   emdc_fix    - fast implementation for EMD with predefined number of iterations
                  (requires compilation, see make_emdc function)
   cemdc       - fast implementation for bivariate/complex EMD (first algorithm)
                  with Cauchy-like stopping criterion (requires compilation,
                  see make_emdc function)
   cemdc_fix   - fast implementation for bivariate/complex EMD (first algorithm)
                  with predefined number of iterations (requires compilation,
                  see make_emdc function)
   cemdc2      - fast implementation for bivariate/complex EMD (second algorithm)
                  with Cauchy-like stopping criterion (requires compilation,
                  see make_emdc function)
   cemdc2_fix  - fast implementation for bivariate/complex EMD (second algorithm)
                  with predefined number of iterations (requires compilation,
                  see make_emdc function)
 
 Utilities
 
   install_emd  - setup Matlab's path and compile the C codes.
   uninstall_emd - revert the modifications made by install_emd and remove the
                   files (optional).
   make_emdc    - compile all C codes
   emd_visu     - visualization of EMD
   cemd_visu    - visualization of bivariate/complex EMD (automatically called
                   by emd_visu when the input is complex)
   cenvelope    - compute envelope curves for bivariate/complex EMD
   cemd_disp    - visualization of envelope curves and tube envelope
   plot3c       - plot a complex vector in 3 dimensions
   plotc        - plot the projection of a complex vector on a variable direction
   dirstretch   - directional stretching of a complex vector
   hhspectrum   - compute Hilbert-Huang spectrum (need the Time-Frequency Toolbox
                   http://tftb.nongnu.org)
   toimage      - transform a spectrum made of 1D functions (e.g., output of
                   "hhspectrum") in an 2D image
   disp_hhs     - display the image output of "toimage" as a Hilbert-Huang spectrum
   addtag       - add a tag to a graphic object (uses the Tag property as a list
                   of keywords or "tags")
   rmtag        - remove a tag from a graphic object (uses the Tag property as
                   a list of keywords or "tags")
   hastag       - test whether a graphic object has a specific tag (uses the Tag
                   property as a list of keywords or "tags")
   findtag      - find objects having a specific tag (uses the Tag property as
                   a list of keywords or "tags")
   
 Examples from G. Rilling, P. Flandrin and P. Gon鏰lves,
   "On Empirical Mode Decomposition and its algorithms"
   IEEE-EURASIP Workshop on Nonlinear Signal and Image Processing
   NSIP-03, Grado (I), June 2003
   
   emd_fmsin        - Fig. 1: a 3-component example (need the Time-Frequency
                       Toolbox http://tftb.nongnu.org)
   emd_triang       - Fig. 2: another 3-component example
   emd_sampling     - Fig. 3: effect of sampling on 1 tone
   emd_separation   - Fig. 4: separation of 2 tones
   ex_online        - Sect 3.4: the way emd_online.m works
   triangular_signal - subroutine called by emd_triang (formerly triang.m)
   
 Examples from G. Rilling, P. Flandrin, P. Gon鏰lves and J. M. Lilly,
   "Bivariate Empirical Mode Decomposition",
   Signal Processing Letters (submitted)
 
   bivariate_EMD_principle       - Fig. 1: principle of the bivariate/complex EMD
   bivariate_EMD_mean_definitions - Fig. 2: definition of the mean for each algorithm.
                                    Also allows to test other signals and parameter sets.
   bivariate_EMD_illustration    - Fig. 3: illustration of the bivariate EMD
                                    on an oceanographic float position record

   稍做整理如下:

EMD分解函数

函数功能
emd计算EMD、双变量/复数EMD
emd_local计算local EMD
emd_online计算在线EMD(不是真正在线应用,此函数只是一个示范)
emdc使用Cauchy-like停止准则的快速EMD实现,需编译
emdc_fix使用预定义迭代次数的快速EMD实现,需编译
cemdc使用Cauchy-like停止准则的快速双变量/复数EMD实现(方法1),需编译
cemdc_fix使用预定义迭代次数的快速双变量/复数EMD实现(方法1),需编译
cemdc2使用Cauchy-like停止准则的快速双变量/复数EMD实现(方法2),需编译
cemdc2_fix使用预定义迭代次数的快速双变量/复数EMD实现(方法2),需编译

工具函数

函数功能
install_emd设置Matlab路径,编译c代码
uninstall_emd回复install_emd做的修改,移除文件
make_emdc编译c代码
emd_visuEMD可视化
cemd_visu双变量/复数EMD可视化(emd_visu的输入是双变量或复数时自动改为调用cemd_visu)
cenvelope计算双变量EMD的包络曲线
cemd_disp显示复数包络曲线
plot3c三维中绘制复数向量
plotc绘制复数向量在一个可变方向上的投影
dirstretch复数向量的方向拉伸
hhspectrum计算Hilbert-Huang谱(需要时频工具箱http://tftb.nongnu.org)
toimage将一个一维函数谱转化为图像
disp_hhs以Hilbert-Huang谱的形式显示toimage函数的输出
addtag添加标签到一个图形对象
rmtag移除标签从一个图形对象
hastag测试一个图形对象是否有指定的标签
findtag找有指定标签的图形对象

来自《On Empirical Mode Decomposition and its algorithms》的Examples

函数功能
emd_fmsin一个包含3组分的例子(需要时频工具箱)
emd_triang另一个包含3组分的例子
emd_samplingeffect of sampling on 1 tone
emd_separationseparation of 2 tones
ex_onlinethe way emd_online.m works
triangular_signalemd_triang文件调用的子程序

来自《Bivariate Empirical Mode Decomposition》的Examples

函数功能
bivariate_EMD_principle双变量/复数EMD原则
bivariate_EMD_mean_definitions各种方法的平均值的定义
bivariate_EMD_illustration双变量EMD在海洋漂流位置的应用图解

工具箱使用示例

EMD

clc

clear all

close all

% 原始数据

fs = 1000;

ts = 1/fs;

t=0:ts:0.3;

z=2*sin(2*pi*10*t) + 5.*sin(2*pi*100*t);

figure

plot(t, z)

title('原始信号')

% EMD

imf=emd(z);

emd_visu(z,t,imf)

[A,f,tt]=hhspectrum(imf);

[im,tt]=toimage(A,f);

disp_hhs(im);

边际谱

clc

clear all

close all

% 原始数据

fs = 1000;

ts = 1/fs;

t=0:ts:0.3;

y=2*sin(2*pi*10*t);% + 5.*sin(2*pi*100*t);

figure

plot(t, y)

title('原始信号')

% 求Hilbert-Huang谱

[A,fh,th] = hhspectrum(y);

figure

subplot(211)

plot(th*ts, A)

title('瞬时幅值') % 就是包络

subplot(212)

plot(th*ts, fh*fs)

title('瞬时频率')

% 显示结果

[im,tt,ff] = toimage(A,fh,th);

disp_hhs(im,tt)

colormap(flipud(gray))

% 编程实现显示

figure

imagesc(tt*ts,[0,0.5*fs],im);

ylabel('frequency/Hz')

set(gca,'YDir','normal')

xlabel('time/s')

title('Hilbert-Huang spectrum')

例子程序

更详细的使用说明可以参见例子程序,如emd_fmsin.m程序,运行结果如下

EMD分解如下

可以看到,EMD实现的3个组分的分离(即分别分解到了IMF1~3中),可见EMD的强大功能。

下载地址

热门软件

Top