?? bp.m
字號:
%%
%對程序的說明%
%做生成數(使用0.1做因子),之后13年的數據按統計方法標準化后輸入,訓練,仿真,對比結果。這個過程相當于插值計算%
%輸出結果請最后五句r1,r,l,plotyy(k,to,k,t),plotyy(k,a,k,f)%
%這樣做的缺點是不能檢驗預測效果的好壞,還有一點我對網絡初始化的過程沒有把握%
clear
% 數據輸入
inv=[189.6 244.2 328.5 405.3 487.5 568.6 669.9 801.6 785.9 859.2 979.7 1086.3 1241];
d1=[15.3 16.6 17.2 22.8 37.6 30.8 38.9 50.8 58.2 41.2 55.8 71.7 82.3];
d2=[117.7 140.7 177.8 209.8 247.7 290.8 343.2 337.1 308.1 353.6 350.1 367.2 415.7];
d3=[56.6 86.9 133.5 172.6 202.2 247 287.8 413.7 419.6 464.4 573.8 647.4 742.1];
f=[822.3 959.7 1198.4 1607.5 1997.6 2380.9 2683.8 2798.9 2897.4 3253 3561 3882 4433];
k=1991:1:2003;
% 使用13年數據訓練得到網絡仿真計算相對誤差
%對原始數據初始化的過程為t(1)=f(1); t(i)=t(i-1)+0.1*f(i)(i=2:13)
% 累加 p1(1)=d1(1);for i=2:13 p1(i)=0.1*d1(i)+p1(i-1);end %
% 累減 a(1)=v(1);for i=2:13 a(i)=(v(i)-v(i-1))*10;end %
% 先賦予0值
p1=zeros(1,13);p2=zeros(1,13);p3=zeros(1,13);t=zeros(1,13);
p1(1)=d1(1);for i=2:13 p1(i)=0.*d1(i)+p1(i-1);end
p2(1)=d2(1);for i=2:13 p2(i)=0.1*d2(i)+p2(i-1);end
p3(1)=d3(1);for i=2:13 p3(i)=0.1*d3(i)+p3(i-1);end
t(1)=f(1);for i=2:13 t(i)=0.1*f(i)+t(i-1);end
b=[p1;p2;p3;t]';
p=[(p1-mean(p1))./std(p1);(p2-mean(p2))./std(p2);(p3-mean(p3))./std(p3)];
tt=(t- mean(t))./std(t);%數據標準化處理,標準化為網絡輸入p,期望輸出tt
%建立網絡并訓練
net=newff(minmax(p),[4,1],{'tansig','purelin'},'trainlm');
net.iw{1,1}=zeros(size(net.iw{1,1}))+0.5;
net.lw{2,1}=zeros(size(net.lw{2,1}))+0.75;
net.b{1,1}=zeros(size(net.b{1,1}))+0.5;
net.b{2,1}=zeros(size(net.b{2,1}));
net.trainParam.epochs=3000;
net.trainParam.goal =0.000005;
net=train(net,p,tt);
%網絡仿真得到網絡輸出,并計算誤差
tt1=sim(net,p);
to=tt1.*std(t)+mean(t);%利用標準化的逆變換得到t1的近似值to
a=zeros(1,13);a(1)=to(1);
for i=2:13 a(i)=(to(i)-to(i-1))*10; end %累減得到近似的實際產值a
r_net=(tt1-tt)./tt;%網絡相對誤差
r_add=(to-t)./t;%總產值累加數相對誤差
r_real=(a-f)./f;%實際總產值相對誤差
%輸出結果%
r1=[r_net;r_add;r_real]'%網絡相對誤差/累加數相對誤差/實際值相對誤差
r=r_real./r_add %誤差放大倍數
l=[to;t;to-t;a;f;a-f]'%累加數計算值/累加數/絕對誤差//計算的實際值/實際值/絕對誤差
plotyy(k,to,k,t);%總產值的仿真累加值(to)隨時間變化曲線與實際累加值(t)隨時間變化曲線
%在這里設置斷點,以查看這兩條曲線%
plotyy(k,a,k,f);%總產值的仿真值(a)隨時間變化曲線與實際值(f)隨時間變化曲線
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -