本文主要是介绍时序分解 | Matlab实现EEMD集合经验模态分解时间序列信号分解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
时序分解 | Matlab实现EEMD集合经验模态分解时间序列信号分解
目录
- 时序分解 | Matlab实现EEMD集合经验模态分解时间序列信号分解
- 效果一览
- 基本介绍
- 程序设计
- 参考资料
效果一览
基本介绍
Matlab实现EEMD集合经验模态分解时间序列信号分解
1.分解效果图 ,效果如图所示,可完全满足您的需求~
2.直接替换数据即可用 适合新手小白 注释清晰~
3.附赠案例数据 直接运行main一键出图~
程序设计
- 完整源码和数据获取方式:Matlab实现EEMD集合经验模态分解时间序列信号分解。
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>=2for i=2:NRxconruido=x+Nstd*randn(size(x));[temp, ort, it]=emd(xconruido,'MAXITERATIONS',MaxIter);temp=temp/NR;lit=length(it);[p liter]=size(iter);if lit<literit=[it zeros(1,liter-lit)];end;if liter<lititer=[iter zeros(p,lit-liter)];end;iter=[iter;it];[filas columnas]=size(temp);[alto ancho]=size(modos);diferencia=alto-filas;if filas>altomodos=[modos; zeros(abs(diferencia),ancho)];end;if alto>filastemp=[temp;zeros(abs(diferencia),ancho)];end;modos=modos+temp;end;
参考资料
[1] https://blog.csdn.net/kjm13182345320/article/details/129215161
[2] https://blog.csdn.net/kjm13182345320/article/details/128105718
这篇关于时序分解 | Matlab实现EEMD集合经验模态分解时间序列信号分解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!