# eemd.rar

• jackma_yun
了解作者
• matlab
开发工具
• 2KB
文件大小
• rar
文件格式
• 0
收藏次数
• 10 积分
下载积分
• 6
下载次数
• 2020-04-09 21:38
上传日期

eemd.rar
• eemd
• EEMD1.m
5.3KB

%调用：imf=eemd(X,0.1,50,1);TNM2为分解的IMF的层数。 % This is an EMD/EEMD program % % function allmode=eemd(Y,Nstd,NE) % % INPUT: % Y: Inputted data; % Nstd: ratio of the standard deviation of the added noise and thatof % Y;即为添加噪声和原始信号的标准差之比 % NE: Ensemble number for the EEMD，集合平均次数 % OUTPUT: % A matrix of N*(m+1) matrix, where N is the length of the input % data Y, and m=fix(log2(N))-1. Column 1 is the original data, columns 2, 3, ... % m are the IMFs from high to low frequency, and comlumn (m+1) is the % residual (over all trend). % % NOTE: % It should be noted that when Nstd is set to zero and NE is set to 1, the % program degenerates to a EMD program. % % References can be found in the "Reference" section. % function imf=EEMD1(x,Nstd,NE,yes) N=length(x); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%EEMD程序%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%入口参数设置%%%%%% Y=x; %Y行向量，一行多列 xsize=length(Y); %%%%%%%%%%%%%%%%%%%%%%%%%%%% dd=1:1:xsize; %dd为原始数据采样点数序号 Ystd=std(Y); %得到Y的二阶统计标准差,反映信号在均值处的波动大小 Y=Y/Ystd; %原始信号幅值归一化 TNM=13; TNM2=TNM+2; %TNM2=8 %IMF的层数 allmode=zeros(xsize,TNM2); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %此大循环为NE次集合EMD算法过程 for iii=1:1:NE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %此循环为单次emd算法循环中加入白噪声 % for i=1:xsize, % temp=randn(1,1)*Nstd; %产生一个正态分布的随机数 % X1(i)=Y(i)+temp; %X1为单次算法中的加入白噪声信号 % end X1=Y+yes*randn(xsize,1)*Nstd; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % for jj=1:1:xsize, % mode(jj,1) = Y(jj); %多维数组mode的第一列（多行）为归一化的原始信号 % end mode(1:xsize,1)=Y; iii xorigin = X1; %xorigin、X1为单次算法中的加入白噪声信号 xend = xorigin; mean_energy=0; nmode = 1; %nmode为基本模式分量的个数 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %此循环为对加入白噪声的白噪声进行EMD分解 while nmode <= TNM %分解次数为6次，即IMF的个数为6 xstart = xend; %返回迭代 SD =16; while SD>0.0001 [spmax, spmin, flag]=extrema_eemd(xstart); upper= spline(spmax(:,1),spmax(:,2),dd);%spmax的第一列为极大值点的横坐标数组，第二列为极大值点的纵坐标数组，最后插值出dd处的函数值 lower= spline(spmin(:,1),spmin(:,2),dd); mean_ul = (upper + lower)/2; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %mean_energy为均值曲线与x轴包围的面积 % for i=xsize % mean_energy=mean_energy+abs(mean_ul(i)); % end mean_energy=sum(abs(mean_ul(:))); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %停止准则采用的是于德介讲述的能量差跟踪法 E1=0; Etot=0; %Ex为每次循环中待分解信号纵坐标的平方和，即为待分解信号的总能量 Ex=0; % for i=1:xsize % Ex=Ex+xstart(i)^2; % end Ex=sum(xstart.^2); xstart = xstart - mean_ul'; %从待处理信号xstart中减去其上下包络线均值mean_ul rest=Y-xstart; SD=0; % for i=1:xsize % Etot=mean_ul(i)^2+Etot; % E1=xstart(i)^2+E1; % end Etot=sum(mean_ul.^2); E1=sum(xstart.^2); SD=abs(Etot+E1-Ex)/E1; end %单个基本模式分量分解结束 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% xend = xend - xstart; nmode=nmode+1; % for jj=1:1:xsize, % mode(jj,nmode) = xstart(jj);%在进行第nmode次（加入白噪声的原始信号）EMD分解后mode的第nmode列为基本模式分量值 % end mode(1:xsize,nmode)=xstart; end %TNM个基本模式分量分解结束，即为单次集成EMD分解结束 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%% %mode的最后一列为剩余模式分量 % for jj=1:1:xsize, % mode(jj,nmode+1)=xend(jj); % end mode(1:xsize,nmode+1)=xend; %%%%%%%%%%%%%%% allmode=allmode+mode; end %进行NE集成次数的EMD分解算法结束 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% allmode=allmode/NE; %集成结果 allmode=allmode*Ystd; %恢复幅值，去除归一化 IMFs=allmode'; %IMFs为一个node+1行xsize列的矩阵 %%%%%%%%%%%%%%%%%%%%% %for j=1:nmode+1 % for i=1:xsize % xx(j,i,ij)=IMFs(j,i); % end %end % xx(1:nmode+1,1:xsize,ij)=IMFs(1:nmode+1,1:xsize); %xx为一个三维阵列（nmode+1行xsize列M页），每一页为IMFs的二维矩阵 %%%%%%%%%%%%%%%%%%%%%% %for ij=1:M 且（M=10） %结果是形成了10页的IMFs %end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%for ij=1,M % for j=1:nmode+1 % for i=1:xsize % xxxx(j,i)=mean(xx(j,i)); %mean（A）为求A的每一列的均值，mean（A，2）为求A的每行的均值 % end % end xxxx(1:nmode+1,1:xsize)=IMFs; %end %此段为对每一页 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % for i=1:nmode+1 % subplot(nmode+1,1,i) %h= subplot(m,n,p)将figure划分为m×n块，在第p块创建坐标系 % plot(xxxx(i,:)) % end imf=xxxx; return

相关推荐
• EEMD Matlab runcode.rar
eemd信号分解，分解成多个固有经验函数
• eemd.rar
集合经验模态分解（EEMD）源程序，内涵实例验证，亲测可用
• eemdmatlab代码-EMD_EEMD:EMD_EEMD
EEMD Matlab代码原始副本来自 需要emd_eemd部分 ceced部分可能直接来自MaríaEugenia Torres或Patric Flandrin。 宣告 由于没有matlab许可证和项目迁移，因此不再提供对matlab代码的支持。 我强烈建议您安装免费软件...
• EMD/EEMD program
EMD/EEMD program,用于信号的分解，EMD和EEMDMATLAB代码
• eemdmatlab代码-ECG-EMD:心电图
EEMD Matlab代码最初来自 由于新的Matlab 2019b没有eemd，因此需要eemd。 非常感谢老板。 使用EMD去噪ECG 这些MATLAB代码是基于CEEMDAN的ECG去噪技术的实现，该技术基于以下指导的文献。 这是孟买IIT的一个学期研究...
• emd 和 eemdMATLAB源程序
emd 和 eemdMATLAB源程序，供大家参考学习了
• matlabEEMD0.rar
eemdmatlab源程序，用来希尔伯特变换，分析信号，经验模态，里面还有其他有用子程序。萌新在学习
• EEMD和EMD工具箱 matlab
matlab中~~EEMD和EMD~工具箱~ 供有需要的下载 ,,,
• GaussDB_100_1.0.1-DATABASE-REDHAT-64bit.tar.gz
guassdb100在redhat上安装包，单机部署的包，安装步骤请看我的文中介绍，经过大量实验搭建总结出来的文档