QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2556|回复: 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
    ! Z# R( c- w' _0 G' `$ 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];# V. ]+ o2 D- A/ `! c
    dayhistory=day(1:20);%取其中三十天作为历史数据样本# K4 M/ s/ c5 v6 D9 y7 f
    dayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的
    & }8 p" P/ E1 E. m" Vdayday=day(1:15);% 取其中的前25天! `- s" e* R7 l) k+ z$ T
    daypost=day(6:20);%取其中的随后25天
    / I" q0 P1 ~/ g! Dp=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本
    4 N7 d% v, b# ?+ wt=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量
    0 x1 o4 u5 e6 {- _8 C8 V- e  l, vdaylast=day(16:20);
    & a- I4 P0 F5 Eh3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本
    & I) }, M1 w+ H! L% Ir=6:20;
    & |0 k  ^  j, M. err=reshape(r,5,3);2 T8 ]$ P. Y% [1 s8 [' @
    %%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%
    ) t( R; ]8 n6 c2 ^net=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');  z* U! p% w" e! v
    y1=sim(net,p);
    " ~; p  N- w: P% 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量
    : C* e0 A: L: m; _2 g% 两层的传递函数均为purelin/ ^9 R) b5 u4 q+ W) W/ R" e
    % 训练函数为trainlm
    " |8 G+ G8 f0 a8 l! Y% 所训练的网络大小为[5,5]* c: f+ ]! t* p8 @+ v
    % 仿真训练前的网络
    . W) [' p7 P% h% E8 l
    * t4 J! \/ n  X) C%%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%8 D4 v0 y& v- J3 _1 j* u: f
    % network parameters:9 p3 _0 [, ], v% r+ w. w
    %   epochs--epochs of the train1 [  {! I& T  U/ n
    %   goal--errors goal of the network
    ( `/ q# V- I" B* Q) Q% @! R%   lr--learning rate3 e; B1 c0 s$ d$ _! Q
    %   shows--epochs between the displays* o9 u1 I3 _5 ^: i9 y
    %   time--Maximum time to train in seconds
    1 @' f, g; y# K! l2 a1 t" gnet.trainParam.epochs=200000;  % 训练次数! b8 q( C% D% X% O9 P
    nettrainParam.goal=0.0001;  % 误差期望值' ^2 `4 s; i" i6 w8 h+ T! s& l9 b
    % returns of the train:
    $ e. k5 g+ \* h  `- e/ C  {' \%   net--New network
    . r* ~9 ^+ P* J8 A) s0 O( P%    tr--Training record (epoch and perf).
    : _+ g- T* z& @  D9 }%     Y--Network outputs.2 m; V  q) i& P* H
    %     E--Network errors.8 a4 b& Q4 m8 {/ X2 P& m
    [net,tr,Y,E]=train(net,p,t);
    - @; Z+ p3 {1 d5 n5 q0 `%%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%
    + K: f/ R. u$ T; d! H% input the testing points here %$ c# p9 j$ I. t! f* v0 g
    title('神经网络训练结果');/ U+ j  h' g+ L, N! {( Y& Z' N  D
    xlabel('时间(天)');. r4 t. w2 s) ~/ H: I6 w' k
    ylabel('仿真输出结果');
    & b* r. H$ l2 F' z2 |! u+ ylegend('仿真模拟值','实际值','神经网络预测值');; T) O, l$ W* N" Z( x+ A
    %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
    4 ]! I) L1 }% I5 F  a. X3 rx=1:5;
    3 T0 g6 Q" D& X! A; ^& z9 W0 xy=1:5;0 K# z0 f7 O% U/ F+ U* e- S' y/ B
    y21=sim(net,p);6 w8 [: j; }) u
    y2=reshape(y21,1,15);' O) O  b- Y# X; u" s# Q% K% y
    clf
    # h: ?8 i5 L9 V' E3 E/ X; j! oplot(r,y2,'b-^')6 n/ t# F' }3 o8 c% G, k2 @0 T
    hold on3 ^& e8 x3 k5 @1 ~8 j  U
    plot(1:20,day,'r-*')
    ; f6 m: I7 x1 N- U' w3 b% ]8 S%%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%
    ! p+ b& d+ A! ^5 `  Q( @" _* ~y3=sim(net,h3);# o% p! n8 L8 F6 H* O
    plot(21:25,y3,'-*')
    6 L' z, m' v3 S" n4 N  Ahold on( _5 x7 P! |: b+ w% k1 P1 v
    title('神经网络训练结果');8 z) D9 P7 J  U2 d
    xlabel('时间(天)');
    ; G9 B" r/ C$ Tylabel('仿真输出结果');
    ! {0 A2 S, }( e: _+ h6 W; ], Glegend('仿真模拟值','实际值','神经网络预测值');
    # o# v+ c3 I6 W%%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%8 u0 L+ B% R2 S4 j; o
    x=1:5;: P5 x$ V1 b5 T  {+ ?6 h* D  f( Z
    y=1:5;
    ( F) p6 t6 G- r0 v1 xplot3(x,y,E(x,y))
    7 k) P' {: b7 U" D- v
    + G! w- j3 R+ ]8 t/ g

    最佳答案

    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
      7 L! m  S8 k* h) K3 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];
        I' |' B6 \3 X8 Q7 U, ~+ c4 o
    3. dayhistory=day(1:20);%取其中三十天作为历史数据样本, ~. L0 R; g0 b9 {/ I3 B  {' I
    4. dayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的
      9 y4 t5 j9 s5 \8 C
    5. dayday=day(1:15);% 取其中的前25天4 `% Y* z\" A: \' Z
    6. daypost=day(6:20);%取其中的随后25天8 j. V7 h3 J- G- j- E0 X
    7. p=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本: u7 ?- O\" F! L9 v& F6 s! V
    8. t=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量
        m2 m. x  s0 X\" l. ?* ?3 y! V% f
    9. daylast=day(16:20);
      - v2 }, U( Y& t+ M# N5 l9 m
    10. h3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本
      % y\" Y\" I( L1 g4 Q$ {8 h
    11. r=6:20;3 S, x) S8 n# |! f
    12. rr=reshape(r,5,3);& B/ n2 w& T/ }: {( c
    13. %%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%
      % _& o8 t/ e+ Z' Y. z2 f* t  v
    14. net=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');
      7 V1 j6 X) ?( k& n5 K  i* r% T
    15. y1=sim(net,p);: W. X8 l5 s( {
    16. % 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量7 m\" y6 n9 [9 Q& u' m4 ^1 K\" q5 l) ?
    17. % 两层的传递函数均为purelin8 b2 z5 u, h. |, N3 @, G& |
    18. % 训练函数为trainlm
      . g4 c9 Z1 k\" n# H
    19. % 所训练的网络大小为[5,5]
      0 H2 w1 E0 R: k! R
    20. % 仿真训练前的网络6 [- ]5 l\" p. j
    21. \" b* A2 w4 R\" h. a8 W' {
    22. %%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%
      5 A8 X7 L4 f# l+ y
    23. % network parameters:& w+ }+ Q/ `\" I3 Y* \( w
    24. %   epochs--epochs of the train* H/ ]! I2 r: b$ y* X4 R5 N
    25. %   goal--errors goal of the network6 b1 o* N: P. A
    26. %   lr--learning rate( ^4 v4 ]9 j6 K& W
    27. %   shows--epochs between the displays/ T# `9 G. q1 u. N' [5 P% n
    28. %   time--Maximum time to train in seconds
      % \* m; I: Y5 Z/ ]6 X
    29. net.trainParam.epochs=200000;  % 训练次数\" \; T\" `! X! `1 V
    30. nettrainParam.goal=0.0001;  % 误差期望值
      7 l/ D9 H6 S. c; E( z+ J6 |
    31. % returns of the train:8 _& v& M8 d2 ~+ s
    32. %   net--New network% l8 p5 L; P1 h$ D\" p( O' n* o
    33. %    tr--Training record (epoch and perf).
      + H+ L0 {% u6 E* {. R' J  X, s
    34. %     Y--Network outputs.
      # W' S% A6 O( u% Z
    35. %     E--Network errors.
      % ]0 Y* b1 P( q' @. p5 {; [
    36. [net,tr,Y,E]=train(net,p,t); - J# D9 q8 p5 D5 Y) \6 e
    37. %%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%
      1 F: q. h2 c) Y, s; B5 p+ z+ l
    38. % input the testing points here %
      1 T$ z7 l; C( k+ O
    39. title('神经网络训练结果');
      ) k' Q- T4 ?8 d$ l4 O\" f
    40. xlabel('时间(天)');  J5 n) G! j5 Q2 q% @: y- w
    41. ylabel('仿真输出结果');/ E; W& V/ C1 z/ ~! `
    42. legend('仿真模拟值','实际值','神经网络预测值');: p/ F' s( b5 S: k6 ~\" s! }
    43. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%' W4 h$ O! Y/ W  ]; v
    44. x=1:5;5 J: A\" p/ X/ `% Z! T8 g
    45. y=1:5;
      % m  e5 F% R1 |5 z- y, }( q
    46. y21=sim(net,p);
      0 H8 j/ v! H' {! P: j# g
    47. y2=reshape(y21,1,15);
      $ u\" J8 E0 D/ @2 N
    48. clf
      / U. ~# A4 o' q. q
    49. plot(r,y2,'b-^')# p  d8 P3 h2 I5 M% b
    50. hold on
      : C) Z& C$ M* M+ n: U
    51. plot(1:20,day,'r-*')6 A0 d. ]; O8 C, T\" {& K. @
    52. %%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%
      0 R+ Z* y& |\" q: t( r
    53. y3=sim(net,h3);, ~( o* p' t* s$ n  @$ X/ r
    54. plot(21:21,y3,'-*')
      ! L% k' y3 o7 N$ X2 y
    55. hold on
      1 M& T2 {2 R5 V
    56. title('神经网络训练结果');4 t4 W3 a5 z: u
    57. xlabel('时间(天)');, U! I; H4 X8 J2 E! J
    58. ylabel('仿真输出结果');( a. A; e5 w! ^4 ~5 Z# q
    59. legend('仿真模拟值','实际值','神经网络预测值');
      0 Q( r: D2 \* s: u
    60. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%5 [) T, H: U$ C
    61. x=1:5;
      % e* `! v5 P3 r& k! X. \8 K
    62. y=1:5;5 j+ ~/ z; w  w) y3 i
    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-14 21:58 , Processed in 1.070563 second(s), 57 queries .

    回顶部