QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2644|回复: 1
打印 上一主题 下一主题

[代码资源] 请问这个代码错在哪里,如何进行修改,谢谢

[复制链接]
字体大小: 正常 放大
昌辉9        

3

主题

13

听众

72

积分

升级  70.53%

  • TA的每日心情
    开心
    2016-5-23 22:22
  • 签到天数: 54 天

    [LV.5]常住居民I

    自我介绍
    初学者

    群组Matlab讨论组

    跳转到指定楼层
    #
    发表于 2014-9-3 11:10 |只看该作者 |正序浏览
    |招呼Ta 关注Ta
    10体力
    clear
    , A" _% P! r! j( ?5 \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];& C8 _) o3 ?1 ?) M! s- L! j
    dayhistory=day(1:20);%取其中三十天作为历史数据样本3 U  V' d% J/ J( z4 H% E* h
    dayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的
    ! d) F! D: Y# d+ ?$ idayday=day(1:15);% 取其中的前25天4 ~2 ~4 Z" C% f1 P* j3 y$ }3 k
    daypost=day(6:20);%取其中的随后25天
    ( j0 c7 [6 ]4 N. Ap=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本
    " r3 J+ Y' m3 O) F+ \1 y0 d0 S$ Et=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量  ^; c: v" j% g2 q* [
    daylast=day(16:20);: N; q" r6 Q# P7 a& P7 Y4 N
    h3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本
    7 r2 `6 R4 H- k' Gr=6:20;3 g" @" t, x5 i6 j
    rr=reshape(r,5,3);' O) B0 H( R# x: W* A3 B
    %%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%! L' o, }3 w% p% V
    net=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');
    , f# Y$ g4 j# t5 z' l1 Y# |y1=sim(net,p);
    - I: H* i6 o6 N. C) D' }% 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量
    ; s" _4 K; b+ [7 d3 q% J% 两层的传递函数均为purelin& u1 x# Y& @6 S' K
    % 训练函数为trainlm% J; }; @. J$ B6 u' i$ V
    % 所训练的网络大小为[5,5]
    ; R( I6 ?1 ]% @" N/ k" f% `1 u% 仿真训练前的网络- |8 g# w# @2 x
    9 l5 e% Q& j; u% R, K  ?7 C0 A- O
    %%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%# ^$ A1 h; w1 n5 y9 M
    % network parameters:* H/ l8 Z7 ^  E
    %   epochs--epochs of the train/ J9 @/ S- N6 J- M- n7 |
    %   goal--errors goal of the network, d" b; g# R- {6 \; M
    %   lr--learning rate4 w7 ]6 }: ^) T( c
    %   shows--epochs between the displays
    + E! L. N7 ]) U5 ?) N( W( h%   time--Maximum time to train in seconds
    ) h- n2 i/ N! J5 ], b" ?' s' Dnet.trainParam.epochs=200000;  % 训练次数' `0 F! C. V$ e+ v
    nettrainParam.goal=0.0001;  % 误差期望值" M$ d, t( T3 T! u) B
    % returns of the train:' E1 p0 f, {; F
    %   net--New network
    , b# Y1 Z- F% x+ H%    tr--Training record (epoch and perf).
    # [5 K" a" [1 Z/ _4 J1 X& f: _& V9 H. ~%     Y--Network outputs.! N$ u, W6 ~' o0 o9 |3 f3 v
    %     E--Network errors.$ j+ l4 K! N. Z( s6 v/ y' L
    [net,tr,Y,E]=train(net,p,t); # g$ U0 G% Q: E6 p
    %%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%
    ) b, w' H! M& \' b" e% input the testing points here %: o0 w! B0 \8 W; k
    title('神经网络训练结果');
    & p! q& E9 q  _8 F1 B) @. Nxlabel('时间(天)');- ^; }/ C6 s+ T
    ylabel('仿真输出结果');8 {; P( X+ `8 F+ G
    legend('仿真模拟值','实际值','神经网络预测值');
    * {" {1 m2 i# r7 r9 b' l; H%%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%, \4 m& o0 s; s* B
    x=1:5;
    : ?. d0 q8 ?5 a; t  h9 S& ^/ ?y=1:5;
    8 E' [( f6 O# \' U5 b  D$ _5 Ly21=sim(net,p);- W$ r  Y6 O) n' ?+ ^
    y2=reshape(y21,1,15);
    $ r8 d% Z$ S! N8 U& A. T3 xclf
    8 A  t+ W: I7 m! f& |3 Aplot(r,y2,'b-^')+ x# A6 F% c+ L) V% z: x. `# i
    hold on
    # O2 @4 Y7 I* \9 y  Mplot(1:20,day,'r-*')
    " l1 T3 k% `& t- I9 u%%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%0 f+ M' Z5 Z: F
    y3=sim(net,h3);* R, ^& V7 z" w+ s% `; n
    plot(21:25,y3,'-*')1 Y& C, {) e" S& [
    hold on+ G8 z0 m+ h( w) L( E
    title('神经网络训练结果');
    : J# V" w5 }, d9 m5 ]" d- h* v2 y0 Cxlabel('时间(天)');
    # F* P# a% @; {! xylabel('仿真输出结果');$ J$ K  o' g- F$ X6 V3 y9 q- x6 X
    legend('仿真模拟值','实际值','神经网络预测值');) O) C9 Z+ x4 [+ T; z% \
    %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
    ) s. v2 P# {/ P, O9 @3 ]x=1:5;
    ' f9 ~, f) E+ u+ Q# Yy=1:5;3 F+ `1 E1 f/ B. x3 b
    plot3(x,y,E(x,y))
    * ^; H5 j0 x  k% a( m% X( z# m+ V. I8 c
      G* b) G' O2 a* r: ^7 I; a. v

    最佳答案

    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. clear5 o* G* X8 b* u* q; e
    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];/ r4 O5 M: C7 j/ D
    3. dayhistory=day(1:20);%取其中三十天作为历史数据样本
      * W, F2 z! c$ F' d+ R\" w# F
    4. dayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的) p9 W& v6 V1 m- t
    5. dayday=day(1:15);% 取其中的前25天* Z$ [6 W, P  _
    6. daypost=day(6:20);%取其中的随后25天
        l# a) o3 ?  b( ^. x4 b
    7. p=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本8 r9 N6 U. I  F: K) o
    8. t=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量
      0 e- S. V4 F! }2 \5 H% W6 H
    9. daylast=day(16:20);/ S/ s0 T! d$ B! d9 c3 s4 R9 ^5 R3 ]
    10. h3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本2 e- c  w\" T: P: q# d\" h$ L# b7 j3 T! R
    11. r=6:20;% y. r8 R$ {0 m4 L# u7 ]
    12. rr=reshape(r,5,3);5 B; p! v3 {' `; W0 [
    13. %%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%
      ; k0 y# O0 i$ q: `6 W\" h
    14. net=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');* d- n- s# V3 }- S
    15. y1=sim(net,p);
      : f9 L  u% _% u% }: ~9 t
    16. % 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量+ N$ G8 h+ z) G1 s9 s- B( m
    17. % 两层的传递函数均为purelin
      , c' U, }4 e$ }- z' w, F! A  n
    18. % 训练函数为trainlm
      4 C\" d\" z* C5 Y9 n# z\" q+ v  f; u
    19. % 所训练的网络大小为[5,5]  E9 A\" k$ y- ^& m$ r  Q
    20. % 仿真训练前的网络
      \" M8 J7 ?  L, l/ D! @9 x8 Y
    21. , _* h  U* Q, z4 ^% @
    22. %%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%
      ' m\" ~7 q0 t/ M, r, `
    23. % network parameters:
      ' {  G5 A; S# x& [+ y) y9 F
    24. %   epochs--epochs of the train
      8 F6 a1 x- K0 V9 o7 B: E# N
    25. %   goal--errors goal of the network# A& D! v& b8 z- a1 O
    26. %   lr--learning rate
      9 W% R: P5 H) A! R  L% J# h; ?
    27. %   shows--epochs between the displays
      ' Z  ]: E, M. V4 s
    28. %   time--Maximum time to train in seconds6 ?9 p1 |! B' G9 r3 E& w6 W' D
    29. net.trainParam.epochs=200000;  % 训练次数
      1 ?) ?' w, r' h  E
    30. nettrainParam.goal=0.0001;  % 误差期望值3 h6 Y1 h4 s# p, d- O; r
    31. % returns of the train:
      * Y9 J& X( X( J, n2 p
    32. %   net--New network
      / r$ L8 G% M+ E% ~2 @* |
    33. %    tr--Training record (epoch and perf).) r( |  v& `1 a4 a
    34. %     Y--Network outputs.
      ' \& P( {$ B1 {' \9 J8 M8 x1 [
    35. %     E--Network errors.
      ; z6 }4 f8 o3 T
    36. [net,tr,Y,E]=train(net,p,t);
        i% I3 `, H* @5 t7 T7 l5 ^9 u
    37. %%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%
      \" r% B+ K, J& L2 _
    38. % input the testing points here %$ F) S\" C- s; z  K/ K1 l0 L- P) @
    39. title('神经网络训练结果');. W0 }. P/ g! t7 G5 U( K: [
    40. xlabel('时间(天)');
      ; w( U) T) V- q
    41. ylabel('仿真输出结果');  ]; p' {, ^3 f4 f5 D
    42. legend('仿真模拟值','实际值','神经网络预测值');
      % l1 o- \+ l; P4 O' O
    43. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%, C) b\" ?8 z2 m\" s' h$ V
    44. x=1:5;
      ; ~3 p. V! I# y
    45. y=1:5;
      - Y8 W( y9 u. g$ z* N  u- `
    46. y21=sim(net,p);2 B$ F\" y- O. u+ N4 v1 r
    47. y2=reshape(y21,1,15);
      1 T) }1 J; y& p/ g% _& P+ H
    48. clf
      : W. Y) H7 Y6 N# B/ D; S6 T
    49. plot(r,y2,'b-^')
      1 d5 `4 y& i3 P% n. d6 l9 V+ t; w
    50. hold on( c- c2 z: c: Y. L% o
    51. plot(1:20,day,'r-*')
        h2 C# Q3 R\" c6 H8 t
    52. %%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%) Y1 G/ t, ~! ?6 Y
    53. y3=sim(net,h3);
      6 z4 l$ d/ `7 Y: g
    54. plot(21:21,y3,'-*')5 j; g% x! J) ^
    55. hold on
      / @% ]8 Q1 w  B) J2 }\" _
    56. title('神经网络训练结果');6 x( _5 @( r2 h/ ~
    57. xlabel('时间(天)');/ V- d- @7 F% w5 x) d3 Q
    58. ylabel('仿真输出结果');% G( s/ G! n0 ]7 m: I
    59. legend('仿真模拟值','实际值','神经网络预测值');, i\" x. ]# G0 i  i& i4 T
    60. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
      0 {& O  q, b% ^( J  C: P7 ?( }
    61. x=1:5;
      0 B1 c/ B& X  Y% h0 x; S' Y% x
    62. y=1:5;
      & \# f  V6 o9 I/ }: x$ z* S
    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-1 02:16 , Processed in 0.354741 second(s), 58 queries .

    回顶部