QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2647|回复: 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体力
    clear5 w2 A4 w' j& _7 I  Q1 a8 n6 B
    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];
    & X& G1 l% u: C3 g+ h( ^: bdayhistory=day(1:20);%取其中三十天作为历史数据样本& v3 u+ A+ ^4 t, h. j
    dayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的
    5 g& b0 a" F8 C$ V! J& ^dayday=day(1:15);% 取其中的前25天
    + A( z0 a* I, t  O! S/ D6 T0 h+ gdaypost=day(6:20);%取其中的随后25天
    9 [  ^5 b4 i* `: n, a: Up=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本5 I6 j; h& a4 J% _7 G. L
    t=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量3 \8 y* u1 `6 u. Z% w$ N* c
    daylast=day(16:20);% |; r; I. r- T* ^7 D
    h3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本
    ; A$ P) S0 z; Tr=6:20;
    + H0 M% I7 @2 r: o- l3 h; b* R. T7 f- brr=reshape(r,5,3);
    # n4 T6 I4 r; B" G) m%%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%
    1 t' r2 _. Z* J$ _; Cnet=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');. C: h; @# {) d. }2 o2 L- j
    y1=sim(net,p);
    3 Q1 v' M, Q( \" K% 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量! `+ Q5 V) T* R7 X/ E
    % 两层的传递函数均为purelin
    / }$ {$ G* `# ]# S6 B- E" N1 u% 训练函数为trainlm
      M$ F; X; ^5 w  I% 所训练的网络大小为[5,5]: h8 Z' w/ T# Q) M
    % 仿真训练前的网络; R# l, r. D' }, V
    # b+ Y' O8 l6 @
    %%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%8 ^( q; j" ~) J* m
    % network parameters:( N5 h- j' ^7 h1 b; p$ V
    %   epochs--epochs of the train
    1 `' {/ b' O- O3 p8 z) h5 t: _; i2 V%   goal--errors goal of the network* y) s+ c% F2 B, L& T
    %   lr--learning rate
    ) b2 ]' g% t! w8 y: ?  g%   shows--epochs between the displays
    % B( }  ]7 q. N& _! i* Y4 l%   time--Maximum time to train in seconds* {3 B, s0 F6 M
    net.trainParam.epochs=200000;  % 训练次数
    ' q" R5 |  J& B+ a9 d% l( ~nettrainParam.goal=0.0001;  % 误差期望值+ V: h; m5 q& C6 B8 _6 y
    % returns of the train:/ e) _" x% y: K, |9 S
    %   net--New network$ g$ f! m, [5 U" {' a/ E9 R
    %    tr--Training record (epoch and perf).
    ! |( R+ P1 e! ]! F%     Y--Network outputs.$ Z6 q( I2 s% C
    %     E--Network errors.
    * V/ r$ f3 i$ T' Q+ O% T[net,tr,Y,E]=train(net,p,t);
    7 d$ m& m; u2 Z! i6 N/ r9 }%%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%
    , U8 `" r, k" Q* h% input the testing points here %7 W* _! M" r+ J5 P  s
    title('神经网络训练结果');
    1 h( q! G' U$ U' C& ^5 hxlabel('时间(天)');
    2 m& ~. ^; w0 C' G6 gylabel('仿真输出结果');  L. ?( d. R' Z% X  @
    legend('仿真模拟值','实际值','神经网络预测值');
    " B/ l: X$ j% V% J7 e2 R%%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%5 f: C0 y6 h' b
    x=1:5;
    $ z4 s5 Q  t8 M* N: a6 S  A% \. s0 xy=1:5;
    $ H0 H  p# R9 C- B# V$ R. Hy21=sim(net,p);" |2 A' e) s* @" U, R2 M4 U9 |
    y2=reshape(y21,1,15);
    0 Z- ~' b- P( sclf: @1 h, m$ c9 [; q' O! ^+ S
    plot(r,y2,'b-^')
    # d( t, f4 {/ Lhold on0 k# T! V9 d! w, Z* c2 E' |
    plot(1:20,day,'r-*')8 \1 d+ ~; [+ l+ _3 |
    %%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%
    / x$ K" E2 n( l8 p% Ky3=sim(net,h3);7 V# T- q$ L8 X
    plot(21:25,y3,'-*')
    2 S! ~2 _) {8 n  {$ a! Z- B  ~9 D/ a' ~: whold on
    % i- b1 a( G+ y$ O  xtitle('神经网络训练结果');  S- p/ W8 A! n3 E$ H
    xlabel('时间(天)');
    , s0 Z# p4 |& ^! A8 H  t- ^ylabel('仿真输出结果');
    ) V2 ]/ x, j/ O$ Blegend('仿真模拟值','实际值','神经网络预测值');; L5 f* K" k1 x8 G/ d7 e
    %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
    & x7 l" @+ l( w" Mx=1:5;5 ]2 K) z4 g6 ?6 G: d
    y=1:5;
    ; i! \9 n" y! z1 B$ Yplot3(x,y,E(x,y))
    0 g: t) Y1 D$ u0 d5 ]$ ]* C
    ! f' O& o% T6 m' I- _, L2 G9 Z

    最佳答案

    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
      % N. i# J) c1 X: G
    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];
      7 b( |5 n$ d/ F( ]8 C  v* g! A
    3. dayhistory=day(1:20);%取其中三十天作为历史数据样本
      , R' I) e3 N! ^* p
    4. dayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的
      ) A, }7 H. |: F( C8 k4 l
    5. dayday=day(1:15);% 取其中的前25天; b8 N4 k- p8 ~. ^- j
    6. daypost=day(6:20);%取其中的随后25天- R+ B% Y4 m. O3 W& W. G
    7. p=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本
      4 m2 o. W/ c  n/ O
    8. t=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量
      3 k& _1 N; Z\" h8 d$ A
    9. daylast=day(16:20);; V5 a$ F+ R  |9 d3 o
    10. h3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本. x\" B& P, m2 J* y
    11. r=6:20;
      $ T8 V  |( |8 J. c/ o4 ?1 @, z  I) L
    12. rr=reshape(r,5,3);
      1 N, y/ P: I5 K( h7 \. A1 w
    13. %%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%
      : v) q+ W% r$ f$ s\" K& V\" p) n
    14. net=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');
      ) Y7 A3 {0 G4 r
    15. y1=sim(net,p);' V9 V$ G  n1 Q! {& X* u8 v
    16. % 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量5 L  \- F( S/ N9 M  N
    17. % 两层的传递函数均为purelin
      0 [4 b+ f& y+ O\" m. a$ Y
    18. % 训练函数为trainlm5 r  G4 r8 O* P3 E$ c7 A: P1 k
    19. % 所训练的网络大小为[5,5]/ b8 \4 H4 d7 }2 r( U6 d
    20. % 仿真训练前的网络
      & ]9 ?7 l) ?- s4 {8 i
    21. 6 u/ w0 u8 \; U' }9 J9 @5 z
    22. %%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%
      ( x6 \& d0 p7 B8 q1 B- d2 P
    23. % network parameters:
      3 S, ]& W# F: l5 v: S, i: h
    24. %   epochs--epochs of the train' a\" r! N) @5 c8 v
    25. %   goal--errors goal of the network. R: f# s4 Z4 T2 n6 T
    26. %   lr--learning rate1 W8 l6 f* y$ J1 _4 F( x
    27. %   shows--epochs between the displays
      & ]! X% {4 x0 c  Z# G
    28. %   time--Maximum time to train in seconds, ]  o: p' i/ d6 Q! b
    29. net.trainParam.epochs=200000;  % 训练次数
      / h/ p, s+ M9 z
    30. nettrainParam.goal=0.0001;  % 误差期望值
      + E+ _. u! ]1 W3 k2 D% ?& P- R
    31. % returns of the train:
      \" T7 z& k4 E. F9 y# k7 \* v
    32. %   net--New network2 d3 b9 R5 i/ k0 b
    33. %    tr--Training record (epoch and perf).9 B9 V8 s- c( t6 Z2 e- v
    34. %     Y--Network outputs.
      6 ^9 M1 E! C- r% Z
    35. %     E--Network errors.+ ]; N0 F0 @. k! y
    36. [net,tr,Y,E]=train(net,p,t);
        |. H( [( L0 u+ V
    37. %%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%
      5 A1 z8 Z: s' V
    38. % input the testing points here %
      3 _; F. j7 ^2 L( M
    39. title('神经网络训练结果');% q! ?0 K& q( X% E
    40. xlabel('时间(天)');
      / b2 _: o. s7 C, g/ e& u8 R
    41. ylabel('仿真输出结果');
      % @. j\" L; c9 y* z6 I
    42. legend('仿真模拟值','实际值','神经网络预测值');
      ( B+ j8 ]$ y8 I
    43. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%8 _8 ^* Y, j$ s1 c0 t  _- y: f7 y. C
    44. x=1:5;
      $ w4 j6 A/ K/ i% |0 E
    45. y=1:5;* E. T7 q8 }3 |! ?
    46. y21=sim(net,p);
      0 l% U5 E; F' c5 O
    47. y2=reshape(y21,1,15);! u& Q& k: |0 M+ Z) C6 _
    48. clf
      3 ^8 {+ e; A9 `8 ~
    49. plot(r,y2,'b-^')
      \" Q; N* o) p, U1 J
    50. hold on6 U8 V, R9 T) }7 J( S2 t+ O' N
    51. plot(1:20,day,'r-*')
      # K& y' J' p0 Y& u; D
    52. %%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%
      4 m. V5 n4 f, k' ?6 B# F) D
    53. y3=sim(net,h3);9 |5 Y; M3 S\" M/ M
    54. plot(21:21,y3,'-*')
      ' D9 P4 b7 K! u  }; s
    55. hold on
      6 K# J8 L2 m+ D\" y2 P
    56. title('神经网络训练结果');% K* D( E7 Q% F9 z% H% ]
    57. xlabel('时间(天)');
      7 y7 e$ v1 g) O4 H
    58. ylabel('仿真输出结果');* n' G( _\" N* @  |8 n9 {/ x3 ^: n
    59. legend('仿真模拟值','实际值','神经网络预测值');, ?2 O8 e) l/ M1 ~$ a9 F
    60. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
      9 a  ~5 R8 {. ^$ ]# i, r6 H
    61. x=1:5;% _; A\" ?- E2 _+ s# R
    62. y=1:5;
      1 u9 r# ]. n7 D& I* X9 d
    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-2 07:28 , Processed in 0.332995 second(s), 58 queries .

    回顶部