emd包络和均值的计算matlab代码,EMD的Matlab程序

这是一个MATLAB代码示例,用于实现经验模态分解(EMD)算法,包括计算数据的固有模态函数(IMF)和包络线的平均值。代码中包含了ismonotonic和isimf函数来检查单调性和IMF条件,并使用getspline函数构造样条曲线。
摘要由CSDN通过智能技术生成

emd.m文件

function imf = emd(x)

% Empiricial Mode Decomposition (Hilbert-Huang Transform)

% EMD分解或HHT变换

% 返回值为cell类型,依次为一次IMF、二次IMF、...、最后残差

x   = transpose(x(:));            %将x转置为行矩阵

imf = [];

while ~ismonotonic(x)            %当x(残余函数)不是单调函数时,分解终止条件

x1 = x;

sd = Inf;

while (sd > 0.1) || ~isimf(x1)    %当标准偏差系数sd大于0.1或X1不是固有模态函数时,

分量终止条件(类柯西收敛准则:当sd介于0.2—0.3之

间时,筛选过程停止)

s1 = getspline(x1);        % 极大值点样条曲线

s2 = -getspline(-x1);       % 极小值点样条曲线

x2 = x1-(s1+s2)/2;        %h(t)=x(t)-m(t)其中m(t)为包络线的平均值

sd = sum((x1-x2).^2)/sum(x1.^2);  %筛选停止准则

x1 = x2;  %x2即h(t)

end

imf{end+1} = x1;                  %n=n+1   Cn=h(t),得imf分量

x = x-x1;                         %r=x(t)-Cn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值