QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2546|回复: 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 h# j3 a9 D, ?" U) [) N" M
    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];
    1 r) @/ y( k. P; @' G! n+ ^0 pdayhistory=day(1:20);%取其中三十天作为历史数据样本2 ^+ R% c; J& G! F9 N8 Z
    dayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的# y9 i' c$ T8 W5 x) [# n& A. C& y: ^9 `
    dayday=day(1:15);% 取其中的前25天
    * z) H9 _. M+ L% Edaypost=day(6:20);%取其中的随后25天9 K4 }0 W% H. H: G% A9 j# ~
    p=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本) z( Z# g; W6 d
    t=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量' D$ X7 w2 w/ _7 z
    daylast=day(16:20);+ {2 X: K4 I: u5 x# c. z
    h3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本% v8 F* g9 F& D
    r=6:20;
    $ p- e1 N0 n3 H* x! |2 W8 |rr=reshape(r,5,3);8 m' V4 Y( K7 T% N
    %%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%8 o$ u: @( [+ ^  Q& r( C
    net=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');/ J2 W3 C  ^; P
    y1=sim(net,p);8 L0 {, S" @, [
    % 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量
    9 c8 f) _* w; c0 ?% 两层的传递函数均为purelin
    $ W: H7 u; c  J1 Y8 b+ y+ r% 训练函数为trainlm  A0 m% P! G( u6 k2 _' h
    % 所训练的网络大小为[5,5]
    8 a7 m$ J0 l# T& X. P% 仿真训练前的网络
    " ~2 B( y5 j7 a5 z8 z
    , Z9 X8 R4 v5 @! h) P) o1 Q%%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%9 t# Q( W3 n. E" \  \
    % network parameters:# b8 `: K& \3 R* t- E
    %   epochs--epochs of the train6 o. q  E7 ]+ {( T: d
    %   goal--errors goal of the network; K1 k7 {# c; A6 _* d& K
    %   lr--learning rate
    0 l0 u3 w$ L" [# A- ~%   shows--epochs between the displays6 P1 r+ f* [- d9 C7 h  e
    %   time--Maximum time to train in seconds
    % T5 k% n! O+ E/ ^" Xnet.trainParam.epochs=200000;  % 训练次数
    1 t& E4 R' v! ]5 ^% Q% S! pnettrainParam.goal=0.0001;  % 误差期望值7 J8 {. s( J) M- P$ s1 @" v) e
    % returns of the train:- P8 R( F; u" Q9 Q; X, ]3 c! C
    %   net--New network1 M& w- m0 O& m& N7 h( p
    %    tr--Training record (epoch and perf).  }5 b& d* Y8 e9 A  `  j' A
    %     Y--Network outputs.
    . H4 C9 v% |1 v7 ^  I- Q) s" e%     E--Network errors.: Z% i' p1 T/ L. Z9 M
    [net,tr,Y,E]=train(net,p,t); / ~8 E, M" b" J. y) o9 d9 S
    %%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%
    * U- v8 R* g* {2 ]9 f/ t; ?% input the testing points here %
    7 B& E, L& ?( |& D: L, a9 Etitle('神经网络训练结果');( N! F8 T% H9 I8 Z/ k9 R
    xlabel('时间(天)');& ~( r# b& i" V- V9 v
    ylabel('仿真输出结果');
    9 B* H, @3 N" |% o, I8 Ylegend('仿真模拟值','实际值','神经网络预测值');
    + F# F8 o1 F7 H9 `%%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%6 D4 w7 H( ?1 ^
    x=1:5;  i& r: E  L3 U! O+ t
    y=1:5;
    ; S* p2 D) h- g9 q7 T. W' O! yy21=sim(net,p);
    ( W' J, }8 H5 \) T/ A2 Y) `. uy2=reshape(y21,1,15);: p/ K. l5 L6 M/ s" e; @
    clf
    # W% j3 p( U9 L+ ]plot(r,y2,'b-^')
    ) A- N  ?! |- w1 U! ^4 F0 @hold on
    3 o( w* @" x& e" y  Kplot(1:20,day,'r-*')
    ; Y; w5 l4 [# a5 p" H+ i, o%%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%
    $ O" J& R3 B2 e% A2 c' T3 t( dy3=sim(net,h3);" A8 i8 T7 {8 G& R; k, j5 @0 b4 h) p& G
    plot(21:25,y3,'-*')- {, g; t3 |, c5 h, }, X: e
    hold on" `) {  Q% G; G  O+ ~2 X. V
    title('神经网络训练结果');$ \  B" T0 x& `" r7 }. t% S8 H: u6 H
    xlabel('时间(天)');
    ) K" O; N0 J' B# T8 b! Rylabel('仿真输出结果');( i+ L3 B$ L, \
    legend('仿真模拟值','实际值','神经网络预测值');" I) p6 c! L! @$ N1 `2 P
    %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
    & d0 n# h# l  Q: I2 _  e9 sx=1:5;  v( k9 @  Y: O8 D2 f$ n  i" o$ `+ w
    y=1:5;
    3 M! U; r* y1 _3 s0 M$ qplot3(x,y,E(x,y))5 `5 I! @( ~$ e! B. @: t5 r6 U9 X( k

    - |9 M' d- a6 N; Q

    最佳答案

    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, w8 d- g: _  _! u3 I8 \
    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];
      & y9 D( z$ w: s% {* M$ E
    3. dayhistory=day(1:20);%取其中三十天作为历史数据样本2 D; w& y% O; |
    4. dayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的( I& L$ k3 r: J# `$ M2 y
    5. dayday=day(1:15);% 取其中的前25天
      ) N4 ]) q& h$ x, x* z# Y
    6. daypost=day(6:20);%取其中的随后25天
      : f$ l. M9 E' ~( }: B8 t/ n
    7. p=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本5 }  F4 U% v2 R) f% f7 _
    8. t=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量4 f; Z! |% t/ P1 M6 s
    9. daylast=day(16:20);
      7 e( y& N4 ~7 S
    10. h3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本\" s6 c! e3 e  W
    11. r=6:20;8 S+ l3 }! u/ A3 h8 }\" z8 _; y
    12. rr=reshape(r,5,3);
      $ r0 L: w! P' a, s; g1 r7 {
    13. %%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%6 N# ~! f3 ]4 E7 c1 V& x
    14. net=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');4 N: |4 {7 u* j0 y
    15. y1=sim(net,p);
      / m4 {( c5 h3 J. a: r1 `  Q
    16. % 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量
      . ]! E* S+ J9 n1 N2 [3 M7 x
    17. % 两层的传递函数均为purelin! Y. R  `% B% q  b' }3 u0 b
    18. % 训练函数为trainlm
      ; u1 Q; `1 @8 x* n3 U
    19. % 所训练的网络大小为[5,5]# m: ~4 S5 \3 K2 `6 Q
    20. % 仿真训练前的网络
      $ k' B# F- r1 P, g5 B
    21. 7 U' |8 U( A$ Q- a1 j2 B0 |, p
    22. %%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%
      7 d* b$ W% C9 G0 Q* S7 E0 p
    23. % network parameters:  I) N% c7 G2 q0 m4 _
    24. %   epochs--epochs of the train! l2 b  Z! f0 w& g# v' g+ u
    25. %   goal--errors goal of the network
      % y6 s7 n) Z9 Z8 s
    26. %   lr--learning rate, L- ?\" c7 _\" R/ \: O& }
    27. %   shows--epochs between the displays+ ?( b( u, D4 {
    28. %   time--Maximum time to train in seconds' m' b* {3 H- X, `5 [5 q& v
    29. net.trainParam.epochs=200000;  % 训练次数( w# J( t9 i1 O0 V/ ]8 z! b\" e
    30. nettrainParam.goal=0.0001;  % 误差期望值
      ( X& e% y3 X4 [/ p4 \: g- T
    31. % returns of the train:
      - n. v9 [' j5 E9 ^8 o& p/ S8 r
    32. %   net--New network
      ( F5 B; B5 E4 \- {: p9 K$ g\" u
    33. %    tr--Training record (epoch and perf).
      8 h0 M3 U. c- ]# s4 h. t+ W# C3 u
    34. %     Y--Network outputs.
      , i1 S1 g4 @; x4 K& {\" c
    35. %     E--Network errors.: a; Z% b/ v& K
    36. [net,tr,Y,E]=train(net,p,t);
      ' R& Y* X$ p. @3 S9 x' ]0 t. m
    37. %%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%/ I+ s# \4 `# O1 e+ j4 v4 M* m
    38. % input the testing points here %
      \" ^$ h3 A* J% }+ A; F7 ~* Y+ b
    39. title('神经网络训练结果');
      ! W- w$ Y, A0 J4 \2 K. Q, F& x
    40. xlabel('时间(天)');
      7 P4 Q7 E+ [7 D# d* b
    41. ylabel('仿真输出结果');
      ) p6 r# f- p2 b7 T! h
    42. legend('仿真模拟值','实际值','神经网络预测值');  s$ X& d\" J) }9 J3 s5 R( p1 |
    43. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
      7 A- |1 ]1 y+ u$ x
    44. x=1:5;- f7 d  E% A! B8 d
    45. y=1:5;3 T, l' G# A- j+ F
    46. y21=sim(net,p);
      8 ]; c1 R0 P9 Q\" G8 j5 `. G3 |
    47. y2=reshape(y21,1,15);9 I1 Q3 B# X& ?- ^2 m\" @
    48. clf
        e; |+ j8 @. U+ P2 N6 a5 l- z
    49. plot(r,y2,'b-^')+ d& J1 [5 X. F) H1 [2 w2 B# q
    50. hold on, w2 S% S8 j& {9 m* a% T
    51. plot(1:20,day,'r-*')( a7 b. X# B# b$ ?' m
    52. %%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%
      - W  T, p3 ?8 }& g! M4 R
    53. y3=sim(net,h3);
      ; e  ^0 ^) C6 ?4 I. e, R5 A7 z
    54. plot(21:21,y3,'-*')
        U  O4 F: [. D9 ?\" t) T
    55. hold on
      - `7 B. C5 ~, c$ c2 ]0 G5 m
    56. title('神经网络训练结果');8 R2 W. {7 x4 h. b& {9 q7 I
    57. xlabel('时间(天)');
      ; P& Z4 B6 k, M- s! M
    58. ylabel('仿真输出结果');
        k# k$ n# s/ N6 j, Y
    59. legend('仿真模拟值','实际值','神经网络预测值');
      + M, ?, W5 h5 i5 f- G
    60. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
      0 T5 S( D1 G4 M: n6 s- |6 X
    61. x=1:5;
      ' F$ K\" k\" O5 ^
    62. y=1:5;& f, M1 u0 l7 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-4-12 04:11 , Processed in 0.434205 second(s), 58 queries .

    回顶部