QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2666|回复: 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* e1 d% ]/ G- i7 c* _9 j4 U; c
    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];! P- U! {2 L$ H% X6 m2 s
    dayhistory=day(1:20);%取其中三十天作为历史数据样本3 B% e5 O: U7 E1 N9 X" H
    dayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的
    ) Z+ `& n3 ^- p. @dayday=day(1:15);% 取其中的前25天$ A. T) h5 \9 ~4 y# I# Z
    daypost=day(6:20);%取其中的随后25天
    7 |2 g: Y: n8 y% op=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本3 t$ u1 k' k: n3 I! M/ d
    t=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量
    1 \6 u6 X# x* D" L) y0 D( ydaylast=day(16:20);
    + R- C0 Q' X* b  l1 W1 k4 x; Oh3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本
    7 W- Q9 [. }) M+ p) ~( j5 Ur=6:20;
    & k$ u9 q3 M; Z$ a) trr=reshape(r,5,3);* B: {9 T( U/ g% [5 a
    %%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%
    / o+ l. K% @- N- L# v( jnet=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');; b% Z8 ^( g' f6 a) A1 ^
    y1=sim(net,p);9 j/ d* B" D* M7 I8 L
    % 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量& L) f% H! k, V0 v
    % 两层的传递函数均为purelin+ {! }" ~! J. q* \/ }6 f$ O
    % 训练函数为trainlm7 u5 ?2 Y& ~3 Q/ P% _
    % 所训练的网络大小为[5,5]
    # R0 V: H2 h3 s8 w7 V- q: k% 仿真训练前的网络9 P" }; U- D+ [1 `
    6 B: ?' e/ ], M" H
    %%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%
    * `: Y& _! P8 K  p% r2 @% network parameters:
    9 B6 K" {( t+ _%   epochs--epochs of the train
    : `  \6 X  F# [7 l, Y# y6 J) y  `%   goal--errors goal of the network
    : S6 d2 k2 [) T9 ~, ]: K%   lr--learning rate
    % D3 t, d! g  @/ i%   shows--epochs between the displays3 G9 S2 i% z! X. t! z
    %   time--Maximum time to train in seconds
      E' D* X; p4 R8 Unet.trainParam.epochs=200000;  % 训练次数
    $ z# e: _9 o1 ^% z  A) onettrainParam.goal=0.0001;  % 误差期望值$ @" V/ N0 g. V! E
    % returns of the train:3 A* Z8 {; e. a  n8 a/ v
    %   net--New network! G/ D1 Q9 m# e$ f0 `" o2 U# O+ F
    %    tr--Training record (epoch and perf).  R. o% P" l5 Y, O* u" P8 M! b5 T
    %     Y--Network outputs.
    ) Q* Y, z, j" R; V/ U( ^%     E--Network errors.* y7 Q# x$ t* _& S- Y* c5 f. W
    [net,tr,Y,E]=train(net,p,t); - _  u9 N, g7 d6 e5 m+ I
    %%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%; s7 I  H  Z) y+ R
    % input the testing points here %: o9 F( Q6 `# ^4 q' a0 K
    title('神经网络训练结果');8 }" E9 z2 W1 H0 p
    xlabel('时间(天)');
    " p2 z$ T( s% A/ e) v2 aylabel('仿真输出结果');9 ^4 H  [: m& u# |$ w
    legend('仿真模拟值','实际值','神经网络预测值');2 p7 v0 s6 q9 \  k" @4 e
    %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%/ x, G' }1 R, V3 S1 v+ u- r" B$ _
    x=1:5;
    ' `" N; H0 ^7 u. ?! zy=1:5;. e7 b& {( g( ^5 d# F
    y21=sim(net,p);
    9 S' A/ y8 {1 _/ U3 c# d& h' Cy2=reshape(y21,1,15);
    3 ?( Q% d6 o9 ]" cclf
    4 ?$ D. i" L, H( D5 A' C, J5 Y& tplot(r,y2,'b-^')
    4 A* j6 U- w2 yhold on
    8 `' d0 A, C* P: f, vplot(1:20,day,'r-*')" `/ y8 V1 L0 Z0 u6 v: @
    %%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%7 A, Q5 w4 E, X; R# V
    y3=sim(net,h3);/ X7 a( N6 i2 o$ _+ r4 Z, Y* s; `- \7 `
    plot(21:25,y3,'-*')+ `6 x( U0 L/ [' r% N9 a) w6 N
    hold on( c3 d! E$ v3 C: t5 W
    title('神经网络训练结果');
    ! ]  P1 S9 N, yxlabel('时间(天)');
      F: j8 \# g+ o% i# A4 }ylabel('仿真输出结果');
    ' b8 z( S+ @$ @legend('仿真模拟值','实际值','神经网络预测值');1 t0 m4 {: n- N+ I$ z5 d
    %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%$ d) B, W+ z% X% H
    x=1:5;9 b& B# T$ ?1 G5 z
    y=1:5;/ e# S. F" O9 [4 e' x) T! S! ^
    plot3(x,y,E(x,y))
    ! B2 k8 R$ N+ g$ }
    , I6 A" ^$ P) x8 b! b0 }( v2 I

    最佳答案

    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
      $ L' ]+ K# F  e: q: S8 _, L
    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];3 Q! O* T% u( e( p- j/ m2 T) p
    3. dayhistory=day(1:20);%取其中三十天作为历史数据样本
      ; j! V: C5 s: f0 V/ ^3 j& Q
    4. dayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的* ]# O0 `1 v6 q$ R+ f\" c
    5. dayday=day(1:15);% 取其中的前25天
      . w! P3 ?\" c! J1 L
    6. daypost=day(6:20);%取其中的随后25天
      / y6 P# `. [, h* s7 r. _3 h
    7. p=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本( S, h) s! _2 |' K( [. {3 k
    8. t=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量
      7 y4 g; U1 h9 B4 C, ^. a
    9. daylast=day(16:20);
      7 N\" Q, `# H- G% ]
    10. h3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本7 ?1 r7 p% ~! D$ d. _
    11. r=6:20;0 X- f3 k4 K/ y. ~
    12. rr=reshape(r,5,3);
        e+ Z( ]; Y% I6 j; @
    13. %%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%+ Y' ^' |2 e6 O* n& e
    14. net=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');
      ( Y! [$ X+ S/ p7 ^7 p  x  d
    15. y1=sim(net,p);' `\" P9 s8 y( ]\" @. F  D/ G4 _0 C
    16. % 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量( o7 N. z' z) C0 I( o4 }0 ?& e
    17. % 两层的传递函数均为purelin
      7 x6 E\" m1 T* N/ e
    18. % 训练函数为trainlm
        }& B& U9 w* V# D
    19. % 所训练的网络大小为[5,5]5 K( \/ r. W5 {- @* V
    20. % 仿真训练前的网络% x$ b! |- z% `( s
    21. & l1 @6 j* n2 \+ o
    22. %%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%1 A* C5 }\" y- W. e4 |# ^! p: `  u8 V
    23. % network parameters:
      9 w) Y4 }3 @* W2 S
    24. %   epochs--epochs of the train
      * {* ]% I) s& r# J/ N3 A+ h
    25. %   goal--errors goal of the network  N; B' D- D' W: a$ W  b& b) k
    26. %   lr--learning rate
      + G! J% T: m* B3 c
    27. %   shows--epochs between the displays
      # p* E9 m\" u/ j& z4 O- e' o3 \
    28. %   time--Maximum time to train in seconds
      5 G' N/ ^3 Z6 n+ M) T' F4 v
    29. net.trainParam.epochs=200000;  % 训练次数
      7 ]$ m6 M$ g: u\" k1 {
    30. nettrainParam.goal=0.0001;  % 误差期望值
      / [& L# S% M5 j. }7 T
    31. % returns of the train:
      $ m: Q: p% V  C$ I% E$ Y5 S
    32. %   net--New network
      & D. N' _- m& e$ x0 \! [
    33. %    tr--Training record (epoch and perf).' H& B6 |: R& [5 p6 ]& x
    34. %     Y--Network outputs.
      8 Y/ J4 S! K9 l# V0 z& ]
    35. %     E--Network errors.
      1 v1 v6 ~5 D! g! F& u
    36. [net,tr,Y,E]=train(net,p,t); 0 }* e9 F, S, @
    37. %%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%& m8 \- y0 u$ e* S8 R  m
    38. % input the testing points here %
      6 }0 {3 `/ P# r' J8 o
    39. title('神经网络训练结果');( y; R$ H4 B+ m
    40. xlabel('时间(天)');
      0 J0 Q1 K8 E5 h; |1 G# m, @
    41. ylabel('仿真输出结果');
      , A8 i' C; I1 I& a) |
    42. legend('仿真模拟值','实际值','神经网络预测值');
      : @( `7 v* ?3 o$ e/ Y5 v
    43. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
      : z: L3 z; V* S8 O$ ^( v
    44. x=1:5;2 l8 z! @6 a* v& r; N% M& @
    45. y=1:5;
      , }+ B7 m! L6 ?$ u0 z+ q9 P+ |
    46. y21=sim(net,p);
      / x3 Q) L  @1 m: u6 t
    47. y2=reshape(y21,1,15);/ U, }& L9 ~0 G
    48. clf3 S2 |\" B% Q* h( d4 z1 Q
    49. plot(r,y2,'b-^')
      # u& y, g% M  N# x: H3 O' l3 _\" t; w
    50. hold on
      - x! b- c- v  O- G0 p% Q
    51. plot(1:20,day,'r-*')
      7 O( @$ y; F$ b0 S, x
    52. %%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%
      2 s! `\" u3 R! ?6 P3 s
    53. y3=sim(net,h3);
      6 n# `! Q  \2 ?+ J5 f# C\" Q3 W. }, i
    54. plot(21:21,y3,'-*')+ W- X. O. e! @9 w  ]. \! \) ]
    55. hold on; @9 `+ B& H6 Z3 I2 ]
    56. title('神经网络训练结果');+ Y: z0 ?' k( P4 L
    57. xlabel('时间(天)');
        B5 Y+ o1 T' b# O' s$ |
    58. ylabel('仿真输出结果');8 {: l9 D4 K$ F. [& _
    59. legend('仿真模拟值','实际值','神经网络预测值');
      % |& z6 X4 k4 N
    60. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%  s- C$ o0 U2 @$ e
    61. x=1:5;' J9 Y1 C/ y3 r. c7 n% X% h
    62. y=1:5;
      , O) V5 m! I9 `- U
    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-8-25 00:51 , Processed in 0.503637 second(s), 58 queries .

    回顶部