• 大小: 3.32KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-03-28
  • 语言: Matlab
  • 标签: matlab  

资源简介


使用MATLAB实现的局部均值分解(LMD, Local Mean Decomposition)代码。大量使用了matlab内建函数,尽可能地精简了代码,仅100余行的代码量很方便阅读修改。并且可以根据输入数据的格式自适应地调整计算、绘图时的各种参数,方便直接运行。

资源截图

代码片段和文件信息

%%%局域均值分解
%%x原始信号

clc
clear
close all
fs=2000;
t=0:1/fs:1;
% x=15*(1+cos(40*pi*t)).*cos(600*pi*t)+5*(1+cos(40*pi*t)).*cos(200*t*pi);
x=cos(2*pi*30*t +0.1*sin(2*pi*10*t))+sin(2*80*t);


%规定输入信号为行向量
if size(x1)~=1
    x = x‘;
end
c = x;
N = length(x);


PF = [];
A1=[];
Si=[];
while(1) %loop 1
    
    a = 1;
    
    while(1) %loop 2
        h = c;
        
        maxVec = [];
        minVec = [];
        
        % look for max and min point 找到h中的局部极大值和极小值
        for i = 2: N - 1
            if h (i - 1) < h (i) && h (i) > h (i + 1)
                maxVec = [maxVec i];
            end
            if h (i - 1) > h (i) && h (i) < h (i + 1)
                minVec = [minVec i];
            end
        end
        
        % check if it is residual  判断是否满足loop2的终止条件
        if (length (maxVec) + length (minVec)) < 2
            break;
        end
        
        % handle end point

        %left end point
        if h(1)>0
            

评论

共有 条评论