![](https://i-blog.csdnimg.cn/blog_migrate/6028476954fab284399dcadc2979e455.png)
clc;
clear;
format compact;
close all;
rng('default')
%% 读取数据
load D1000.mat
s=f(1:1000);
% 采样时间
t = 1:length(s);
%% EMD分解
imf=emd(s)';
temp_imf=sum(imf,1);
cancha=s-temp_imf;
imf=[imf; cancha];
K=size(imf,1);
figure;
grid on
plot(t,s,'b-','LineWidth', 1)
title('原始功率序列')
xlabel('时间/h')
ylabel('负荷')
figure;
grid on
for i=1:K
subplot(K,1,i)
plot(t,imf(i,:),'b-','LineWidth', 1);
grid on
if i==1;title('EMD分解');
end
if i==K;xlabel('时间/h');end
ylabel(['IMF',num2str(i)])
end
%% 分解重组VS原始图
figure
plot(s,'r-');
hold on
plot(sum(imf,1),'b--')
legend('原始信号','重构信号')
pre_result=[];
true_result=[];
%% 对每个分量建模
for i=1:K
disp(['对第',num2str(i),'个分量建模'])
[x,y]=data_process(imf(i,:),12);
%归一化
method=@mapminmax;%归一化
% method=@mapstd;%标准化
[xs,mappingx]=method(x');x=xs';
[ys,mappingy]=method(y');y=ys';
%划分数据
n=size(x,1);
m=round(n*0.7);%前70%训练,对最后30%进行预测