QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2645|回复: 1
打印 上一主题 下一主题

[代码资源] 请问这个代码错在哪里,如何进行修改,谢谢

[复制链接]
字体大小: 正常 放大
昌辉9        

3

主题

13

听众

72

积分

升级  70.53%

  • TA的每日心情
    开心
    2016-5-23 22:22
  • 签到天数: 54 天

    [LV.5]常住居民I

    自我介绍
    初学者

    群组Matlab讨论组

    跳转到指定楼层
    1#
    发表于 2014-9-3 11:10 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    10体力
    clear3 Q* S6 W% ?1 r/ q% E
    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];
    8 @( n' q: z% K% a6 G; @! K2 G( N' odayhistory=day(1:20);%取其中三十天作为历史数据样本
    ) V2 E6 r7 ^+ @, vdayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的/ c: k) g& J" }0 X! |% {
    dayday=day(1:15);% 取其中的前25天  p- H6 g3 d) _" }
    daypost=day(6:20);%取其中的随后25天% {9 q0 Q( p4 c& }7 `: c
    p=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本& ?) h* K8 x  m
    t=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量- |3 y. @- K. q/ k5 s, [4 x
    daylast=day(16:20);: Q* `: O/ w7 k4 m# v
    h3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本% d! O8 l* a9 a3 {; T' u0 K" g
    r=6:20;% J4 g* I3 k3 Q# n/ Z
    rr=reshape(r,5,3);
    ; v8 d, `5 a4 U' {, {) h%%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%+ Q  N* l( s. r* l
    net=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');
    ; `! X! @% W: y" f+ e+ b4 a6 w0 Ay1=sim(net,p);
      K* {+ l; p; ~: @" j0 Q% ~1 E% 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量8 ?) p9 m9 k) A" ]
    % 两层的传递函数均为purelin
    " C' f7 X# }# k% 训练函数为trainlm
    5 W$ l( a; ~' W8 p' u# J' d% 所训练的网络大小为[5,5]$ o1 V* Q" e9 Y3 P: Q
    % 仿真训练前的网络- C7 a7 ^; S! N( i, {; s
    % b& B7 D5 E7 j" c8 w& M
    %%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%
    8 M$ [" i! p7 |! x% network parameters:6 O! }2 K0 H( v7 \
    %   epochs--epochs of the train* F3 C: c) n4 o: p, O; R% ^
    %   goal--errors goal of the network* _% B0 S$ r6 c4 i* E8 t
    %   lr--learning rate
    5 a& O" |% g& j6 ^3 k/ W%   shows--epochs between the displays
    % ~' g" G/ s. P0 [, Y- d+ w8 O  n$ N%   time--Maximum time to train in seconds
    7 t5 Z2 t! t3 p! Unet.trainParam.epochs=200000;  % 训练次数" }" x  g" K6 n% B3 S5 s/ c4 z9 o
    nettrainParam.goal=0.0001;  % 误差期望值
    1 Z- C) D0 k+ X1 ~) Z% returns of the train:
    - _$ e$ k1 }9 ~2 a7 S%   net--New network
    - L+ R0 z: w& H- M$ t%    tr--Training record (epoch and perf).
    ; g) E  r" O: k( n, z" L%     Y--Network outputs.
    4 o9 @! G0 b1 I) B/ R1 c* w: r5 W%     E--Network errors.
    ( }3 n/ }' [  N3 `6 G4 l[net,tr,Y,E]=train(net,p,t);
    2 Q( M& w- T, S0 V. u: X3 Z' {%%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%3 t; e1 ]/ n2 l/ \7 O% y8 k
    % input the testing points here %
    ! c5 F+ |* b2 J5 V" X( D+ X2 x7 x3 r' Ntitle('神经网络训练结果');
    $ x2 k5 h6 Q, A$ }xlabel('时间(天)');) Y/ N9 L8 G7 B1 g0 ^  [7 ]7 Y& p
    ylabel('仿真输出结果');) S# H$ x: ?( `) G% r
    legend('仿真模拟值','实际值','神经网络预测值');7 z* p. `+ e+ J0 Z( U4 m- m' d
    %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%2 J0 i* p+ ]- r6 S  H0 G) D
    x=1:5;# {% H) Y" {0 e/ A$ G# i1 M. U
    y=1:5;7 D, L; q; [6 \/ ?
    y21=sim(net,p);
    ! b; F& _3 S6 e0 ]2 `0 R# by2=reshape(y21,1,15);; f9 J0 A: B9 C& z$ a/ j5 e( s* w
    clf
    / e1 |) g* C1 {! m' T; W4 Aplot(r,y2,'b-^')& A* j" y( L, ?$ q) S& `4 b) t
    hold on
    - ]4 B5 y. F0 q( V% I6 C; Dplot(1:20,day,'r-*')
    $ }. u  {; D' M- Q%%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%7 m+ ?( j6 M9 ]. M' v$ f
    y3=sim(net,h3);8 _. X# U1 ?# a% ?% C
    plot(21:25,y3,'-*')7 v: P5 g- Q7 v: x  y7 Z
    hold on
    " v7 E- L* w( ?  u+ i* ~title('神经网络训练结果');
    ( F$ K# |. a' G% R" Zxlabel('时间(天)');" H: q% G9 b1 Q! C& t8 D8 L
    ylabel('仿真输出结果');
    1 A1 x/ B  s% K6 Z3 f* ]legend('仿真模拟值','实际值','神经网络预测值');
    " b3 c& N& b2 M7 P%%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%! f$ T; b$ K1 ~7 C* [6 Q" `
    x=1:5;4 U7 V) |4 U: q
    y=1:5;' B" m) y. `1 D% T! r
    plot3(x,y,E(x,y))
    + ]( d6 a  K! N. T' N& B" m, n1 S$ z7 F$ O. a7 k

    最佳答案

    madio 查看完整内容

    是维数不一致造成的,我只能把代码调试的能运行,但是可能结果不一定对,你需要对前面的输入数据和网络结构做一些深入的了解
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    madio        

    3万

    主题

    1312

    听众

    5万

    积分

  • TA的每日心情
    奋斗
    2024-7-1 22:21
  • 签到天数: 2014 天

    [LV.Master]伴坛终老

    自我介绍
    数学中国站长

    社区QQ达人 邮箱绑定达人 优秀斑竹奖 发帖功臣 风雨历程奖 新人进步奖 最具活力勋章

    群组数学建模培训课堂1

    群组数学中国美赛辅助报名

    群组Matlab讨论组

    群组2013认证赛A题讨论群组

    群组2013认证赛C题讨论群组

    是维数不一致造成的,我只能把代码调试的能运行,但是可能结果不一定对,你需要对前面的输入数据和网络结构做一些深入的了解
    1. clear- j* s0 s& S9 C' `
    2. 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];  c& y8 h) O, \! I0 I! g7 B
    3. dayhistory=day(1:20);%取其中三十天作为历史数据样本
      \" M% C$ z* k6 W( d1 U4 l0 Z
    4. dayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的
      5 a8 K5 C# }: u6 Q/ Q; p
    5. dayday=day(1:15);% 取其中的前25天\" i8 U, |- ~* \( \
    6. daypost=day(6:20);%取其中的随后25天
      6 w' I+ M\" C+ G. r2 l+ n& D' Y
    7. p=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本
      , m) Y4 W1 [5 c
    8. t=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量, R; I- U5 y( I9 f' e
    9. daylast=day(16:20);% v9 C* _* a, g1 V
    10. h3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本
      5 u. v$ V$ B) Y) D# h; O. g8 p- ]
    11. r=6:20;
      ; L4 r0 N' J# Q& i+ ?7 v- F
    12. rr=reshape(r,5,3);
      9 Y# ?- t' }/ A, l! ~- U
    13. %%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%
      4 ]3 `* n  R* l& ~: U5 p2 J7 Z! @# ?; m' ~
    14. net=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');
      1 ^& T. b: N5 e
    15. y1=sim(net,p);/ M. j+ {/ j3 O, C
    16. % 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量) A' [5 \, g& m+ ?& H: c# i
    17. % 两层的传递函数均为purelin! U. Q( o3 K5 v& B& s$ A) D6 P
    18. % 训练函数为trainlm: g' w+ A9 F) C1 t9 n
    19. % 所训练的网络大小为[5,5]$ N6 A4 a/ Y) G0 d- J
    20. % 仿真训练前的网络4 @; }* X9 [$ |! f5 D* }( x$ s, k) ^

    21. 0 x* ~. i5 Q. P! W! Y5 T/ |2 g1 T
    22. %%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%; s# e# K& N% i& X9 I9 ~8 a
    23. % network parameters:. r$ i. q6 R* w6 J0 z
    24. %   epochs--epochs of the train
      - [3 s4 m. H$ @
    25. %   goal--errors goal of the network8 K: A\" A  f2 \7 W; Y, M
    26. %   lr--learning rate
      3 H9 M, ~1 g1 S3 m/ u\" q9 t
    27. %   shows--epochs between the displays
      % U8 p# A( }* o  @! u0 V: Z) b
    28. %   time--Maximum time to train in seconds; o5 x) n* d6 J9 s  U5 k3 F+ n) Q( [
    29. net.trainParam.epochs=200000;  % 训练次数4 g& q/ J$ S1 b/ ^* y) ]
    30. nettrainParam.goal=0.0001;  % 误差期望值5 D* g' K9 }6 e5 x8 ^  e5 P5 T
    31. % returns of the train:( T/ b0 l# \/ r# b1 I+ W
    32. %   net--New network$ Z8 q, R7 D- A( h
    33. %    tr--Training record (epoch and perf).
      % ?$ L7 W3 @/ X+ k! j6 C. a4 j( ?- j
    34. %     Y--Network outputs.
      8 _7 w\" [# q9 m
    35. %     E--Network errors.
      8 H2 P5 ]+ F: W% D, r\" P
    36. [net,tr,Y,E]=train(net,p,t);
      ; D5 d\" G1 U4 j% I
    37. %%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%
      2 G4 v( W1 s9 }: k( |& G
    38. % input the testing points here %
      + t. O: K6 E+ E; Z* d& {
    39. title('神经网络训练结果');
      4 f& _; W5 M3 Z  G2 V6 a5 }  V
    40. xlabel('时间(天)');
      # Q4 @+ D\" ~' u
    41. ylabel('仿真输出结果');
      , N' y% C+ `0 r/ p4 I
    42. legend('仿真模拟值','实际值','神经网络预测值');0 A7 J) V+ o5 O- g8 ~( K0 D
    43. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%2 A* Q, N6 v8 Y9 {3 F- [
    44. x=1:5;' v3 W0 }0 c) ~6 G: X6 w! h
    45. y=1:5;
      / A$ d' u! M* u
    46. y21=sim(net,p);. S; x9 X0 d+ O& X0 ^; m' G
    47. y2=reshape(y21,1,15);
      ) O% N! W6 J' j, t/ S7 u$ F( U
    48. clf
      : t( N& Z/ g7 W* e* g9 M( p
    49. plot(r,y2,'b-^')
      9 i% P! I( Z3 x# M% y
    50. hold on
      / K; @: {, y! e8 k
    51. plot(1:20,day,'r-*')
      & M2 Z& i6 A% f+ k
    52. %%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%' ^\" ~8 c1 g' o9 b1 Z* U% ?8 q  Z\" E
    53. y3=sim(net,h3);
      2 i4 l9 g! W# s* F( S. h2 d
    54. plot(21:21,y3,'-*')
      / {; x7 o* Q! [( K! _
    55. hold on9 r! p2 u5 `; ]  W5 j! x\" F7 s' j3 w! w
    56. title('神经网络训练结果');
      8 ?8 ]9 u' @: b; Z: W
    57. xlabel('时间(天)');% A\" {; v$ @6 {; t0 _
    58. ylabel('仿真输出结果');( J2 K. G( C. y: \* Y
    59. legend('仿真模拟值','实际值','神经网络预测值');. I% m  w' g% F
    60. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
      1 a3 g, Z9 T1 }6 K
    61. x=1:5;
      ) p- W$ j) z% h) O. e( f+ A4 H& E8 U
    62. y=1:5;3 l* U  ]6 A; G8 `$ L
    63. plot3(x(1:3),y(1:3),E(x(1:3),y(1:3)))
    复制代码
      收起(1)
    • 昌辉9 昌辉9 :clear
      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];
      dayhistory=day(1:16);%取其中三十天作为历史数据样本
      dayhismod=reshape(dayhistory,4,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的
      dayday=day(1:12);% 取其中的前25天
      daypost=day(5:16);%取其中的随后25天
      p=reshape(dayday,3,4);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本
      t=reshape(daypost,3,4); %将随后的25天分为5行5列矩阵作为网络的目标输出向量
      daylast=day(13:16);
      h3=reshape(daylast,4,1);% 将倒数第二个样本作为网络测试时的输入样本
      r=5:16;
      rr=reshape(r,4,3);
      %%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%
      net=newff(minmax(p),[4,3],{\'purelin\' \'purelin\'},\'trainlm\');
      y1=sim(net,p);
      % 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量
      % 两层的传递函数均为purelin
      % 训练函数为trainlm
      % 所训练的网络大小为[5,5]
      % 仿真训练前的网络

      %%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%
      % network parameters:
      %   epochs--epochs of the train
      %   goal--errors goal of the network
      %   lr--learning rate
      %   shows--epochs between the displays
      %   time--Maximum time to train in seconds
      net.trainParam.epochs=200000;  % 训练次数
      nettrainParam.goal=0.0001;  % 误差期望值
      % returns of the train:
      %   net--New network
      %    tr--Training record (epoch and perf).
      %     Y--Network outputs.
      %     E--Network errors.
      [net,tr,Y,E]=train(net,p,t);
      %%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%
      % input the testing points here %
      title(\'神经网络训练结果\');
      xlabel(\'时间(天)\');
      ylabel(\'仿真输出结果\');
      legend(\'仿真模拟值\',\'实际值\',\'神经网络预测值\');
      %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
      x=1:4;
      y=1:4;
      y21=sim(net,p);
      y2=reshape(y21,1,12);
      clf
      plot(r,y2,\'b-^\')
      hold on
      plot(1:20,day,\'r-*\')
      %%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%
      y3=sim(net,h3);
      plot(17:2:20,y3,\'-*\')
      hold on
      title(\'神经网络训练结果\');
      xlabel(\'时间(天)\');
      ylabel(\'仿真输出结果\');
      legend(\'仿真模拟值\',\'实际值\',\'神经网络预测值\');
      %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
      x=1:4;
      y=1:4;
      plot3(x(1:3),y(1:3),E(x(1:3),y(1:3)))
      如果是这样,应该怎样改呢,再麻烦你一下,谢谢
      2014-09-03 15:40 回复
    • 我也说一句

    数学建模社会化
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-8-1 05:17 , Processed in 0.507411 second(s), 57 queries .

    回顶部