数学建模社区-数学中国

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

作者: 昌辉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];% y2 Y4 y! F: h  m2 f4 h7 F
dayhistory=day(1:16);%取其中三十天作为历史数据样本
( d/ l& y, f# J; @  cdayhismod=reshape(dayhistory,4,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的9 t0 m9 z$ r" f& ^+ \0 T
dayday=day(1:12);% 取其中的前25天8 K5 j4 z4 L' Y5 ^) c
daypost=day(5:16);%取其中的随后25天
& W) [1 m2 g$ d- T3 c' J# Kp=reshape(dayday,3,4);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本% T% v8 S* T# D5 Q+ J9 k
t=reshape(daypost,3,4); %将随后的25天分为5行5列矩阵作为网络的目标输出向量! t# |  f; V+ `+ b1 [
daylast=day(13:16);
' z! |- S& t7 d' J! h/ d$ \h3=reshape(daylast,4,1);% 将倒数第二个样本作为网络测试时的输入样本
4 m# _% X7 q' r, V- D. Y1 fr=5:16;+ H1 A/ ]; ?! q9 p/ N
rr=reshape(r,4,3);
) }& C1 [0 K. t% ?% i% ^%%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%
% V. [  k# |: w; H. A$ C9 n6 H: `net=newff(minmax(p),[4,3],{\'purelin\' \'purelin\'},\'trainlm\');7 R$ ~  F" V* I
y1=sim(net,p);# V  l% v% G4 {1 h+ u
% 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量
% p6 W. R1 B' @9 I: l, v1 x% 两层的传递函数均为purelin
& p- W% v" |  f5 L% 训练函数为trainlm
) K1 d. m4 {% `0 }; N1 [% 所训练的网络大小为[5,5]
2 I- y  S; m1 S/ i+ s3 O/ Z% 仿真训练前的网络+ p8 r6 U9 l5 r8 E/ t, ^' V

. N! G! ]* k  h! J& `%%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%
" O+ U0 G3 w- C( u! t( z0 K& h! d2 [% network parameters:% j8 G9 l0 v' F9 z- ]( J
%   epochs--epochs of the train# D, ^- Q2 }5 A
%   goal--errors goal of the network& y' Y/ h3 n+ V- x2 K( N
%   lr--learning rate: Q9 ]1 |* C% a1 s( n' L% s
%   shows--epochs between the displays
# K. G2 e1 n8 m+ U4 v' h9 U%   time--Maximum time to train in seconds
: [. Q9 t" |  f7 d/ U8 |6 L1 }( ^- t0 Snet.trainParam.epochs=200000;  % 训练次数
* [7 ?9 c: x* f/ I! ?nettrainParam.goal=0.0001;  % 误差期望值0 g4 K: N/ \& U. T8 v' x
% returns of the train:" Y4 K: u& G- d! f0 z& m. E
%   net--New network
: Q0 U4 t- r# G2 j%    tr--Training record (epoch and perf).& I: p+ M5 c  M, z4 O
%     Y--Network outputs.6 a5 h$ ~" Q, _1 g+ w0 ~
%     E--Network errors.
0 T+ I% s0 r6 O: v$ q% I[net,tr,Y,E]=train(net,p,t);
- {, o7 X2 I$ T) y( K%%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%
8 o$ u3 g; N; \: Q% e1 U% input the testing points here %
/ Z* Y  @& P. }. K  q, }+ xtitle(\'神经网络训练结果\');1 ^) p/ j8 T# V' A7 u
xlabel(\'时间(天)\');
4 I& V# U" p1 E- A9 o# bylabel(\'仿真输出结果\');+ P1 j- z/ U" P$ [9 E3 Z" }% c
legend(\'仿真模拟值\',\'实际值\',\'神经网络预测值\');) f) F3 @, P! }8 X& o
%%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%( W) x# V, g5 c' v9 n7 V: ^
x=1:4;
7 ?, n' w6 Q+ ^/ e0 p' r4 `y=1:4;
4 o6 D6 I: ^* f9 ^3 By21=sim(net,p);+ ]$ J* |0 U3 v: C; Y% J, o
y2=reshape(y21,1,12);
( x7 E5 j9 r: q* t' {8 q9 R- r# bclf
1 M" a* h+ N4 ?1 zplot(r,y2,\'b-^\')
/ q6 z9 v% @" B! Shold on
: _: X- ?* T5 I: U1 jplot(1:20,day,\'r-*\')% `6 J% p* z6 t( |
%%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%
7 Y" f( |+ L1 Hy3=sim(net,h3);
. }) ]4 F& R5 t- mplot(17:2:20,y3,\'-*\')
4 @) N! z9 p* z* Mhold on
9 L9 G( I9 ~) D$ y5 o0 o3 _1 d1 vtitle(\'神经网络训练结果\');/ _5 A% @/ G1 U/ D0 k/ }
xlabel(\'时间(天)\');
- j4 K9 X9 s" A) [- [" Z5 ^0 dylabel(\'仿真输出结果\');
' ^; ?$ C3 I+ |7 q( ?legend(\'仿真模拟值\',\'实际值\',\'神经网络预测值\');5 J' J+ c' T7 @2 P! \
%%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
, p# \. p& f. [1 Sx=1:4;  l2 H; v0 K4 d& t
y=1:4;
5 j1 w# K. U1 r. p# Mplot3(x(1:3),y(1:3),E(x(1:3),y(1:3)))( @0 W2 t1 D* c
运用简单的神经网络,怎样处理已经有的数据,一般输出的怎样的结果,有什么用,谢谢
" s$ d/ G3 \2 ^; @6 `+ Q1 W4 @





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