数学建模社区-数学中国
标题:
请问大神这个代码错在哪里,应该如何修改.以及回答一个简单的题目,谢谢。
[打印本页]
作者:
昌辉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+ o
dayhismod=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* I
daylast=day(13:16);
4 d M& U" C& q' _ S2 i7 K
h3=reshape(daylast,4,1);% 将倒数第二个样本作为网络测试时的输入样本
$ W- U, P! F& [ V0 `8 a+ Z8 l
r=5:16;
( k$ b' y/ p( H5 B
rr=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 seconds
2 ]. X7 t" O1 }, |/ D* t0 e
net.trainParam.epochs=200000; % 训练次数
# o* E! d' f" m3 K8 o
nettrainParam.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! ]& u
title(\'神经网络训练结果\');
) 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! p
x=1:4;
2 i" H+ g3 S" V: k! C) g0 H
y=1:4;
4 s7 Q- f1 D8 L% d: c! n
y21=sim(net,p);
, o2 E1 ^ Q* a% O8 Q
y2=reshape(y21,1,12);
% f5 ]* ]0 r X N/ Y
clf
3 o6 W# Q5 y' y: P7 M6 B
plot(r,y2,\'b-^\')
) u1 D2 C# d* P
hold on
- p3 S, r3 ?7 d4 Y; F7 W. B; s9 L
plot(1:20,day,\'r-*\')
" ~. h$ U* t0 w* d$ B
%%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%
/ ?. F, W1 w, [! M, q
y3=sim(net,h3);
5 L* k3 Y- H8 p, y" |
plot(17:2:20,y3,\'-*\')
* M% m3 @) m+ d
hold on
: u! Z# Q6 j! q7 ^' Q
title(\'神经网络训练结果\');
. v, Q; C/ R3 `1 e/ ?
xlabel(\'时间(天)\');
9 k4 h) U: o" \, f* s
ylabel(\'仿真输出结果\');
, L: d9 P! F! [3 S
legend(\'仿真模拟值\',\'实际值\',\'神经网络预测值\');
" b' ` e' O4 k, u
%%%%%%%%%%%%%%%%%% 绘制误差曲面 %%%%%%%%%%%%%
7 e5 ^$ G4 A c# Q& D1 o/ P6 b9 P5 P
x=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