数学建模社区-数学中国

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

作者: 昌辉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];- M. P9 C: W) T9 G; \
dayhistory=day(1:16);%取其中三十天作为历史数据样本# O. f  ]! W( ?* ]$ n9 s
dayhismod=reshape(dayhistory,4,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的
0 e" |) Y6 ^' X3 R' Z# D- W" Hdayday=day(1:12);% 取其中的前25天
1 b" R$ p- c- L" q0 q) A* zdaypost=day(5:16);%取其中的随后25天) g/ \# @7 ?3 T: @% ]7 i$ S' e/ |
p=reshape(dayday,3,4);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本' `" T* s: f, V' Z; k
t=reshape(daypost,3,4); %将随后的25天分为5行5列矩阵作为网络的目标输出向量
- y4 a* u1 r% l) udaylast=day(13:16);! Z0 f* f' F* t9 p: o, y1 F5 p; v
h3=reshape(daylast,4,1);% 将倒数第二个样本作为网络测试时的输入样本
( {, B. `8 N" B% Q3 [r=5:16;
! V; c$ V0 ?" B* Wrr=reshape(r,4,3);
" y/ H$ w$ Q5 D1 B' @8 v%%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%9 s" K- x' \# Q7 E! b
net=newff(minmax(p),[4,3],{\'purelin\' \'purelin\'},\'trainlm\');/ I4 d" [) {3 [& y
y1=sim(net,p);
. H, ^1 ~' J  P, \$ \+ P% 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量
# f5 B2 t9 ]! l6 h  Z# {% 两层的传递函数均为purelin4 q$ C* P+ s' c, W# e6 S- i4 [
% 训练函数为trainlm$ V; Z. ]/ J! w1 [6 @: C
% 所训练的网络大小为[5,5]0 D+ Q% H! @. }! j  D8 k
% 仿真训练前的网络1 N7 d2 F( T$ u' I" @' k' |, M
$ h' T. j! \) d5 U7 x+ C
%%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%& _) P4 Y7 B6 e! O* b
% network parameters:
7 k4 `' {6 I" J8 j9 q; g, d%   epochs--epochs of the train1 P' n* Y  @8 g* v% }% v
%   goal--errors goal of the network* H/ I6 |- S' N9 p
%   lr--learning rate
8 Z" Y4 [: I/ `0 r%   shows--epochs between the displays
- a+ i$ ^) o( [4 a5 j+ o4 |%   time--Maximum time to train in seconds( [; d. a% t% c* j8 ?
net.trainParam.epochs=200000;  % 训练次数0 h- B, T, M: Z% ?) Y! G
nettrainParam.goal=0.0001;  % 误差期望值
  G, u$ C/ c4 F' W% returns of the train:
; U1 w* q; G* Y: _2 R%   net--New network( Q8 W2 C: X, ^  D
%    tr--Training record (epoch and perf).
: \5 y3 k+ B, C' B) E& U6 v%     Y--Network outputs.
3 H4 u& N% I1 {9 O2 J- a, R%     E--Network errors.7 |7 G0 V. ]! ?, m
[net,tr,Y,E]=train(net,p,t); 5 z1 n+ n# h- Q$ n9 n& \
%%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%+ `# s; X& U  d. |: y- `2 _
% input the testing points here %
! p6 m" s9 G6 C! s1 W3 @7 T+ Xtitle(\'神经网络训练结果\');7 ~  c2 @# z) ~8 R" U5 H8 u
xlabel(\'时间(天)\');
8 l. y, y4 S" g$ C* a% Gylabel(\'仿真输出结果\');/ ?* i! z0 e; |+ I
legend(\'仿真模拟值\',\'实际值\',\'神经网络预测值\');
; N" [: O% ]" |% Y" v/ s0 _%%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
& \0 Z3 X" L8 ]! [2 o* |9 e$ U. Px=1:4;# R9 c: q3 ~" [6 V4 G
y=1:4;6 z' F! o1 M0 P4 b" V2 R0 g5 w8 V( ^
y21=sim(net,p);: I8 k4 q0 u' ~; T# a
y2=reshape(y21,1,12);
0 U2 z' R# K% @clf
7 e" y# w% X& T: V8 t, E; Pplot(r,y2,\'b-^\')+ d2 P  {" b- y* \& o6 c$ u: z
hold on9 g2 E9 U, K& s1 p5 n4 z
plot(1:20,day,\'r-*\')/ D+ b* {- o( }; {. Q( b+ \
%%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%
; D2 \1 ?7 n! F& F$ g+ X7 ty3=sim(net,h3);
2 m- \7 n! z; s+ L( Bplot(17:2:20,y3,\'-*\')4 F+ o6 V  V: X- \6 u8 l
hold on
4 s% a  w. }9 m  Ntitle(\'神经网络训练结果\');
6 Z5 `2 ^$ U( U* w# J. S6 bxlabel(\'时间(天)\');
9 @; J, j" f# xylabel(\'仿真输出结果\');; i' y1 h) S7 P* Z" d
legend(\'仿真模拟值\',\'实际值\',\'神经网络预测值\');
7 j0 k* m6 w. y7 E4 Y%%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%, ?" f* h& P+ ?7 v) ~8 {  [$ n
x=1:4;1 S: S6 p1 T7 H) Q- V$ r
y=1:4;
1 ]+ T* ?. C5 c: d+ E' D: T5 jplot3(x(1:3),y(1:3),E(x(1:3),y(1:3)))$ I# K) u# O4 {6 d
运用简单的神经网络,怎样处理已经有的数据,一般输出的怎样的结果,有什么用,谢谢

/ S0 _' _+ `. T( ?8 M6 G5 x# W




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