clc;
clear;
data=csvread('D:\data.csv'); %读取csv文件,将地址换为自己文件的地址即可运行,但需要将采样频率调整为你数据的采样频率
N=length(data); %显示数据长度
%%
Fs=25600; %输入采样频率
T=1/Fs; %两个采样点之间的时间间隔
L=N; %选择做变换的数据长度,这里选择等于数据长度
t=0:T:(L-1)/Fs; %时域图像横轴坐标
%时域图像
figure(1)
plot(t,data);
title("信号时域图像")
xlabel('t(s)')
ylabel('幅值')
%% 进行emd分解
[imf,residual]=emd(data,'Interpolation','pchip','MaxNumIMF',10,'MaxNumExtrema',1,'MaxEnergyRatio',20);
% 'Interpolation','pchip'当‘data’为平滑信号时使用‘spline’,为非平滑信号时使用‘pchip’
% 'MaxNumIMF',10 要分解的imf分量的个数,默认为10
% 'MaxNumExtrema',1 ‘residual’分量极值点的个数,默认为1
% 'MaxEnergyRatio',20 信号与‘residual’的能量比值,默认为20
%%
[a,b]=size(imf); %取得的imf分量矩阵的大小,a为单个imf分量的长度;b为imf分量的个数
for i = 1:1:b
%每个imf分量分别画图
figure(i+1)
plot(t,imf(:,i))
xlabel('time(s)')
ylabel('幅值')
title(sprintf("第%d个imf分量",i))
end
figure(b+2) %残余分量画图
plot(t,residual)
title('残余分量')
%% 在5*2的图布上绘制imf分量图
for i=1:1:b
figure(b+3)
subplot(5,2,i)
plot(t,imf(:,i))
title(sprintf("第%d个imf分量",i))
end
- 1
- 2
- 3
- 4
- 5
- 6
前往页