数学建模社区-数学中国

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

作者: 昌辉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];# S; m6 `" q: p% W4 q. g) k
dayhistory=day(1:16);%取其中三十天作为历史数据样本
( C7 y) M0 C/ L9 q$ [; o' H  P+ odayhismod=reshape(dayhistory,4,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的' l) k. @' W, d3 g& X! d) Q
dayday=day(1:12);% 取其中的前25天
# H/ T* i8 s; B2 Q; n8 B5 a3 A$ l+ G/ [daypost=day(5:16);%取其中的随后25天% h% j* h2 q( ]* \0 z0 E1 J& B
p=reshape(dayday,3,4);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本/ c0 [+ [8 y. g# h( g: ^
t=reshape(daypost,3,4); %将随后的25天分为5行5列矩阵作为网络的目标输出向量
) p& l3 F7 g9 o' M- ~+ a0 l* Idaylast=day(13:16);
4 d  M& U" C& q' _  S2 i7 Kh3=reshape(daylast,4,1);% 将倒数第二个样本作为网络测试时的输入样本$ W- U, P! F& [  V0 `8 a+ Z8 l
r=5:16;
( k$ b' y/ p( H5 Brr=reshape(r,4,3);0 E. g( T) A4 ^2 _
%%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%" l0 A4 G) t$ L7 k
net=newff(minmax(p),[4,3],{\'purelin\' \'purelin\'},\'trainlm\');# U' c/ k+ C* f
y1=sim(net,p);
4 o) e9 V8 y9 t  t( I/ A% 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量" `9 p* d. T0 t) j. R* u" O8 o
% 两层的传递函数均为purelin
8 x6 u2 `/ F6 L: x9 Q1 M$ N, P' k% 训练函数为trainlm- o/ B" V0 A  d! @; V6 d
% 所训练的网络大小为[5,5]
9 J7 e" s2 Z5 Y2 L% 仿真训练前的网络
4 E3 C$ Z. ]+ c9 }; u( b) L" h  e& t" X- t" |; ~; {$ _, Q% q2 u
%%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%
' g# j9 P1 U2 y! t6 l! v& T% network parameters:# n' x+ M) Z6 G6 t* }- n
%   epochs--epochs of the train  e& D& U3 _0 _  \
%   goal--errors goal of the network( L* N  i: M+ @* x
%   lr--learning rate
/ ~* l$ ^# i! v2 E% f%   shows--epochs between the displays: Y5 o5 |  e7 l/ B. Z* n$ M; ?7 O
%   time--Maximum time to train in seconds2 ]. X7 t" O1 }, |/ D* t0 e
net.trainParam.epochs=200000;  % 训练次数
# o* E! d' f" m3 K8 onettrainParam.goal=0.0001;  % 误差期望值  }) b( m7 Z! u1 ~2 R# p- c1 b) H
% returns of the train:
# Z: D; Q* |* [%   net--New network' y" U" K3 ]6 R7 M2 Y
%    tr--Training record (epoch and perf).
8 C4 R4 ~( L/ u) ?1 ^3 x%     Y--Network outputs.
8 R3 A/ q0 [/ ]1 @# K* R7 I; K%     E--Network errors.
* ?. L7 V* v. |& s+ k7 h) L# v[net,tr,Y,E]=train(net,p,t); & N7 n. ]& [4 w" J% n
%%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%% j1 e3 \/ b5 X* x& |+ b
% input the testing points here %
. ?1 @9 ~; }7 d# L. \4 G+ h; x! ]& utitle(\'神经网络训练结果\');) T# L+ b  S! w, m3 n3 R4 f3 P
xlabel(\'时间(天)\');; G$ Z9 E" I! h/ V/ E6 @2 }# l" I  I
ylabel(\'仿真输出结果\');9 t  l3 K$ f+ p- W
legend(\'仿真模拟值\',\'实际值\',\'神经网络预测值\');. N, \* `0 `' n; i- F2 [& w) U
%%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
1 |6 Q* ?: Y: C2 U! px=1:4;
2 i" H+ g3 S" V: k! C) g0 Hy=1:4;4 s7 Q- f1 D8 L% d: c! n
y21=sim(net,p);
, o2 E1 ^  Q* a% O8 Qy2=reshape(y21,1,12);% f5 ]* ]0 r  X  N/ Y
clf
3 o6 W# Q5 y' y: P7 M6 Bplot(r,y2,\'b-^\')) u1 D2 C# d* P
hold on
- p3 S, r3 ?7 d4 Y; F7 W. B; s9 Lplot(1:20,day,\'r-*\')
" ~. h$ U* t0 w* d$ B%%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%
/ ?. F, W1 w, [! M, qy3=sim(net,h3);
5 L* k3 Y- H8 p, y" |plot(17:2:20,y3,\'-*\')
* M% m3 @) m+ dhold on: u! Z# Q6 j! q7 ^' Q
title(\'神经网络训练结果\');
. v, Q; C/ R3 `1 e/ ?xlabel(\'时间(天)\');
9 k4 h) U: o" \, f* sylabel(\'仿真输出结果\');
, L: d9 P! F! [3 Slegend(\'仿真模拟值\',\'实际值\',\'神经网络预测值\');" b' `  e' O4 k, u
%%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
7 e5 ^$ G4 A  c# Q& D1 o/ P6 b9 P5 Px=1:4;# l( s2 v0 Z& D4 A) f- \
y=1:4;2 j% A+ y7 R/ ]3 Y2 {1 b
plot3(x(1:3),y(1:3),E(x(1:3),y(1:3)))/ ~5 A1 m: G' X$ d3 p
运用简单的神经网络,怎样处理已经有的数据,一般输出的怎样的结果,有什么用,谢谢

6 w6 a" K! ?+ a9 j7 V5 B2 r




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