数学建模社区-数学中国
标题:
请问大神这个代码错在哪里,应该如何修改.以及回答一个简单的题目,谢谢。
[打印本页]
作者:
昌辉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" H
dayday=day(1:12);% 取其中的前25天
1 b" R$ p- c- L" q0 q) A* z
daypost=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) u
daylast=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* W
rr=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# {
% 两层的传递函数均为purelin
4 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 train
1 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+ X
title(\'神经网络训练结果\');
7 ~ c2 @# z) ~8 R" U5 H8 u
xlabel(\'时间(天)\');
8 l. y, y4 S" g$ C* a% G
ylabel(\'仿真输出结果\');
/ ?* i! z0 e; |+ I
legend(\'仿真模拟值\',\'实际值\',\'神经网络预测值\');
; N" [: O% ]" |% Y" v/ s0 _
%%%%%%%%%%%%%%%%%% 绘制误差曲面 %%%%%%%%%%%%%
& \0 Z3 X" L8 ]! [2 o* |9 e$ U. P
x=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; P
plot(r,y2,\'b-^\')
+ d2 P {" b- y* \& o6 c$ u: z
hold on
9 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 t
y3=sim(net,h3);
2 m- \7 n! z; s+ L( B
plot(17:2:20,y3,\'-*\')
4 F+ o6 V V: X- \6 u8 l
hold on
4 s% a w. }9 m N
title(\'神经网络训练结果\');
6 Z5 `2 ^$ U( U* w# J. S6 b
xlabel(\'时间(天)\');
9 @; J, j" f# x
ylabel(\'仿真输出结果\');
; 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 j
plot3(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