QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2558|回复: 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体力
    clear7 L! {0 j/ R3 }3 q! \
    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 M3 d& U, Z& k2 I! Xdayhistory=day(1:20);%取其中三十天作为历史数据样本3 ^1 [2 U6 u  t/ g, J) U8 U
    dayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的
    % p+ `( x; Y  L, r  o8 Z: Y* Jdayday=day(1:15);% 取其中的前25天: x$ l8 v9 s8 W9 s
    daypost=day(6:20);%取其中的随后25天
    5 ?' K) ?$ `5 e+ c* Ep=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本% R: _/ e, R7 P! Q5 d
    t=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量
    % {! H0 B( X+ l" G$ X+ ndaylast=day(16:20);
    + |1 [+ q! u  `) o& Ah3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本
    . N" p/ }0 g9 O+ d& L: y3 D, er=6:20;$ @! F7 @7 S0 g: P; K0 r4 b! k+ O9 i
    rr=reshape(r,5,3);1 d& c' D8 t# x) V
    %%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%
    % p) P" s0 V0 r" _% f# Ynet=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');7 A6 L6 n  }4 |% w$ ^3 U- N
    y1=sim(net,p);) y0 N, o% i5 \9 E- }7 {3 M
    % 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量: L4 V0 D* b' F
    % 两层的传递函数均为purelin, {: j  C4 `; N/ w+ g1 T$ C
    % 训练函数为trainlm
    2 E9 x9 X" Q6 J( g: X# `- P2 b. c3 C' Q% 所训练的网络大小为[5,5]/ `* q( A% V$ A6 V2 F6 ~/ T0 E7 Y
    % 仿真训练前的网络
    # u4 G" k. h; e5 O5 n+ ?* c1 F  B  V! u2 Q
    %%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%
    ' ~: K$ x. d0 ~* W% network parameters:) _. e; U$ Y! o5 `8 A5 \
    %   epochs--epochs of the train
    1 O& f  I; J. o0 s3 J%   goal--errors goal of the network( H! ~& y, W# S  H. v3 `
    %   lr--learning rate' s. y" z& ~0 E- q, k- _
    %   shows--epochs between the displays# c  n: O6 m: _0 K
    %   time--Maximum time to train in seconds: O( i4 D; M2 R0 \4 X, c9 T' t
    net.trainParam.epochs=200000;  % 训练次数+ v/ b/ g9 e$ Z" n( h5 _
    nettrainParam.goal=0.0001;  % 误差期望值/ X* t$ ~. L+ j9 [  C
    % returns of the train:* \# X2 W3 q8 W% q8 N3 [
    %   net--New network
    3 l# }  \6 }/ n1 S3 q& ]. r%    tr--Training record (epoch and perf).% J' H9 ~# M4 f/ {7 g* p
    %     Y--Network outputs.' o) o: `( _3 `
    %     E--Network errors." E$ x6 `: W$ D- n2 \/ {
    [net,tr,Y,E]=train(net,p,t); 6 \' }) T8 G1 B. l- x& k# S4 t
    %%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%2 J# `+ [4 H- a) T  M
    % input the testing points here %
    ) \2 _, Y$ Q- u5 e; Etitle('神经网络训练结果');
    5 e7 c  G9 y1 W  C6 G2 sxlabel('时间(天)');" x1 ^' Q- T, T( W
    ylabel('仿真输出结果');
    , f0 T4 i# r2 N% y0 glegend('仿真模拟值','实际值','神经网络预测值');8 F2 w5 `: u9 t+ w& L; o
    %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%. r, @( v$ D" L7 Y* f
    x=1:5;
      N1 S/ L. t8 N& By=1:5;. _  O+ i! O* S% s# t2 T6 g# [( c
    y21=sim(net,p);
    6 s, `( P4 t+ Py2=reshape(y21,1,15);- n- z) R1 W- `4 n' Y# e! x. w+ V
    clf% }- d, O1 R9 \, x9 @1 W. |
    plot(r,y2,'b-^')9 o9 Z5 l$ l, G6 H* }9 y8 N
    hold on! v( [/ _5 _6 u
    plot(1:20,day,'r-*')
    : Y7 G/ i- m* U3 x%%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%
    + j- z& [1 l0 Q; a# N: Qy3=sim(net,h3);
    3 ]9 G8 K  ?% _! {' {$ Dplot(21:25,y3,'-*'). X4 H4 D, p0 e# R% [
    hold on  q; u; A" l% V) |, o, R8 e
    title('神经网络训练结果');3 _" L9 I; g) S/ A1 S. y3 }
    xlabel('时间(天)');1 s1 @$ r! z+ s0 ?# S
    ylabel('仿真输出结果');. s# f7 t! }/ g
    legend('仿真模拟值','实际值','神经网络预测值');4 R2 z' }" |) k. i7 ?
    %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
    0 r4 Q6 S, ]& l7 L& Px=1:5;
    - |( B3 x+ {0 C" |y=1:5;
      J9 ~6 a0 F: @, @plot3(x,y,E(x,y))* Y  b& ^* C! H" B7 r: W

    : g+ E$ r+ M0 u, ~: s  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
      , R6 s% u% X* ]7 q& O
    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+ v' [\" y' i3 S
    3. dayhistory=day(1:20);%取其中三十天作为历史数据样本
        r. j/ F- M\" F8 V
    4. dayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的( ?0 r0 }  E& k8 u! G5 T5 e
    5. dayday=day(1:15);% 取其中的前25天: d: T# W% I! o\" n5 ]
    6. daypost=day(6:20);%取其中的随后25天
      : ~\" ^- z\" C: a0 L7 s
    7. p=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本
      & U0 m5 \$ h- R\" a9 g6 J9 ?
    8. t=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量* V2 q/ k2 z' h
    9. daylast=day(16:20);; K9 d& p& f+ S! Z% P. ~' U
    10. h3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本: d+ [7 r  g\" Q# {# K0 Z5 \
    11. r=6:20;; r/ x9 o. S( t$ f5 j& ^' Z\" r
    12. rr=reshape(r,5,3);% }0 h2 D3 }8 s, l: h1 ?/ I
    13. %%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%\" t4 h( ~, L5 |5 h9 |
    14. net=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');1 H/ s1 T9 B  N8 d. I
    15. y1=sim(net,p);- @* ]& n! g; i4 b8 |. V% g
    16. % 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量
      0 |6 E( j- [- ^
    17. % 两层的传递函数均为purelin& x( L7 ^* d' Q5 g& y
    18. % 训练函数为trainlm; S  _+ V3 J3 o* }0 W
    19. % 所训练的网络大小为[5,5]
      4 J  b% v* d- H
    20. % 仿真训练前的网络+ r/ \* E& q( p  `

    21. 9 X: y# x; \\" }; z* }  E( C+ U
    22. %%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%: J' e0 ~6 D  a# M, S
    23. % network parameters:
      $ L, N  h& t, [$ e
    24. %   epochs--epochs of the train& g7 X9 w0 [  b' G9 S( I$ n
    25. %   goal--errors goal of the network$ T% L+ I- b* B' L! [
    26. %   lr--learning rate+ b# _( V) z, S% x/ e
    27. %   shows--epochs between the displays8 v. i6 e6 |  [4 A2 o4 {
    28. %   time--Maximum time to train in seconds' }& B8 @$ k* }4 t' x+ p1 @3 R9 X
    29. net.trainParam.epochs=200000;  % 训练次数
      : c8 c$ Y8 Q: ~0 _1 O
    30. nettrainParam.goal=0.0001;  % 误差期望值
      ; w1 U0 v6 }& Q8 i& W
    31. % returns of the train:* h% G# r0 V# I+ E: [' i
    32. %   net--New network
      , X\" w; m4 `% @& a
    33. %    tr--Training record (epoch and perf).
      % e* n0 ?; r% U& |% e, E/ ~
    34. %     Y--Network outputs.
      ' z- G' a% r( e3 ^8 P% d
    35. %     E--Network errors.' {1 O. w/ B. ~0 ^/ @
    36. [net,tr,Y,E]=train(net,p,t);
      $ u- g7 `1 }3 ]  z/ s. ^
    37. %%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%1 Y0 ^\" _\" {4 I& n* j+ o
    38. % input the testing points here %# s1 Z9 }4 E9 W+ y4 u  U3 d
    39. title('神经网络训练结果');
      % r6 \* h) @. u. Y3 L
    40. xlabel('时间(天)');. v) x0 d7 I7 t+ U  M/ `
    41. ylabel('仿真输出结果');( r\" {# G4 J# o) l3 Z8 y
    42. legend('仿真模拟值','实际值','神经网络预测值');* ]& A& l1 B; ~7 K3 c
    43. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
      ' ^* Z! {/ d1 L# Z
    44. x=1:5;) `6 {* u& I+ c( P( ~0 U
    45. y=1:5;
      $ m5 S% o% B- g5 N! e6 M) Z
    46. y21=sim(net,p);5 Y. x& K, {' u% d4 y$ [
    47. y2=reshape(y21,1,15);
      * A( P' C1 U$ E& G1 T7 X6 D
    48. clf' w# t: Q3 Y( j) F
    49. plot(r,y2,'b-^'). P! P5 k' B4 k$ ^+ ~
    50. hold on
      $ c9 G* e1 f* S' l* P
    51. plot(1:20,day,'r-*')8 t8 B9 e7 {2 ~\" R0 |! @
    52. %%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%
      4 I\" O8 m2 ^! V1 m2 j6 \: B& b
    53. y3=sim(net,h3);
      , {# t& }% g; T- k7 y
    54. plot(21:21,y3,'-*')
      $ c5 U4 P: N! L  H4 D
    55. hold on
      / j- W9 e! N! e1 k9 s4 t% B* b, Y4 @3 s
    56. title('神经网络训练结果');
      1 v) L' v& _3 M- Z
    57. xlabel('时间(天)');
      ) R, g# T  j/ t2 K! I( y& t  O
    58. ylabel('仿真输出结果');
      5 u! Q) r. y1 S
    59. legend('仿真模拟值','实际值','神经网络预测值');# e% d6 P# d( T% M6 @+ ^
    60. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%0 S# L) R7 }( D% _. _8 {7 F$ p. N
    61. x=1:5;1 w\" h0 P! d- [/ M
    62. y=1:5;9 q6 N, [2 L+ ~, U  b$ v& |- \
    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-21 20:39 , Processed in 0.448317 second(s), 58 queries .

    回顶部