下面是源程序:
clc
clear all
%原始数据
%p=load('shuru.txt');
%p=p';
p=[1994:2010];
%t=load('shuchu.txt');
%t=t';
t=[124.175 117.0666667 108.3333333 102.8083333 99.225 98.6 100.35 100.725 99.41666667 101.1666667 103.9 101.8166667 101.4666667 104.7666667 105.9 99.29166667 103.32255];
% plot(p,t)
%数据归一化
[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);
dx=[-1,1];
%BP网络训练
net=newff(dx,[5,1],{'tansig','tansig','purelin'},'traingdx');
net.trainParam.show=1000; %每1000轮回显示一次结果
net.trainParam.Lr=0.05; %学习速率为0.05
net.trainParam.epochs=3000; %循环10000次
net.trainParam.goal=1e-5; %均方误差
net=train(net,pn,tn);
%对原数据进行仿真
an=sim(net,pn);
a=postmnmx(an,mint,maxt); %还原仿真得到的数据
%与实际数据对比
x=1994:2010;
newk=a(1,:);
figure;
plot(x,newk,'r-o',x,t,'b--+');
legend('预测值','实际值');
xlabel('时间');
ylabel('cpi的值');
%对新数据进行预测
pnew=[2012:2025];%预测2012年到2015年数据
pnewn=tramnmx(pnew,minp,maxp);%新数据归一化
anewn=sim(net,pnewn);
anew=postmnmx(anewn,mint,maxt)%还原得到预测值