QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2312|回复: 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
    8 ^! c- H1 i0 X; i! H( n1 F4 p( U+ bday=[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];; P+ A! O" u7 j+ J. O
    dayhistory=day(1:20);%取其中三十天作为历史数据样本
    ! ^$ E) n: @/ S0 M8 k- }dayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的; S+ k1 v6 x' \) t
    dayday=day(1:15);% 取其中的前25天# A$ I  B5 g) h$ {  C1 |
    daypost=day(6:20);%取其中的随后25天7 C& O2 H, p/ \0 k. d
    p=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本
    # L3 g) k! ?9 \" n, l- Jt=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量
    8 x. e8 r' E" u# Ndaylast=day(16:20);
    ) U0 H  _+ E& w8 x% `h3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本( B  X* s7 J  [/ z+ `% U" |
    r=6:20;9 y1 x: c- f+ @( ^
    rr=reshape(r,5,3);0 A4 f8 m% g  x
    %%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%
    , ]5 q! K, B+ Z& ^6 E: Fnet=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');6 D) x- V1 `0 n" S2 U- B' Z  K3 I& A
    y1=sim(net,p);* q9 g% q- Q" \/ t6 R# ^  [
    % 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量
    % C3 q* K9 h6 u( Q6 A2 A0 b% 两层的传递函数均为purelin( i' ^6 M& D! c* ?2 C% X
    % 训练函数为trainlm, q$ D% t- @8 L
    % 所训练的网络大小为[5,5]
    ) R! c+ z" K  v# }" S  g; t% 仿真训练前的网络' Z, S0 W% q' M3 B) [) y

    + r8 y' P" M  ]%%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%
    5 C7 n; U0 A- i( X* @. R% network parameters:
    ' Y/ _9 y) j4 }: i1 L; f%   epochs--epochs of the train
    0 w/ p9 W+ C+ w2 l7 [%   goal--errors goal of the network
      l- v" ~" k1 [5 }/ P%   lr--learning rate, k* U; d$ o0 M
    %   shows--epochs between the displays
    % S& a7 v) G5 f4 w# S%   time--Maximum time to train in seconds
    5 x5 [3 [, N* e/ R/ i7 ~2 Hnet.trainParam.epochs=200000;  % 训练次数7 S! z( g& e- v1 H
    nettrainParam.goal=0.0001;  % 误差期望值
    1 l% E) T* F7 i+ e) e% I; x% returns of the train:4 m. s2 R! o! u  U
    %   net--New network
    5 B# q: I# n/ z%    tr--Training record (epoch and perf).# R; R  c5 h2 p, n
    %     Y--Network outputs.
    4 `7 g$ K2 Q6 v%     E--Network errors.
    ( E& ^* }) W2 J[net,tr,Y,E]=train(net,p,t);
    0 v! J, _, h% H1 D6 D2 P& m, e%%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%
    3 }2 [6 ]* U4 Z% S( t2 R% input the testing points here %" m: Q. f* l3 ~* Q
    title('神经网络训练结果');5 e& r0 Q9 f; `
    xlabel('时间(天)');8 H# i) K! y( d
    ylabel('仿真输出结果');7 {6 v( C5 ?1 D4 A
    legend('仿真模拟值','实际值','神经网络预测值');
    ; N( A3 K1 v$ e/ K: v2 y' E- b%%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
    1 s! \  S% _( [x=1:5;
    / N, X5 V) K) `+ w0 O2 c6 Ry=1:5;0 c4 X/ a+ K9 {' q4 N
    y21=sim(net,p);8 L0 G8 p6 s+ B' S9 y
    y2=reshape(y21,1,15);
    2 h: O) Y3 O4 _+ _; }9 Uclf
    8 `" W- Q) t/ k* `plot(r,y2,'b-^')
    0 k* [. ?! b! a. Z" Vhold on8 c) v6 a( T, p
    plot(1:20,day,'r-*')
    + p5 ]5 B8 R' ~9 m. P0 v/ Y& p%%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%
    / Y/ x: G1 K; i- H( d, h5 u. sy3=sim(net,h3);/ V- [8 K. @' c) q5 c. k" @
    plot(21:25,y3,'-*')
    1 b) q3 ^9 D9 A* |! n( vhold on
    1 H, K. W+ a; ?title('神经网络训练结果');  {5 f5 m* s/ a6 u7 P# ~0 e6 T
    xlabel('时间(天)');! q. a& h. ^: H8 _' N
    ylabel('仿真输出结果');, g5 h2 ^& u2 Y2 s8 O+ }) o
    legend('仿真模拟值','实际值','神经网络预测值');
      l6 [2 }, z$ {: L1 b9 c  Q# e' C%%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
    $ j, S0 E( F, m6 ax=1:5;* d+ q* G$ h& V) }5 h" m
    y=1:5;
    6 B, T1 l/ c6 [plot3(x,y,E(x,y))
    % t- o! ^( C& e$ Z. {# G. c7 H; ^
    9 X. |* `3 h( y- X- T+ F6 k

    最佳答案

    madio 查看完整内容

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

    3万

    主题

    1311

    听众

    5万

    积分

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

    [LV.Master]伴坛终老

    自我介绍
    数学中国站长

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

    群组数学建模培训课堂1

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

    群组Matlab讨论组

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

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

    是维数不一致造成的,我只能把代码调试的能运行,但是可能结果不一定对,你需要对前面的输入数据和网络结构做一些深入的了解
    1. clear
      9 _5 ?3 o; h& K: h
    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];
      4 E3 w3 ~/ w$ `7 K  j% O
    3. dayhistory=day(1:20);%取其中三十天作为历史数据样本
      5 i) e; I& l; y% b$ s) M1 G
    4. dayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的
      , u\" T0 D2 L, B
    5. dayday=day(1:15);% 取其中的前25天; u  a+ q% R( q( B. F
    6. daypost=day(6:20);%取其中的随后25天
      4 E\" C% ~7 t9 e
    7. p=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本$ A; r+ f5 F9 j; }\" E) x+ ?
    8. t=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量7 v% m) K! L* U1 T
    9. daylast=day(16:20);  \6 X- T. N- r
    10. h3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本  P, O' L; P2 |/ N  d2 V. m
    11. r=6:20;8 _9 r% j5 \$ Z
    12. rr=reshape(r,5,3);
      4 T! }\" ~7 t: g! D
    13. %%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%+ t5 ?9 C, D# p+ ^  e- a: ~
    14. net=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');
      6 f( k6 k; s! E
    15. y1=sim(net,p);+ \  k) f. z' i' W% B) ~' w. A6 N
    16. % 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量
      & A& `* }$ ]9 Z1 G; a, a\" x. @
    17. % 两层的传递函数均为purelin% C( h( M0 G+ @5 x4 i\" w% B
    18. % 训练函数为trainlm/ D  B4 d, q3 |* s5 b
    19. % 所训练的网络大小为[5,5]
      : B\" H4 r! r; q- \1 X9 p; s' \
    20. % 仿真训练前的网络
      0 H9 g( l: [% O7 k$ K+ |
    21. 5 J- I: V' \$ F' h
    22. %%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%\" ]& n8 Y0 `* P6 {& m. c
    23. % network parameters:
      ; G6 {5 S9 `- d( q
    24. %   epochs--epochs of the train\" y; e2 z$ Q2 J0 p& \
    25. %   goal--errors goal of the network- _0 R) H' a+ I
    26. %   lr--learning rate
      : \8 j' t3 z' r6 G7 w1 a
    27. %   shows--epochs between the displays
      1 v$ Y2 F* E: M
    28. %   time--Maximum time to train in seconds\" R6 R$ c& V' Y) @/ D! ], K\" {) }
    29. net.trainParam.epochs=200000;  % 训练次数) [1 F' V1 G* h/ ~
    30. nettrainParam.goal=0.0001;  % 误差期望值
      , r: _, w; s2 w9 \/ F8 f
    31. % returns of the train:
      \" C! V& [! _' q2 z
    32. %   net--New network8 `$ v5 F( d/ m8 R. x
    33. %    tr--Training record (epoch and perf).# O, Z' k8 B! _& b0 ]( _
    34. %     Y--Network outputs.4 k% M+ j; r5 v# v% l, L9 g
    35. %     E--Network errors.# ?9 D' p\" d2 K: O7 |
    36. [net,tr,Y,E]=train(net,p,t);
      8 V3 e$ v4 t. D, t
    37. %%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%6 W8 G* w6 z, p; `% o4 E  I
    38. % input the testing points here %
      ' l' Y5 A4 g\" i
    39. title('神经网络训练结果');
      3 q( X; [7 Z$ x! f
    40. xlabel('时间(天)');# q% Y; w' o& b4 B* k! e, M
    41. ylabel('仿真输出结果');# \7 A3 Q' R( [2 V$ D  X, e
    42. legend('仿真模拟值','实际值','神经网络预测值');
      - q0 r8 d: n9 P% A5 f. P
    43. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
      . W0 p1 p4 C  |4 Y4 {
    44. x=1:5;
      9 Z( e9 j* ]- H8 U- _7 x
    45. y=1:5;5 p* S. p6 ^- S
    46. y21=sim(net,p);  {% A1 U- m+ x! R\" r\" [9 p\" m
    47. y2=reshape(y21,1,15);
      ; m& g8 U; N& l3 ?7 x( N0 Z
    48. clf  J% {, q) J* e/ C! i\" D/ b
    49. plot(r,y2,'b-^')
      # [, e' H2 |2 d
    50. hold on
      % b: {# L8 R3 d( H. |; w+ h0 s& }
    51. plot(1:20,day,'r-*')
      6 f, H7 |! w' Q! S' d
    52. %%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%' }/ ~. }; C( {* D7 b$ x3 z
    53. y3=sim(net,h3);9 R5 p# Y4 [9 |2 t& O# w7 C1 b
    54. plot(21:21,y3,'-*')
      9 r. U( B9 i% H
    55. hold on4 R1 S\" |; w& c/ j' q\" Z& @
    56. title('神经网络训练结果');
      0 B- O& \6 ?1 c# Z9 L: S1 P  M
    57. xlabel('时间(天)');
      / {2 d! @: [' D
    58. ylabel('仿真输出结果');
      ( [6 [; A$ F) i8 W
    59. legend('仿真模拟值','实际值','神经网络预测值');. N, i7 U& ~+ e8 n
    60. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
        t, b2 [& O7 [: ~: @. c, G( M/ F4 i; H! T
    61. x=1:5;) X# D. T3 e9 p* ^) G  u0 @  N
    62. y=1:5;
      : g- S- ^3 b$ \; X
    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, 2025-8-16 01:24 , Processed in 0.384726 second(s), 57 queries .

    回顶部