• 大小: 4KB
    文件类型: .m
    金币: 2
    下载: 1 次
    发布日期: 2021-07-27
  • 语言: Matlab
  • 标签: LMD  时域分析  

资源简介

局部均值分解是由Smith提出的一种新的非线性和非平稳信号分析方法。由于LMD是依据信号本身的信息进行自适应分解的,产生的PF分量具有真实的物意义。文档是代码 可以完美运行

资源截图

代码片段和文件信息

%%%局域均值分解
%%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);
%x=5*(1+cos(40*pi*t)).*cos(150*pi*t)+5*(1+cos(40*pi*t)).*cos(100*t*pi);
%plot(tx);
%xlabel(‘时间t/s‘)
%ylabel(‘幅值‘)
x=xlsread(‘Book2.xlsx‘);
figure(1)

plot(tx);
xlabel(‘时间t/s‘)
ylabel(‘幅值‘)
figure(3)
y2=x;
L=length(y2);
NFFT = 2^nextpow2(L);
Y = fft(y2NFFT)/L;
f = fs/2*linspace(01NFFT/2);
plot(f2*abs(Y(1:NFFT/2)))
xlabel(‘频率f/Hz‘)
ylabel(‘幅值‘)





%规定输入信号为行向量
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
            if(maxVec(1)                yleft_max=h(maxVec(1));
                yleft_min=-h(1);
            else
                yleft_max=h(1);
                yleft_min=h(minVec(1));
            end
        else
            if (maxVec(1)                yleft_max=h(maxVec(1));
                yleft_min=h(1);
            else
                yleft_max=-h(1);
                yleft_min=h(minVec(1));
            end
        end
        %right end point
        if h(N)>0
            if(maxVec(end)                yright_max=h(N);
                yright_min=h(minVec(end));
            else
         

评论

共有 条评论