700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > EMD-GWO-SVR基于经验模态分解和灰狼算法优化支持向量机的时间序列预测MATLAB代码。(含

EMD-GWO-SVR基于经验模态分解和灰狼算法优化支持向量机的时间序列预测MATLAB代码。(含

时间:2022-10-15 14:03:26

相关推荐

EMD-GWO-SVR基于经验模态分解和灰狼算法优化支持向量机的时间序列预测MATLAB代码。(含

clc;

clear;

format compact;

close all;

rng('default')

%% 读取数据

load data.mat;

f=data(1001:2000)';

% 采样时间

t = 1:length(f);

%% 记录真实值

[x,y]=data_process(f,12); %步长为12

n=size(x,1);

m=round(n*0.7); %前70%训练,对最后30%进行预测

PP_train=x(1:m,:)';

PP_test=x(m+1:end,:)';

TT_train=y(1:m,:)';

TT_test=y(m+1:end,:)';

%% EMD分解

[c,a,b]=emd(f); % c为分解后IMF分量,a一个数,b为1*N的向量

fs=1;

%计算每个IMF分量及最后一个剩余分量residual与原始信号的相关性

[m,n]=size(c);% %size()函数返回矩阵的行数和列数

%% 画出分解图

%画出每个IMF分量及最后一个剩余分量residual的图形

figure(1)

subplot(m+1,1,1) %m=5,分解得到5个IMF分量

plot(t,f)

%set(gca,'fontname','times New Roman')%表明字体等,可不用

%set(gca,'fontsize',14.0)

ylabel(['原始信号'])

%画出imf[i]的图形

for i=1:m-1

subplot(m+1,1,i+1);

set(gcf,'color','w')

plot(t,c(i,:),'k')

set(gca,'fontname','times New Roman')

%set(gca,'fontsize',14.0)

ylabel(['imf',int2str(i)]) %显示IMF1,2,3,4

end

%画残余分量

subplot(m+1,1,m+1);

set(gcf,'color','w')

plot(t,c(m,:),'k')

set(gca,'fontname','times New Roman')

%set(gca,'fontsize',14.0)

ylabel('res')

%% 分解完成

imf=c(2:end,:); %取出imf分量

%% EMD-GWO-SVR预测

pre_result2=[];

pre_result1=[];

%% 对每个分量建模

for i=1:size(imf,1)

disp(['对第',num2str(i),'个分量建模'])

[x,y]=data_process(imf(i,:),12); %步长为12

%% 划分数据

n=size(x,1);

m=round(n*0.7); %前70%训练,对最后30%进行预测

P_train=x(1:m,:)';

P_test=x(m+1:end,:)';

T_train=y(1:m,:)';

T_test=y(m+1:end,:)';

%% 划分训练集和测试集

M = size(P_train, 2);

N = size(P_test, 2);

%% 数据归一化

[p_train, ps_input] = mapminmax(P_train, 0, 1);

p_test = mapminmax('apply', P_test, ps_input);

[t_train, ps_output] = mapminmax(T_train, 0, 1);

t_test = mapminmax('apply', T_test, ps_output);

EMD-GWO-SVR基于经验模态分解和灰狼算法优化支持向量机的时间序列预测MATLAB代码。(含SVR EMD-SVR GWO-SVR EMD-GWO-SVR等4个模型的对比)。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。