QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2598|回复: 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体力
    clear" |- ^; f( P$ ?
    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];& K* E( h7 L: o: Z0 i, J
    dayhistory=day(1:20);%取其中三十天作为历史数据样本
    7 a: [6 V: Z4 c' r; Qdayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的
    5 k1 m$ j# `5 n# x9 Tdayday=day(1:15);% 取其中的前25天) L! M/ j8 e8 k% y9 s$ L
    daypost=day(6:20);%取其中的随后25天
    - _2 ~5 G# w+ _' P4 {/ @p=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本
    ) p) a+ A8 ~8 e5 c' Ot=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量
    & M$ u/ Y! [2 J. P# Q8 R" _daylast=day(16:20);
    % `3 t; Y* u- \  I! }h3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本
    * c* b& L5 A+ I! N1 \) {) f: \r=6:20;* C; X% e+ o' Y# o/ |
    rr=reshape(r,5,3);& T& m% h0 V: e# W% M
    %%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%
    ! \+ f0 A2 Y, cnet=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');
    0 U- r& a$ H4 H. Gy1=sim(net,p);
    1 [6 Q( }% N* k1 p% 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量' t/ I6 d/ I$ o- ]3 g
    % 两层的传递函数均为purelin
    ) x5 N$ ]; B( Z4 p% 训练函数为trainlm) a8 R+ o/ P7 m+ g8 N) a- L
    % 所训练的网络大小为[5,5]
    ( U, I6 H/ h% B/ N* [1 f% 仿真训练前的网络
      b6 e: g' u  V
    ' Q! U& d7 Q% C9 A, T%%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%1 {- y& h, D* c* F1 U
    % network parameters:7 Z6 n1 W5 l' o8 W
    %   epochs--epochs of the train# n: |) \! `+ O4 g, V" z
    %   goal--errors goal of the network6 ?0 ~) Y8 c5 j3 [" \3 y! C9 `6 V
    %   lr--learning rate
    " V0 ^# ~" c( X5 t' `; Z/ A$ M%   shows--epochs between the displays3 g$ q" s4 Y1 @+ J7 u; ~% E+ h9 u
    %   time--Maximum time to train in seconds  ^6 q3 }& Z1 U/ R/ c
    net.trainParam.epochs=200000;  % 训练次数
    1 P, d: E- Y6 y# ^) x6 i- FnettrainParam.goal=0.0001;  % 误差期望值" ~* x2 Q9 X3 X" A/ F
    % returns of the train:$ d+ y; J; F! y7 A) L6 o( h
    %   net--New network% I" ~+ o( e# G2 ]
    %    tr--Training record (epoch and perf).& e" U* I: `: {$ \1 M
    %     Y--Network outputs.5 g# S4 }3 i& H0 {7 g: o
    %     E--Network errors.
      S& y: n2 e, M: `% ~3 D( V[net,tr,Y,E]=train(net,p,t);
    + Y9 m: @9 g$ b9 m3 N' R: E* L5 ?%%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%) O, x+ ]# D) W+ `* g+ l& ?" E1 i
    % input the testing points here %
    / G" i' U4 z+ d1 ctitle('神经网络训练结果');
    ' z2 q. h" G, J2 q2 \2 @! A1 _xlabel('时间(天)');
    7 i& s& _' q- q! E1 j' {" ~& @ylabel('仿真输出结果');
    ; x& p* e6 p# E; _& j: v( Glegend('仿真模拟值','实际值','神经网络预测值');  E  o' {. e2 E" _' H7 c) }1 T
    %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
      M' s9 D6 \: I  [4 k) xx=1:5;
    * U4 Y( \" l# h9 D) |" oy=1:5;( B( a5 A8 B6 \. Q& W- J
    y21=sim(net,p);
      c5 o, s; j+ v7 _0 dy2=reshape(y21,1,15);
    + T' b( V$ f% `$ lclf
    $ @1 v. B8 u2 ?4 f& Hplot(r,y2,'b-^')+ t% T# y/ a; |  [
    hold on
      X3 W; o/ `  a3 Fplot(1:20,day,'r-*')1 e3 u2 l( f6 `3 P: m
    %%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%5 M. |$ |& y* L
    y3=sim(net,h3);
    ; G9 P* w" H, c" G3 n1 kplot(21:25,y3,'-*')! Y+ t! f, Y! y) w  {- N  j
    hold on
    $ G3 c9 O& b6 V' W& r/ G. e: Wtitle('神经网络训练结果');- Q. c2 |: ]' q/ Z( Q9 U+ W& y8 S
    xlabel('时间(天)');: x7 O+ n- k8 Y* q# z7 g
    ylabel('仿真输出结果');7 ?6 z  e$ x( B: [
    legend('仿真模拟值','实际值','神经网络预测值');7 P, I5 F$ c- D5 R8 \+ W/ H# W4 O1 j
    %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%; z$ q- {! b4 n3 ~  }4 o3 \
    x=1:5;
    : h, }. x  {: }y=1:5;
    / c- I9 ~- F! v% J) splot3(x,y,E(x,y))7 @  a9 D9 ~- V" K7 g5 ^
    ( h# J6 {' r; [% |* R) J5 B

    最佳答案

    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. clear0 G& E% P- T- G0 b# Q* z& n3 u
    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];
      # l3 G5 i( l6 l
    3. dayhistory=day(1:20);%取其中三十天作为历史数据样本9 ]. `: O\" O% E& U3 ~- S
    4. dayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的
        {& j3 e+ d+ q, A6 O1 q3 M- }
    5. dayday=day(1:15);% 取其中的前25天% G' Q& |; m. E, _( b2 h) k( k2 X1 v% W2 H
    6. daypost=day(6:20);%取其中的随后25天
      3 H3 l  S; g; `# F) C  V\" D
    7. p=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本1 U0 c5 N6 D\" X' w
    8. t=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量
        o& \' O. Y, F: v
    9. daylast=day(16:20);\" P: D! y2 K+ ~' _8 e\" s3 U3 b
    10. h3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本\" e' ^. R4 @5 l( n# _% T, V
    11. r=6:20;
      : W$ _# A. _1 `  K6 r1 O
    12. rr=reshape(r,5,3);
      8 c* N7 r& u3 z6 p
    13. %%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%
      8 u. ~2 g2 J$ r' Z* Q# e, l; ?
    14. net=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');1 P' t7 X# P- n
    15. y1=sim(net,p);) G8 _/ M+ d- D9 W- v& M; \9 W, x
    16. % 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量- z6 B3 e( ~: R\" j# D
    17. % 两层的传递函数均为purelin
      6 t  e. r8 w6 g3 {* J3 L
    18. % 训练函数为trainlm0 B1 I; K\" f+ N( H# D# F
    19. % 所训练的网络大小为[5,5]
      9 w- z( j1 P/ \; b( n2 s# R. {
    20. % 仿真训练前的网络
      - L8 H  t6 @3 B0 q
    21. ; I( l/ Z6 A- h& I5 O) |
    22. %%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%# F- ^. c: N; T- m9 w& m\" b4 G& I
    23. % network parameters:
      3 t; j# F) ?$ z0 a\" D
    24. %   epochs--epochs of the train9 C9 ~& \( C5 _8 l
    25. %   goal--errors goal of the network6 h5 O. N$ s: T
    26. %   lr--learning rate. x+ b\" |' I! i/ T
    27. %   shows--epochs between the displays
      7 k; V& D1 E% j3 t) p! A# W
    28. %   time--Maximum time to train in seconds0 @, d\" k8 t\" r5 i/ P/ Y; n, M
    29. net.trainParam.epochs=200000;  % 训练次数# @2 W) X\" a! i. m  \
    30. nettrainParam.goal=0.0001;  % 误差期望值# h. K  D. z& V; ^: ~
    31. % returns of the train:2 E8 T0 t% s! U\" e
    32. %   net--New network( E# ?; ^2 `+ u5 r
    33. %    tr--Training record (epoch and perf).' |/ J; ?! s) i# C% ]: @, _) H
    34. %     Y--Network outputs.7 N. g  V# F) N; X$ {9 V4 W
    35. %     E--Network errors.
      6 W: c+ _4 h7 d, j
    36. [net,tr,Y,E]=train(net,p,t);
        T  o8 I/ Q3 o9 b  E7 h
    37. %%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%
      8 O% t: X& M% s- ^
    38. % input the testing points here %
      & L2 I\" Y\" {1 p0 P/ `8 m
    39. title('神经网络训练结果');2 ]- Y  p- w9 w2 m: o
    40. xlabel('时间(天)');) w( f  z% j, t# A6 a. O4 ?5 J
    41. ylabel('仿真输出结果');
      0 o8 P0 V; c, |9 c% N- O
    42. legend('仿真模拟值','实际值','神经网络预测值');
      ) l, c$ u  _4 M) x3 ]! q* y
    43. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%4 m: n% \' c7 p
    44. x=1:5;
      + A\" Z' I+ m& R
    45. y=1:5;0 f2 H; i5 t6 v: K' \9 a' t4 I4 O
    46. y21=sim(net,p);
      + w* o: g5 |! }# T- U8 i, P, C- C
    47. y2=reshape(y21,1,15);
      & |7 b5 u( n5 R8 W& y  L# R
    48. clf
      . z2 i( M8 U\" y9 \( a
    49. plot(r,y2,'b-^'): M, I* ]1 N. {4 M
    50. hold on
      4 B- B& A' J# {1 T$ P2 O* m6 A1 n4 H
    51. plot(1:20,day,'r-*')
      % g' _/ Z. h- R1 |# |/ l
    52. %%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%0 f; W, J: N9 b8 ?/ d' ?: d
    53. y3=sim(net,h3);0 x, G& ]1 n& i! d
    54. plot(21:21,y3,'-*')
        u+ ^8 F6 q, p) V\" h
    55. hold on( R7 N6 n. v# N+ F, A/ u  N; Z
    56. title('神经网络训练结果');: C' E; K8 T* r
    57. xlabel('时间(天)');; j+ s+ v5 U. v! A9 `\" {  |
    58. ylabel('仿真输出结果');
        {3 V: i: s: h$ }
    59. legend('仿真模拟值','实际值','神经网络预测值');
      3 D+ `& D' ]9 C, J
    60. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%3 S! C6 |1 g  t0 [
    61. x=1:5;! T3 A5 V' A) L0 h/ A  X- P
    62. y=1:5;
      ) g! G3 @. ^3 C8 y3 U! V) w% q. |
    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-6-12 01:58 , Processed in 0.435286 second(s), 57 queries .

    回顶部