联系QQ:

2181264433

新闻资讯
联系我们
联系:张女士
微信:扫一扫右侧二维码
QQ :2181264433
邮箱:2181264433@qq.com
地址:浙江省-嘉兴市-南湖区
网址:www.mhslogic.com
您当前位置:首页 > 国内资讯 > 正文国内资讯
MATLAB代做|FPGA代做|simulink代做——EMD分解算法
添加时间:2020-5-30 来源:本站整理
function[h,NmaxX,NminX,Nzero,up_baoluo,mean_baoluo]=EMD(x)
%%通过这个函数得到固有模态函数
lenx=length(x);
NmaxX=1;
NminX=1;
Nzero=0;
for i=2:lenx-1
    if ((x(i-1)<x(i))&(x(i)>x(i+1)))     % 找出局部最大值
        maxX(NmaxX)=x(i);                %保存插值时下包络线的纵坐标值
        CmaxX(NmaxX)=i;                  %保存插值的横坐标值
        NmaxX=NmaxX+1;
        
    end
    if ((x(i)<x(i-1))&(x(i)<x(i+1)))     %找出局部最小值
        minX(NminX)=x(i);                %保存插值时下包络线的纵坐标值
        CminX(NminX)=i;                  %保存差值的横坐标值 
        NminX=NminX+1;   
    end
    if ((x(i)==0)|((x(i)>0)&(x(i-1)<0))|((x(i)<0)&(x(i-1)>0)))
        Nzero=Nzero+1;
        zerox(Nzero)=x(i);
    end
end

%%下面是上包络线的3次样条插值
fwei=1:lenx;  %制定差值的范围
up_baoluo=interp1(CmaxX,maxX,fwei,'*spline');
%figure(3)
%subplot(2,2,1)
%plot(up_baoluo)       %画出上包络线
down_baoluo=interp1(CminX,minX,fwei,'*spline');
%subplot(2,2,2)
%plot(down_baoluo)    %画出下包络线  
mean_baoluo=(up_baoluo+down_baoluo)./2;
%subplot(2,2,3)
%plot(mean_baoluo)    %画出上包络线和下包络线的均值 
h=x-mean_baoluo;      

扫一扫,关注我们