• 时序分解 | Matlab实现EEMD集合经验模态分解时间序列信号分解


    时序分解 | Matlab实现EEMD集合经验模态分解时间序列信号分解

    效果一览

    在这里插入图片描述

    基本介绍

    Matlab实现EEMD集合经验模态分解时间序列信号分解
    1.分解效果图 ,效果如图所示,可完全满足您的需求~
    2.直接替换数据即可用 适合新手小白 注释清晰~
    3.附赠案例数据 直接运行main一键出图~

    程序设计

    function [modos its]=eemd(x,Nstd,NR,MaxIter)
    %--------------------------------------------------------------------------
    %WARNING: this code needs to include in the same
    %directoy the file emd.m developed by Rilling and Flandrin.
    % -------------------------------------------------------------------------
    %  OUTPUT
    %   modos: contain the obtained modes in a matrix with the rows being the modes
    %   its: contain the iterations needed for each mode for each realization
    %
    %  INPUT
    %  x: signal to decompose
    %  Nstd: noise standard deviation
    %  NR: number of realizations
    %  MaxIter: maximum number of sifting iterations allowed.
    % -------------------------------------------------------------------------
    %   Syntax
    %
    %   modos=eemd(x,Nstd,NR,MaxIter)
    %  [modos its]=eemd(x,Nstd,NR,MaxIter)
    % -------------------------------------------------------------------------
    %  NOTE:   if Nstd=0 and NR=1, the EMD decomposition is obtained.
    % -------------------------------------------------------------------------
     
    
    iter=it;
    if NR>=2
        for i=2:NR
            xconruido=x+Nstd*randn(size(x));
            [temp, ort, it]=emd(xconruido,'MAXITERATIONS',MaxIter);
            temp=temp/NR;
            lit=length(it);
            [p liter]=size(iter);
            if lit<liter
                it=[it zeros(1,liter-lit)];
            end;
            if liter<lit
                iter=[iter zeros(p,lit-liter)];
            end;
            
            iter=[iter;it];
            
            [filas columnas]=size(temp);
            [alto ancho]=size(modos);
            diferencia=alto-filas;
            if filas>alto
                modos=[modos; zeros(abs(diferencia),ancho)];
            end;
            if alto>filas
                temp=[temp;zeros(abs(diferencia),ancho)];
            end;
            
            modos=modos+temp;
        end;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53

    参考资料

    [1] https://blog.csdn.net/kjm13182345320/article/details/129215161
    [2] https://blog.csdn.net/kjm13182345320/article/details/128105718

  • 相关阅读:
    BigDecimal简单介绍
    【BOOST C++ 16 语言扩展】(1) Boost.Coroutine
    8、架构-分布式的共识
    【Linux】Linux基本操作指令
    hive介绍
    YOLOv5:修改backbone为ConvNeXt
    mysql问题汇总
    卷积神经网络(CNN)天气识别
    解决本地jar包导入maven
    旋转链表-双指针思想-LeetCode61
  • 原文地址:https://blog.csdn.net/kjm13182345320/article/details/133840391