emd分解 数据

本文介绍了如何使用经验模态分解(EMD)算法对数据进行分解,并展示了一段MATLAB代码来实现这个过程。通过计算分解后的各固有模式函数(IMF)分量之间的相关系数,进行数据的相关性分析。代码中涉及到findpeak函数寻找峰值,getspline函数用于获取三次样条函数,以及isimf和ismonotonic函数作为EMD的终止条件。
摘要由CSDN通过智能技术生成

findpeak.m

function n=findpeak(x)%Find peaks.找到极大值,n 为极值所在位置 n=find(diff(diff(x)>0)x(n));n(u)=n(u)+1;

getspline.m

function s=getspline(x)%三次样条函数拟合成元数据包络线

N=length(x);p=findpeak(x);s=spline([0 p N+1],[0 x(p) 0],1:N);

isimf.m

function u=isimf(x)%u=0,表示 x 不是固有模式函数,u=1 表示 x 是固有函数模式 N=length(x);

u1= sum(x(1:N-1).*x(2:N) < 0);

%求零点数 u2= length(findpeak(x))+length(findpeak(-x));%求极值点数 if abs(u1-u2)>1 u=0;

else u=1;

end

ismonotonic.m%EMD 终止条件

function u=ismonotonic(x)%u=0 表示 x 不是单调函数,u=1 表示 x 为单调函数 u1=length(findpeak(x))*length(findpeak(-x));

if u1>0 u=0; else u=1;

end

emd.m

function imf=emd(x,SDmin,SDmax)% imf = emd(x,SDmin,SDmax) x=x';

imf=

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值