• 大小: 2KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: Matlab
  • 标签: EMD  MATLAB  

资源简介

绝对实用的EMD模态分解算法 可手动调试 网上的下的其他程序都很难懂 但这个绝对简单

资源截图

代码片段和文件信息

t=0:0.1:8;
x1=sin(pi*t)+cos(2*pi*t);
x=x1;
sd=1;
sd1=1;
sd2=1;
for n=1:29
    if(sd>0.3)
% 找到极大值的位置和极大值
max_location=find(diff(sign(diff(x)))==-2)+1;
max_array=x(max_location);
T_max=t(max_location);
% 找到极小值的位置和极小值
min_location=find(diff(sign(diff(x)))==2)+1;
min_array=x(min_location);
T_min=t(min_location);
% 三次样条拟和极大值得到上包络线xmax 
xmax=spline(T_maxmax_arrayt);
xmin=spline(T_minmin_arrayt);
m=(xmax+xmin)/2; %上下包络均值
h=x-m;
sd=sum(((x-h)./x).^2);
x=h;
    end
end
c=h;
figure;
subplot(231);
plot(tx1);
axis([0 8 -2 2]);
subplot(232);
plot(tc);

%第二次
r1=x1-c;
for n1=1:54
  if(sd1>0.3)
% 找到极大值的位置和极大值
max_location1=find(diff(sign(diff(r1)))==-2)+1;
max_array1=r1(max_location1);
T_max1=t(max_location1);
% 找到极小值的位置和极小值
min_location1=find(diff(sign(diff(r1)))==2)+1;
min_array1=r1(min_location1);
T_min1=t(min_

评论

共有 条评论