QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2311|回复: 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
    ( F6 N3 {) x7 n7 Z. m# X/ L8 qday=[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];
    + f+ p9 G5 ~! I' M+ Xdayhistory=day(1:20);%取其中三十天作为历史数据样本
    " h' j& Q7 y/ C7 S- }. Idayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的
    " c! _6 v$ k& R0 k' ~dayday=day(1:15);% 取其中的前25天; ?+ }& \; Q+ J. ^
    daypost=day(6:20);%取其中的随后25天; b; {  L5 d/ A3 a' l5 u; T6 E
    p=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本
    + [8 G6 F% c# _/ Vt=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量4 ]' N( @  ~; @$ o+ G! J+ ?
    daylast=day(16:20);
    3 Z; y& \) i9 J- ~% J  vh3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本
    9 X" J6 D! Q" r, m) @r=6:20;) ]! ?3 I# ~# X# m& r
    rr=reshape(r,5,3);
    ' h! X$ r# X4 ?- @5 I; o%%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%
    . P$ S( Q( R6 g  T8 T7 ~2 O! {, jnet=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');. i* N: ~7 w. l2 Y  k" ?& Y
    y1=sim(net,p);# ]5 V& P9 D+ p
    % 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量
    3 f0 `" q7 I8 R+ v  D% \% 两层的传递函数均为purelin: c7 V. _0 L( M9 S! l* M% ^
    % 训练函数为trainlm
    & I# W/ k' |3 |) f5 g& o% 所训练的网络大小为[5,5]
    2 K" p5 f6 g* x1 B% 仿真训练前的网络
    ' _/ `+ [( o- I, T) y$ e2 O* \( ^7 M8 U+ C7 y% |
    %%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%1 C4 U) ?) Z/ m1 O7 H6 M% J* B1 c
    % network parameters:
    3 X" P. g/ h8 n4 y1 y%   epochs--epochs of the train
    # X! e* H1 b( h8 C+ Z% e%   goal--errors goal of the network
    9 u- k& k9 q' R2 b% n1 Y%   lr--learning rate
    . m! K% _, A/ s$ P" J; J%   shows--epochs between the displays
      V' }; t; ]! N1 C% S%   time--Maximum time to train in seconds
      x' z  o9 ?# q0 n( _net.trainParam.epochs=200000;  % 训练次数- n1 W' u) S5 ^- I* u$ E& [) Q0 k- T
    nettrainParam.goal=0.0001;  % 误差期望值+ e8 J0 S+ q5 O+ z$ Y" O- }
    % returns of the train:3 F" O% u: I: A$ B
    %   net--New network& |, a/ I, b: S8 f
    %    tr--Training record (epoch and perf).
    ; r/ Z+ R: o& j% o) g%     Y--Network outputs.
    5 u5 [( a; g1 L3 Y% h# f%     E--Network errors.' @: \# F+ A8 Q" j
    [net,tr,Y,E]=train(net,p,t); 7 T8 E/ i! J* v$ I  p
    %%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%
    ! m( _; Q7 D* i4 z: u* z' b" y% input the testing points here %7 g& R, t) J* T  g3 S
    title('神经网络训练结果');
    5 j$ H  u. X) m' ixlabel('时间(天)');+ m6 o  C9 t/ p6 X$ t; i
    ylabel('仿真输出结果');
    ! H5 T" h; d, K! `1 elegend('仿真模拟值','实际值','神经网络预测值');
    8 V; J/ ]0 ?0 ]* t7 F0 A; u%%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
    * }8 N0 R) [' Ex=1:5;
    . @' L% K. p4 V  ^! f, P0 Ky=1:5;
    + K8 [+ a3 X9 g& Py21=sim(net,p);; A9 o2 ]1 j8 C$ I! s
    y2=reshape(y21,1,15);' }1 Q: }4 k" P' \; E) V
    clf+ e9 k% s- f  M3 Y* g* T  e5 V* L
    plot(r,y2,'b-^')4 |  E$ D7 I. P* L. W& ~; C6 F" n
    hold on
    2 d7 t) C) F9 ]  i8 ]& ?; tplot(1:20,day,'r-*')/ z) k3 X( Z9 B
    %%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%
    : {8 F* u1 L7 Ay3=sim(net,h3);# ^& w3 X  q% R7 y' J/ O/ }5 l0 c
    plot(21:25,y3,'-*')5 a! i, [  O# Y) i! _, Y4 E
    hold on
    2 K) c" ^0 S! L1 I; `( ?" Etitle('神经网络训练结果');% ]8 }3 p8 s+ m
    xlabel('时间(天)');
    ! Q9 v# }: h- k. V) Iylabel('仿真输出结果');
    ) `( ?6 T$ O" slegend('仿真模拟值','实际值','神经网络预测值');
    ' d/ ]& i7 A$ Y+ c0 F# ~%%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
    ; [9 E- v$ i! R8 g- H7 ?6 M3 Sx=1:5;! s5 q) A) ?3 F* q
    y=1:5;3 a7 Y0 x; g& \2 L, c0 c
    plot3(x,y,E(x,y))6 d9 ?3 r4 r, d$ Z3 @6 X2 }7 [

    0 u- w9 g* d4 m# h) S

    最佳答案

    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\" h  Q9 B, d0 ^6 M( ^
    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];; Z8 l& D& W9 h\" V1 e+ j
    3. dayhistory=day(1:20);%取其中三十天作为历史数据样本
      : x! `- F\" M2 p9 N! C  H0 B# R
    4. dayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的, y$ K3 t& e4 `
    5. dayday=day(1:15);% 取其中的前25天6 k; b  o: A4 S
    6. daypost=day(6:20);%取其中的随后25天2 ?\" t4 h# D9 L
    7. p=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本+ U4 y9 M) S7 i
    8. t=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量; o1 b7 C* |* z% H% s! {  N
    9. daylast=day(16:20);5 V# B% }$ {( P% y
    10. h3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本0 Y\" @) H( @5 B; q2 Q
    11. r=6:20;& Z3 O: _0 |3 _0 k9 n  Q$ w
    12. rr=reshape(r,5,3);# s6 d! ?. |% x6 |
    13. %%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%' E# h2 H: e, ]/ F/ J/ N9 w# w
    14. net=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');! z0 `# i5 x3 B
    15. y1=sim(net,p);
      ' Q+ r& i( Q: y7 g& L* _6 ]
    16. % 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量/ l8 T2 x# t( Z) f
    17. % 两层的传递函数均为purelin
      # f1 k! R; Z6 _. ~
    18. % 训练函数为trainlm
      - A7 ~5 f1 i' j$ D0 I# V
    19. % 所训练的网络大小为[5,5]8 p7 i/ @5 X! o+ Y, z# n+ O1 d8 q) T
    20. % 仿真训练前的网络- U6 T9 k; D# M3 g. r+ x& m

    21. 2 _9 h  V, d+ A# E6 u
    22. %%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%* a# R9 z: H+ {  J
    23. % network parameters:' U1 R7 D, M- ^' j: n, N
    24. %   epochs--epochs of the train
      + c( i4 b- t3 {2 X) f) t/ G
    25. %   goal--errors goal of the network
      7 u# h9 u) s& @3 ]1 b1 n
    26. %   lr--learning rate
      5 u: M3 s; D; P' i$ A
    27. %   shows--epochs between the displays
      ; \( w  y/ {+ k4 n* U. J) e1 d  j5 ]9 A
    28. %   time--Maximum time to train in seconds
      \" d% l, V+ C# M5 {* H9 x& I4 |
    29. net.trainParam.epochs=200000;  % 训练次数
      ; C  {& G/ u; Y% y! U9 Y: H
    30. nettrainParam.goal=0.0001;  % 误差期望值2 L6 G* Z* o6 M4 L2 j1 y$ }$ k9 `& S
    31. % returns of the train:
      9 j8 U/ g- X( [+ @+ P, o
    32. %   net--New network
      1 \9 S: n  G+ Q8 S! J) Z
    33. %    tr--Training record (epoch and perf).+ Q* m0 @8 P0 `' X% X, K
    34. %     Y--Network outputs.5 `8 H2 I5 U9 H( h6 v& Q6 i4 v( ?
    35. %     E--Network errors.
      . C0 s- O6 [; [
    36. [net,tr,Y,E]=train(net,p,t);
      5 u! l. |7 G5 T8 v  N8 K% L' N
    37. %%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%
      8 ]1 _! \; X) p0 ~: }4 z
    38. % input the testing points here %
      9 X\" i' U7 Y7 t9 ?# G
    39. title('神经网络训练结果');1 I3 z7 A1 L/ N% c. g* d
    40. xlabel('时间(天)');8 D5 q2 ?: L% O- y9 D( T\" D( p
    41. ylabel('仿真输出结果');
      0 Z. m\" V$ D  s( \8 w' ~& u- G7 h
    42. legend('仿真模拟值','实际值','神经网络预测值');, e& |\" a# a+ j+ p% \6 Y$ I0 B2 @' m
    43. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
      ' Y  I2 P3 x7 }4 q  t
    44. x=1:5;
      ! b1 i( r* n# T
    45. y=1:5;
      / d( p' \( ]/ k\" a
    46. y21=sim(net,p);' p6 |\" T# K) o9 L' W7 _
    47. y2=reshape(y21,1,15);
      % S- i# {2 i% P- G: Q! J
    48. clf
      ' D$ A. j8 Y/ B% K! t3 F' [
    49. plot(r,y2,'b-^')3 M# f2 L\" K- Z
    50. hold on
      8 z# y) f/ z8 e
    51. plot(1:20,day,'r-*')
      ( }* d& w$ C- K& Y8 r. }
    52. %%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%. P9 I% V7 m; t
    53. y3=sim(net,h3);- Q# U/ F\" V: t7 e2 G( d, @8 W
    54. plot(21:21,y3,'-*')! y\" U/ b+ G. s( H
    55. hold on) t6 a. l$ a+ @; x2 r
    56. title('神经网络训练结果');% G: g* ?) G* ~) w* h& R7 o
    57. xlabel('时间(天)');
      * C6 a( p$ ^* k! I
    58. ylabel('仿真输出结果');
      ' n1 S\" [* ^6 l, `
    59. legend('仿真模拟值','实际值','神经网络预测值');' q5 ?$ U( v. B/ L7 L0 }+ L6 c
    60. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%$ P4 R2 m6 A! W/ e
    61. x=1:5;  T! ?( Y5 R, g+ O& O( c6 P\" f) O
    62. y=1:5;
      & ]/ U' N) X+ K5 a+ G' a
    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-15 13:09 , Processed in 0.551341 second(s), 62 queries .

    回顶部