EMD-SSA-BILSTM基于经验模态分解和麻雀算法优化双向长短期记忆网络的时间序列预测MATLAB代码

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%进行预测

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能算法及其模型预测

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值