prediction_one_step.m

来自「rbf网络一步预测matlab程序 精度还不错 很好用的」· M 代码 · 共 65 行

M
65
字号
%% use logistic function to genenrate a sequence 
%%
clear all;
x=[];
T=[];
x(1)=0.22;
k=4;
n=900;
N=400;
% 产生logistic序列,前100个去除
for i=1:n
    x(i+1)=k*x(i)*(1-x(i));
end
X(1:800)=x(101:900);

% 用X的前400个数据训练RBF神经网络
for j=1:N    
    P(1:8,j)=X(j:j+7)';
end
T=X(9:408);   % 目标数据
net1=newrb(P,T,0.001,1);  % 训练RBF神经网络

N1=300;

% 选取X的400—700个数据进行RBF神经网络检验
for j=1:N1
    P1(1:8,j)=X(j+401:j+7+401)';
end
T1=X(410:709);   % 目标数据

%仿真验证
a=sim(net1,P1);  % 对检验数据的预测结果

e = T1-a;        % 一步预测误差

mse = sqrt(e*e')/size(e,2)    % 均方误差 Mean  Square  Error 

%画图描绘仿真结果
figure(2)
plot(X(1:200));
axis([1 200 -0.1 1.1]);
title('logistic混沌序列');
xlabel('t');
ylabel('magnitude');

figure(3)
plot(1:300,T1,'b',1:300,a,'r*');
h = legend('混沌序列','RBF神经网络一步预测值'); 
axis([1 300 -0.5 1.5]);
hold on
title('混沌序列与一步预测值');
xlabel('t');
ylabel('magnitude');


figure(4);
plot(e,'b-');
axis([1 300 -0.1 0.1]);
title('预测误差e');
xlabel('t');
ylabel('magnitude');



⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?