QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2668|回复: 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$ N) h; @# m; x3 T
    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];% y) d0 \, k6 B, S2 i
    dayhistory=day(1:20);%取其中三十天作为历史数据样本
    2 f, n8 @+ v6 {dayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的
      w# d; f6 ~5 Qdayday=day(1:15);% 取其中的前25天- V% f6 N) z9 h5 @# a$ ]
    daypost=day(6:20);%取其中的随后25天! f, n& c$ w! F( A" c; u
    p=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本3 B' S$ z: E! ]
    t=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量
    * C; L2 x& l$ h" {/ X9 Ddaylast=day(16:20);, X  |3 h8 P& k
    h3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本- i- n$ l0 \* D" k& X4 R
    r=6:20;
    & Y. d3 J) ^! V9 t/ N+ brr=reshape(r,5,3);+ S. |8 l2 ]' U2 `$ ?5 h
    %%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%
    0 R4 ~" s6 v  a8 {5 G* Xnet=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');
    % s- n' \5 T. A8 N2 O; V" py1=sim(net,p);+ N- j' f0 r/ F! j, w; J
    % 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量* q7 q9 G9 s- j4 v
    % 两层的传递函数均为purelin& D7 b7 M1 @2 n6 q* p! C
    % 训练函数为trainlm* J, k" r- O: j; E& t0 I1 P
    % 所训练的网络大小为[5,5]0 ?8 C7 @. g/ Y6 o
    % 仿真训练前的网络/ e* H/ z! ~, }

    5 M! d! |8 P8 R%%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%
    7 Y& |, ^9 u* ?$ H- n+ W% network parameters:
    ' l" J4 S5 ^+ a4 v1 O; P: a%   epochs--epochs of the train
      X% P( R, S* W7 N6 `! ]. l%   goal--errors goal of the network
    # F3 K2 U3 X5 t( L8 W# u%   lr--learning rate! M3 S, m+ S' ~* {8 Z# W: m' {( f4 K
    %   shows--epochs between the displays
    ' R* R8 D* j; B7 }# A%   time--Maximum time to train in seconds: C0 I! E; V9 b
    net.trainParam.epochs=200000;  % 训练次数
    , v+ f* M, u( b7 N( z4 MnettrainParam.goal=0.0001;  % 误差期望值
    8 h' O4 y3 B8 j8 m# f% returns of the train:3 S3 H. d6 g/ \1 _
    %   net--New network% C6 m; o5 g+ z* k
    %    tr--Training record (epoch and perf).' S9 s8 e, B( z2 y7 i- e  `
    %     Y--Network outputs.
    , J9 h6 z; ?! N* m8 n" R%     E--Network errors.3 i/ o2 W6 h+ Y0 D& K( b
    [net,tr,Y,E]=train(net,p,t);
    4 w  |+ j% z/ J% r- H3 |* |9 A" H%%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%# u& @/ a  ?% {% z. R
    % input the testing points here %: x3 @% O! f% _1 h) K" x
    title('神经网络训练结果');
    7 W9 w9 n( n$ C$ `3 z' t9 axlabel('时间(天)');/ a  Z% D+ f/ _7 k8 n7 p0 ~9 c
    ylabel('仿真输出结果');( r$ A! ~9 J6 W1 j$ C) V( n, [
    legend('仿真模拟值','实际值','神经网络预测值');; e4 |% S1 b) k" V; j
    %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
    1 M! v& ~! t( Q" z3 _. bx=1:5;- _5 u' e3 y8 `
    y=1:5;
      @5 A  [7 l& d* G% ]y21=sim(net,p);: ]% N, b/ v/ y1 G/ B1 t% m
    y2=reshape(y21,1,15);
    ' j' x- {/ r6 q8 p1 R; sclf
    & |8 Q7 W1 w# F0 q8 dplot(r,y2,'b-^')8 E" ]* u# Y6 ^3 Y4 H
    hold on# d0 C. V. C9 }$ j4 s" g
    plot(1:20,day,'r-*')
    . X) {3 P9 F# i7 Y%%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%! u' y$ p5 W/ _
    y3=sim(net,h3);' V2 L& Z+ Q  F, W
    plot(21:25,y3,'-*')7 i: B, `# Z7 Y& b; l0 `+ g
    hold on
    6 [5 Z+ W9 z7 p) ?- I3 F5 ]title('神经网络训练结果');
    3 K: C8 [- J* h5 Fxlabel('时间(天)');# F: c+ B, Q" J  z6 }
    ylabel('仿真输出结果');# i4 o; w- P* E" }- a( @
    legend('仿真模拟值','实际值','神经网络预测值');+ ^5 ^; U- ]) c4 X) b
    %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
    & r' @/ P; b. h" d  s! R6 t1 h0 U1 q! ux=1:5;' c# t7 @4 b# L& b
    y=1:5;- W6 E' O3 t8 c' I$ v
    plot3(x,y,E(x,y))# d+ o& i) x! J& k) M
    3 O8 m: G# X0 j  B* F

    最佳答案

    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! [) n/ |6 c) ]; B5 t
    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];
        K/ U! S4 |& U3 q2 Y
    3. dayhistory=day(1:20);%取其中三十天作为历史数据样本
      : m; {' f& x  Y$ E' n
    4. dayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的9 G+ r, h6 j% [# Q6 `2 E
    5. dayday=day(1:15);% 取其中的前25天
      1 Y' b2 F% p6 K4 y
    6. daypost=day(6:20);%取其中的随后25天
      1 h- J' J. B: v* h% s  k2 l
    7. p=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本
      - ]( W3 ]5 I& U+ T
    8. t=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量
      5 V9 M, a5 x4 i2 }0 h- K0 D
    9. daylast=day(16:20);
      3 v. l: b$ o. ]6 K5 T
    10. h3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本) j; u6 U6 y# t' G& E
    11. r=6:20;
      ( P9 W* r& z' j
    12. rr=reshape(r,5,3);( c: X' M) A( U
    13. %%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%
      $ G' \5 |' g& C3 g
    14. net=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');
      9 N- N$ q6 E$ x( r
    15. y1=sim(net,p);1 d/ p7 U' o: i1 d' N4 d3 g2 M
    16. % 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量
      4 O! J\" [$ e1 l\" Q1 J$ G
    17. % 两层的传递函数均为purelin; L3 c$ b+ |( |+ j5 ~\" S
    18. % 训练函数为trainlm
      7 X/ O+ ?  A0 q3 g. E% o
    19. % 所训练的网络大小为[5,5]
      & B4 @, f  ]9 ?. A
    20. % 仿真训练前的网络+ |9 K: Q5 h  \7 s

    21. ; R! v8 X& z; E! H+ T0 _
    22. %%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%' i2 X8 H7 z3 C5 x$ a: a0 Z
    23. % network parameters:
      ! A0 s3 s\" `4 N) D/ R; Y
    24. %   epochs--epochs of the train' _( R: A2 N7 c5 @
    25. %   goal--errors goal of the network
      ( b7 r6 g- }5 l' U) m* q! V
    26. %   lr--learning rate! ^0 ^, B; I$ w2 q  H& U  k
    27. %   shows--epochs between the displays- C( t  B4 \, ?+ C/ v% i
    28. %   time--Maximum time to train in seconds
      9 }1 o. i\" c' `, t! U5 K
    29. net.trainParam.epochs=200000;  % 训练次数
      2 p/ r5 H/ g) q' r1 v\" J
    30. nettrainParam.goal=0.0001;  % 误差期望值
      / A  r' r$ z+ Q0 A4 F& E0 k
    31. % returns of the train:& i; |( M, G3 W
    32. %   net--New network
      ' l( v' n1 O+ r4 O7 B$ s+ r  G
    33. %    tr--Training record (epoch and perf).
      2 k5 ~; x\" M  ^& Z6 Q\" T. m\" Q
    34. %     Y--Network outputs.9 l1 w: \9 I# w7 f/ P
    35. %     E--Network errors.# Y3 m; K' Y7 w, j/ p6 O
    36. [net,tr,Y,E]=train(net,p,t);
      ) \+ L, z\" G3 [- t, z+ Z+ R
    37. %%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%
      ( P4 y& C- ]1 A6 G, _8 u- A
    38. % input the testing points here %6 C( F3 z3 V( k\" ?9 k, p- a3 G
    39. title('神经网络训练结果');: _* T: y1 V8 T# [' v- M
    40. xlabel('时间(天)');9 y7 M8 @8 ?0 ]- A! k
    41. ylabel('仿真输出结果');% c9 b: Y  C' u8 h$ Y% U( k/ d
    42. legend('仿真模拟值','实际值','神经网络预测值');+ v5 K# N8 I; r7 Q# i# W
    43. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%# G6 Q9 w( }, I% Z+ d# j7 p- U/ K
    44. x=1:5;: A6 s) A# _6 @- @
    45. y=1:5;
      7 C/ y, t1 P  M4 g( W' J
    46. y21=sim(net,p);
      3 _1 H, A2 H4 o: l/ Q  |3 L1 [# J3 k8 g
    47. y2=reshape(y21,1,15);% V! ]6 J+ w+ k
    48. clf5 d( A! {5 V3 Z+ h
    49. plot(r,y2,'b-^')
      6 a2 c9 T6 V$ r) y* p( `- H
    50. hold on5 ^: s* C( n5 O, m- q; {  H
    51. plot(1:20,day,'r-*')
      7 {) W3 h( @$ Q& g5 F% y
    52. %%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%
      & m, L5 E+ ~$ \2 s5 @' B7 K% ~
    53. y3=sim(net,h3);
      7 P8 N# S) j1 @\" U
    54. plot(21:21,y3,'-*')
      7 g! `& P* S, v& U
    55. hold on
      - W9 K) I5 ]0 N6 ~
    56. title('神经网络训练结果');3 o% ^9 @8 I7 R' q
    57. xlabel('时间(天)');
      ; ]$ m. g) `: \8 P6 }) {
    58. ylabel('仿真输出结果');* d\" r2 |% Y* m. d\" x9 t$ r. W
    59. legend('仿真模拟值','实际值','神经网络预测值');\" J8 ^\" l3 H+ b( s
    60. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
      + N2 p& m0 h9 k# {  s4 \
    61. x=1:5;7 s4 E6 s( a# D1 D
    62. y=1:5;& {7 G5 \& y, G5 j$ l
    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 03:18 , Processed in 0.474883 second(s), 57 queries .

    回顶部