资源简介
本程序为使用matlab编写的EMD的实现程序,并且在程序中对提取包络线的三次样条函数进行了改进,利用本程序可以提高EMD的使用精度。本人多次使用本程序或在本程序的基础上改进新算法,并发表学术论文。

代码片段和文件信息
function imf = emd(x) %EMD的实现函数
% Empiricial Mode Decomposition (Hilbert-Huang Transform)
% imf = emd(x)
% Func : findpeaks
x = transpose(x(:));
imf = [];
while ~ismonotonic(x)
x1 = x;
sd = Inf;
while (sd > 0.1) | ~isimf(x1)
s1 = getspline(x1); %s1是极大值包络
s2 = -getspline(-x1); %s2是极小值包络
x2 = x1-(s1+s2)/2; %x2是原信号减去极大值包络和极小值包络之和的平均值之后的剩余部分
sd = sum((x1-x2).^2)/sum(x1.^2); %极大值与极小值包络平均值的平方和与原信号的平方和之比小于0.1,则认为满足IMF的第二个条件。
x1 = x2;
end
imf{end+1} = x1; %x1是个向量
x = x-x1;
end
imf{end+1} = x;
% FUNCTIONS
function u = ismonotonic(x) %判断X是否是单一分量
u1 = length(findpeaks(x))*length(findpeaks(-x));
if u1 > 0 u = 0;
else u = 1; end
function u = isimf(x) %判断X是否是IMF分量
N = length(x);
u1 = sum(x(1:N-1).*x(2:N) < 0); %零点总数
u2 = length(findpeaks(x))+length(findpeaks(-x)); %极大值与极小值总数
if abs(u1-u2) > 1 u = 0; %极值点数与零点数相等或相差一个时,为IMF分量
else u = 1; end %findpeaks(x)得到极大值点,findpeaks(-x)得到极小值点
function s = getspline(x) %三次样条插值得到极大值点的包络
N = length(x);
p = findpeaks(x);
s = spline([0 p N+1][0 x(p) 0]1:N);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-03-30 10:35 EMD-Hermite\
文件 1690 2011-02-28 16:17 EMD-Hermite\emd.m
文件 1424 2011-03-01 09:37 EMD-Hermite\EMD_Hermite.m
文件 3406 2011-03-01 16:07 EMD-Hermite\EMD_Hermite_tst.asv
文件 3406 2011-03-10 15:20 EMD-Hermite\EMD_Hermite_tst.m
文件 3865 2011-03-01 14:41 EMD-Hermite\EMD_Hermite_tst_1.m
文件 3409 2011-03-01 16:13 EMD-Hermite\EMD_Spline_tst.m
文件 382 2011-03-01 11:29 EMD-Hermite\point.m
文件 652 2011-02-25 10:36 EMD-Hermite\subHermite.m
文件 1240 2011-03-01 11:15 EMD-Hermite\subHermite_test.asv
文件 1234 2011-03-01 11:22 EMD-Hermite\subHermite_test.m
文件 468 2011-02-28 15:05 EMD-Hermite\tst.m
文件 66732 2011-03-01 16:07 EMD-Hermite\unti
相关资源
- EMD 算法MATLAB 程序
- Norden E.Huang的FEEMD算法
- EEMD的MATLAB程序
- eemd分解和作图
- eemd算法程序 matlab代码
- MATLAB信号处理EEMD工具箱
- EMD matlab实现源码
- EEMD集成经验模态分解matlab程序.rar
- emd和eemd算法的matlab源程序
- 中央大学 EMD HHT Matlab 源代码
- EMD HHT Matlab 信号分析,Google英文原版
- HHT变换的3种方法
- matlab自带HHT算法,最简洁的EMD分解
- ModelPredictiveControlSystemDesignandImplement
- 西储大学轴承故障分析matlab代码
- Matlab EMD工具箱+时频分析TFTB工具箱
- 经验模态分解+样本熵matlab程序代码
- 西储大学轴承数据及EMD代码
- MATLAB 2016可用 EMD工具箱
- 振动信号EMD分析matlab算法-abbr_96cb004
- EEMD算法工具包
- 基于EMD分解·和希尔伯特变换(HHT)的
- MATLAB——FEEMD.rar
- EEMD集合经验模态分解matlab程序代码
- 经验模态分解EMD对复杂信号进行分解
- 经验模态分解算法EMD MATLAB程序
- emd算法的matlab实现
- EMD过程中数据拟合的算法改进与实现
- emd程序,EMD分解算法
- 可以运行的EMD工具箱针对hhspectrum错误
评论
共有 条评论