数学建模社区-数学中国
标题:
请问大神这个代码错在哪里,应该如何修改.以及回答一个简单的题目,谢谢。
[打印本页]
作者:
昌辉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; @ c
dayhismod=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# K
p=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 f
r=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 S
net.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, }+ x
title(\'神经网络训练结果\');
1 ^) p/ j8 T# V' A7 u
xlabel(\'时间(天)\');
4 I& V# U" p1 E- A9 o# b
ylabel(\'仿真输出结果\');
+ 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 B
y21=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# b
clf
1 M" a* h+ N4 ?1 z
plot(r,y2,\'b-^\')
/ q6 z9 v% @" B! S
hold on
: _: X- ?* T5 I: U1 j
plot(1:20,day,\'r-*\')
% `6 J% p* z6 t( |
%%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%
7 Y" f( |+ L1 H
y3=sim(net,h3);
. }) ]4 F& R5 t- m
plot(17:2:20,y3,\'-*\')
4 @) N! z9 p* z* M
hold on
9 L9 G( I9 ~) D$ y5 o0 o3 _1 d1 v
title(\'神经网络训练结果\');
/ _5 A% @/ G1 U/ D0 k/ }
xlabel(\'时间(天)\');
- j4 K9 X9 s" A) [- [" Z5 ^0 d
ylabel(\'仿真输出结果\');
' ^; ?$ C3 I+ |7 q( ?
legend(\'仿真模拟值\',\'实际值\',\'神经网络预测值\');
5 J' J+ c' T7 @2 P! \
%%%%%%%%%%%%%%%%%% 绘制误差曲面 %%%%%%%%%%%%%
, p# \. p& f. [1 S
x=1:4;
l2 H; v0 K4 d& t
y=1:4;
5 j1 w# K. U1 r. p# M
plot3(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