数学建模社区-数学中国

标题: 请问大神这个代码错在哪里,应该如何修改.以及回答一个简单的题目,谢谢。 [打印本页]

作者: 昌辉9    时间: 2014-9-3 16:19
标题: 请问大神这个代码错在哪里,应该如何修改.以及回答一个简单的题目,谢谢。
day=[8.6187,8.3507,8.3142,8.2898,8.2791,8.2796,8.2784,8.2770,8.2770,8.2774,8.2780,8.1013,7.8087,7.3872,6.85,6.81,6.622,6.61,6.25,6.07];
& J: M8 T! o! R/ G, M. n  Zdayhistory=day(1:16);%取其中三十天作为历史数据样本  g* T0 }  w' L9 Q0 e
dayhismod=reshape(dayhistory,4,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的
: o& s2 V' J% @dayday=day(1:12);% 取其中的前25天8 H# E" y( h/ I
daypost=day(5:16);%取其中的随后25天
1 J; J9 \1 c% Q! q' z- up=reshape(dayday,3,4);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本  K+ B9 y2 |9 o/ T+ o( z
t=reshape(daypost,3,4); %将随后的25天分为5行5列矩阵作为网络的目标输出向量4 a) J1 `: n/ y% J: b2 u% a, J# a
daylast=day(13:16);) E. f( h& F$ x/ h, i# R& D/ f
h3=reshape(daylast,4,1);% 将倒数第二个样本作为网络测试时的输入样本
; }6 i7 I# S$ d  k7 m% ^r=5:16;2 w; G& W4 U+ n: k- a
rr=reshape(r,4,3);
) ^- |% l9 s- V%%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%7 x0 t- H7 \3 X
net=newff(minmax(p),[4,3],{\'purelin\' \'purelin\'},\'trainlm\');) E( }: u! w3 U! D6 y1 r. E
y1=sim(net,p);2 j% o) ~; G0 }$ ]& G: H# C
% 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量. }$ V: G; p/ J: o' V& S0 `
% 两层的传递函数均为purelin* R  Y' Z/ g  X* R) z+ A: M" a
% 训练函数为trainlm
: `% P7 ~- ]' l) `' Y6 _' }1 W% 所训练的网络大小为[5,5]
; T2 J5 a( S2 a4 e. ]1 _4 k! H% 仿真训练前的网络
. R! K2 Q/ Y/ i7 A* t5 E: K7 P+ X# r* n! S) V4 h, g
%%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%
& G4 s  ^3 [1 f7 T( `% network parameters:8 [! U* x, W- `& \* ~
%   epochs--epochs of the train
: W: j3 i/ E7 F# i. d) G%   goal--errors goal of the network
9 Y- \& h7 h: O5 A4 R5 p. X7 d& D%   lr--learning rate
7 b" O- Q" c+ {0 s& q- E+ T' h%   shows--epochs between the displays& q% n- u2 C. ]$ P9 u+ S! {
%   time--Maximum time to train in seconds$ z2 k! Z( m# ]! T" ^: U- H& w
net.trainParam.epochs=200000;  % 训练次数
7 N: U4 P; e/ ]( RnettrainParam.goal=0.0001;  % 误差期望值7 @+ w. S7 [0 l2 K, p0 j
% returns of the train:- \0 `( w! D! `2 s. U! Z( Z' @
%   net--New network3 ^4 ^9 l# O( ]! g% |& y0 F5 F
%    tr--Training record (epoch and perf).
% z* [$ t; o4 L- R4 U" H$ E& I2 L%     Y--Network outputs.
% O8 z% ?2 \8 @( o: ^3 n* `0 V, q%     E--Network errors.
4 P- x% X1 Y1 {. H3 [[net,tr,Y,E]=train(net,p,t); ' L5 T7 [- ^. {+ x9 K! @
%%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%
" a+ _( u5 q4 e4 H- C# r" r% input the testing points here %$ _3 V% V/ @% X4 D
title(\'神经网络训练结果\');
8 b3 V% F4 H; }7 [( Qxlabel(\'时间(天)\');  K* Q1 l+ A' ]! I9 Q
ylabel(\'仿真输出结果\');
6 j5 w5 ^$ H+ v( H4 p- O1 vlegend(\'仿真模拟值\',\'实际值\',\'神经网络预测值\');
- z5 L* V" @) H8 r9 y%%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%9 U2 N- w7 a$ y& q
x=1:4;
% r7 j  M; V, A6 A$ w3 i& n* }y=1:4;
: k$ b5 n; Q( [' u7 o, iy21=sim(net,p);
( m0 x" J) ~: ?2 wy2=reshape(y21,1,12);1 s/ c) f* K5 k( A, X
clf
; q( c7 ~% S2 lplot(r,y2,\'b-^\')" a. L2 S5 f* l8 s- N- s9 c9 }& c
hold on
/ X7 v! o1 R0 Nplot(1:20,day,\'r-*\')
1 Q8 p1 Y1 b5 S%%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%8 T/ y, D. \# B% V
y3=sim(net,h3);. E# s1 S0 y. c0 e9 j: V
plot(17:2:20,y3,\'-*\')9 g9 D9 W! F# k+ {" w6 m
hold on
  ?8 x3 y1 F5 A- utitle(\'神经网络训练结果\');0 x& \: N- k: j
xlabel(\'时间(天)\');
) L! c$ o: o+ b0 [- {; ~, g- gylabel(\'仿真输出结果\');3 N4 c$ \  U& @* k1 i
legend(\'仿真模拟值\',\'实际值\',\'神经网络预测值\');
0 ]% N1 E0 B8 s: z5 A6 m%%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%* W: d; H) a. e
x=1:4;( S9 |5 F: Z/ d4 n
y=1:4;
9 O1 f5 P1 u: |. |, G7 uplot3(x(1:3),y(1:3),E(x(1:3),y(1:3)))
7 p% Y5 J2 G' F( L6 W2 K运用简单的神经网络,怎样处理已经有的数据,一般输出的怎样的结果,有什么用,谢谢

. _1 a/ e& j, Q1 ^3 R




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5