QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2623|回复: 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
    # Q6 V# b( f$ I  X$ V! o/ Rday=[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];! m; p9 y* \# Q( U' q5 K
    dayhistory=day(1:20);%取其中三十天作为历史数据样本
    * c: w4 F  _3 i8 |: W( Q* adayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的
    9 D$ d5 {6 d& o1 j5 n8 @# h; B9 q+ xdayday=day(1:15);% 取其中的前25天
    , b  R5 A4 z! p7 w' d( sdaypost=day(6:20);%取其中的随后25天
    + |+ _& Z& \/ Lp=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本
    4 o; O- p0 s6 ]$ [9 N% |8 l( ut=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量, K  t( Q+ m3 r% Y3 c  m
    daylast=day(16:20);
    ( G8 i. ?  K# M' b" q$ Bh3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本$ h! V+ @/ q  b
    r=6:20;
    7 D+ ]) J4 s1 i/ k+ }. brr=reshape(r,5,3);
    % `3 {. ]5 c3 G) l% J( M%%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%0 q% s: d! ^: B& f2 w3 `1 H
    net=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');2 Z& N. G! N9 A. j
    y1=sim(net,p);
    2 f: K; ]  g! t, p% r% 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量
    1 A2 Q: ]% h  ~; u4 b% 两层的传递函数均为purelin
    3 T8 T% G9 a6 K! r1 x- c% 训练函数为trainlm6 R( T4 F/ x6 d
    % 所训练的网络大小为[5,5]
    / x- D. ?, N2 e% 仿真训练前的网络0 d9 D- o- B( v1 t1 s) {
    0 X* Z' B) g5 p* w3 w: B% f) z
    %%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%
    4 Z; D! ^# T  g) q5 b* {% network parameters:
    ( u' Z! w4 `4 R2 \; v8 b%   epochs--epochs of the train
    2 V( x3 S# w! c%   goal--errors goal of the network
    % h9 ~3 n; e0 Z$ n' g$ W5 j+ g- e" r%   lr--learning rate' w; @+ A7 i# _+ o( {5 ?& I
    %   shows--epochs between the displays
    ! X1 G" T8 D, `) U  [3 z%   time--Maximum time to train in seconds( ?. D0 @; z9 ^' Y! w$ Q0 v
    net.trainParam.epochs=200000;  % 训练次数0 b* J! L5 O# j1 c: n7 d
    nettrainParam.goal=0.0001;  % 误差期望值
    - s0 S# P0 W4 v* g# p; g2 U% returns of the train:. b5 K& t4 J8 s
    %   net--New network. F7 O/ c8 m: j6 t. h9 w
    %    tr--Training record (epoch and perf).! a& `1 Q7 A2 u5 Z( d/ p
    %     Y--Network outputs.
    ' q0 h, R, }3 v- c/ ^1 T' a/ f%     E--Network errors.
    ) B% p$ M1 o/ y[net,tr,Y,E]=train(net,p,t); % K6 I$ Q; i1 E
    %%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%
    + P5 h7 P1 {- d& U5 i) G% input the testing points here %0 t& A" u8 `' J0 W
    title('神经网络训练结果');7 X+ b/ _1 a. U
    xlabel('时间(天)');
    + Z# C$ s% u1 n  C: {9 [ylabel('仿真输出结果');6 }9 r  c" ~  ^  R
    legend('仿真模拟值','实际值','神经网络预测值');
    % o7 h* K& a% L%%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%: ?6 a( ~5 f6 o3 h$ i
    x=1:5;
    8 y- ]$ b2 h% d3 w: V+ i" l# ^& i# Qy=1:5;/ T1 K) g4 M9 m
    y21=sim(net,p);3 w4 T! Z  r0 e* X- ]
    y2=reshape(y21,1,15);- l* u4 R. S) J3 M/ M7 @
    clf$ G! Y" O0 }$ K* I
    plot(r,y2,'b-^')+ j6 O+ P8 p- _* i  ]
    hold on/ y7 d; g( ^6 D
    plot(1:20,day,'r-*')" O  N3 G7 i8 b
    %%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%1 E* M, J$ @0 c9 R
    y3=sim(net,h3);
    * l7 g4 {8 n- K' j  u0 n$ c" {plot(21:25,y3,'-*'), x+ l* s; r4 I, [
    hold on
    ! J4 o2 A  |: s9 s9 ?' l$ t  Dtitle('神经网络训练结果');
      M3 ~! ^" W0 A+ [5 _% h" w' ^xlabel('时间(天)');% `! P' m( q6 U1 x
    ylabel('仿真输出结果');
    # A0 B, K7 q  b8 U; J: H2 llegend('仿真模拟值','实际值','神经网络预测值');2 O  ]2 U5 N4 d( N
    %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%2 C0 j& X! f$ ]3 b3 p8 x; ^
    x=1:5;& u1 |, @0 ]- Y" d. Y$ F( J
    y=1:5;; o+ [. X1 G* P4 S% @
    plot3(x,y,E(x,y))
    4 S1 Y% ~9 `* i, R* N' x8 ]. ^. h
    - }0 b% Q; P# }6 K: D

    最佳答案

    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' |) v3 A2 ?2 r% r5 h/ G& q7 f! [; J
    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];
      * c6 _0 g: Z+ Y. j$ h
    3. dayhistory=day(1:20);%取其中三十天作为历史数据样本! s  v+ H8 X\" v! z8 y- d
    4. dayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的: {2 Z3 X! C) U9 u$ d* P2 D/ u, N  {
    5. dayday=day(1:15);% 取其中的前25天
      ; ^% t) N! `/ o\" V. i& P
    6. daypost=day(6:20);%取其中的随后25天+ ~: ?- Y. M' Y4 S
    7. p=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本3 Y8 s% I7 _: x  A+ Y( d) d
    8. t=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量1 p/ h. W& E6 J- S+ D8 ]# K
    9. daylast=day(16:20);8 |9 x; s( a' [) {5 o
    10. h3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本0 H7 b6 ?9 n% _) K  s3 f
    11. r=6:20;5 L2 |  M( I9 w
    12. rr=reshape(r,5,3);
      5 J% Q/ _- F+ a) U9 Z
    13. %%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%
      / a) r9 F- g7 U+ D
    14. net=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');& e' x2 u$ M6 t/ i5 X' z- I, u
    15. y1=sim(net,p);# p; Q& u9 G- c
    16. % 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量  @: n* o/ s  L0 S0 s! g# z
    17. % 两层的传递函数均为purelin
      9 q' p\" V* S5 O( E0 e; [
    18. % 训练函数为trainlm
      \" W# Z' N# }6 p\" F
    19. % 所训练的网络大小为[5,5]6 }; u. D1 Q& ?& w# H
    20. % 仿真训练前的网络. V1 J- g* A  U. F( ?# G5 Q
    21. , o. V( k, H% M/ _* T) r: l
    22. %%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%
      ( f0 u% W9 W5 ~, [( k' {) A
    23. % network parameters:2 D5 t) L. {) X7 v7 k6 P3 g* e
    24. %   epochs--epochs of the train
      # C. j4 G2 _2 L8 L
    25. %   goal--errors goal of the network; J6 D1 P- `9 W: S3 l' d5 r
    26. %   lr--learning rate
      - c% N; l  h# I% Z
    27. %   shows--epochs between the displays
      2 x' R$ a1 C\" X& g) T
    28. %   time--Maximum time to train in seconds\" p. f( w$ d% _\" L5 N\" [
    29. net.trainParam.epochs=200000;  % 训练次数
        h( M( M) p* L- C* t9 G7 B. o4 Z8 H% h# ~
    30. nettrainParam.goal=0.0001;  % 误差期望值  h7 @/ J+ n) g  Q. @! Q3 H' A
    31. % returns of the train:8 R5 c. b8 ]8 N+ a0 d; J
    32. %   net--New network0 `5 Z; R# m6 t\" v
    33. %    tr--Training record (epoch and perf).
      * N3 i4 `3 c, w1 B- a
    34. %     Y--Network outputs.
      , t7 q\" D7 N( a: U
    35. %     E--Network errors.
        e3 H% [/ A# V
    36. [net,tr,Y,E]=train(net,p,t); . w1 m4 \2 Y7 I6 H' t% ]  n
    37. %%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%
      * z! ^' n2 x$ j/ X/ j. o  S
    38. % input the testing points here %
      ' x% [7 e! v) X\" h# F0 J% h7 D
    39. title('神经网络训练结果');
      ; ~( I; W) U3 F5 }! }
    40. xlabel('时间(天)');/ o/ w' c: Y9 _  ^7 I
    41. ylabel('仿真输出结果');4 U6 V. S* a  T! N; [) }9 u; J
    42. legend('仿真模拟值','实际值','神经网络预测值');# H$ Y: O* @1 c  V% G: I  c
    43. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%\" R9 N5 w/ h% ^
    44. x=1:5;
      ) r3 H' z6 p- w. F7 U
    45. y=1:5;
      ( k! o4 j4 O# S! I7 i' H
    46. y21=sim(net,p);
      ! ^$ v0 q, d/ `7 C3 A+ |' a
    47. y2=reshape(y21,1,15);
      8 q& I4 E& C/ ~3 ~
    48. clf$ Z3 i2 w8 O( t3 h; U& M
    49. plot(r,y2,'b-^')
      9 J/ D$ o0 C3 n+ u9 t' A
    50. hold on, c, X\" _7 F4 S- @( s+ F6 k
    51. plot(1:20,day,'r-*')$ I\" b7 d- z% c* T7 f- v  w
    52. %%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%\" [' u5 w: ?2 l  U* Y( q) _: R( |
    53. y3=sim(net,h3);
      % i) P3 z7 o. f) Z: y/ a5 _
    54. plot(21:21,y3,'-*')
      . V2 J( v- F8 o! w
    55. hold on5 d: W. f1 ]) W& u& |' z
    56. title('神经网络训练结果');4 P\" @  r\" e# x- Y1 A
    57. xlabel('时间(天)');
      2 `5 P6 Y\" c  O5 V* d+ g
    58. ylabel('仿真输出结果');
      1 z0 V& r( C\" Y9 c. ?4 u
    59. legend('仿真模拟值','实际值','神经网络预测值');) X- M- U: j' i/ R3 O# ~- a
    60. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
      5 L; e4 l' T) y9 b8 W* M
    61. x=1:5;
      ( i( T. f8 L  f1 g4 f
    62. y=1:5;! s, V  q6 u% M* ?6 K7 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-7-10 06:11 , Processed in 0.375444 second(s), 58 queries .

    回顶部