QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2667|回复: 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体力
    clear8 g$ n$ R# S1 }# f1 G1 i! N! d
    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];4 \+ e! q6 M$ b$ f) J$ W! A( c
    dayhistory=day(1:20);%取其中三十天作为历史数据样本
    6 b. B8 s, z3 r  Wdayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的
    * d2 A  m: r5 R+ rdayday=day(1:15);% 取其中的前25天- x$ m! I( W- i4 K
    daypost=day(6:20);%取其中的随后25天
    * m% G& E# J4 `0 M2 Op=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本6 ^# R" T3 K/ l  x: B! I
    t=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量
    0 K; ^* w* N. ?* D% I/ hdaylast=day(16:20);
    5 e% Y% y' b" m9 @( K0 @' R  rh3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本
    / _9 w/ g9 F. e) d' [r=6:20;
    : p; [% S9 [. H0 K1 G( Q$ T% Orr=reshape(r,5,3);
    - F7 ~7 z7 `7 V%%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%0 P/ G% s  j/ k3 q
    net=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');; |1 g- d3 M- d, b) x& O
    y1=sim(net,p);/ O# w. E# n: G* J: P
    % 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量: j7 }3 l* @$ @5 r7 i) I
    % 两层的传递函数均为purelin
    6 ^7 Q0 \( P; Y$ p% 训练函数为trainlm0 m' R( ~4 q) B4 \
    % 所训练的网络大小为[5,5]
    / l' l4 `' r1 l0 l" u# o% 仿真训练前的网络* I; C4 f- T" K3 O- M4 |7 P' b" f/ e

    & K" _3 ~* V2 P%%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%5 b' ~7 p- g; o+ }" j: f
    % network parameters:" _! q$ B5 R5 b5 a( B1 Y# D
    %   epochs--epochs of the train
    ; X! V+ _# _2 V8 v%   goal--errors goal of the network
    3 e0 }2 w5 E0 H5 J9 L" v% |" g%   lr--learning rate& x  @6 a6 |! P4 a4 b5 p
    %   shows--epochs between the displays3 [4 W& O# K7 Q) u$ ?
    %   time--Maximum time to train in seconds; C* I1 q$ K. Y* ]& d6 q0 R
    net.trainParam.epochs=200000;  % 训练次数
    5 k$ `5 Q0 P% G# }nettrainParam.goal=0.0001;  % 误差期望值6 f4 t6 n# t$ R, o
    % returns of the train:
    ! ]9 v' R7 H& ]8 j' A%   net--New network# }& Q4 q6 O# w$ M
    %    tr--Training record (epoch and perf).3 Q' \( @  X) D
    %     Y--Network outputs.$ G& g3 P$ w9 b$ [7 g3 z
    %     E--Network errors.& v% o; a1 r6 ?0 `, [$ ]0 H  F# Q, t
    [net,tr,Y,E]=train(net,p,t); - l4 `8 t8 [6 d9 N: n
    %%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%
    6 `, E& U9 [9 S6 m% input the testing points here %$ `6 m6 j7 x$ [+ E( t" e/ ]
    title('神经网络训练结果');
    # @4 \7 E4 n0 G" L! Pxlabel('时间(天)');" H: D0 C. m% l- `4 e5 l+ I0 M' w
    ylabel('仿真输出结果');
    # _8 ^& d" F9 ?8 B+ O& b! xlegend('仿真模拟值','实际值','神经网络预测值');
    $ o. q" I3 g1 s  G%%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%& p" @" v5 z* N1 z
    x=1:5;8 b% H" j) ]4 E/ b6 P" s! F2 Q. z- g
    y=1:5;
    " W0 g( j6 H& R& Ey21=sim(net,p);
    + K  f* D# T+ Z; K+ P+ j2 Oy2=reshape(y21,1,15);
    , K# }; S) m. K( {clf# `8 }8 T5 V+ ?. \- M  p' [
    plot(r,y2,'b-^')
    $ U9 \5 b' h+ u/ t  u- s4 h8 i4 D4 thold on
    0 ~- r, T# Z6 D# z' {+ rplot(1:20,day,'r-*')
    $ B+ K3 ?' M* d& @; W%%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%
    7 H( W' r7 v, Z) z1 my3=sim(net,h3);3 _3 f, ]! e! y' l- T# x5 D
    plot(21:25,y3,'-*')
    : b0 ]( g5 A9 J) ~# S1 q- d) D* Rhold on
    ! j0 I9 _% H* Jtitle('神经网络训练结果');! G+ M! o$ V# P( ~, f( t
    xlabel('时间(天)');* r) H2 w/ F5 G, {, o
    ylabel('仿真输出结果');7 s% B8 i6 e2 k" B6 I' U5 T
    legend('仿真模拟值','实际值','神经网络预测值');! L1 [( h) P- W) K
    %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
    2 A& G" B( [7 B: H) F$ Jx=1:5;( u/ m$ _# _; I/ ^
    y=1:5;6 |3 j) W$ U9 Y, }4 p; n# O* t) i
    plot3(x,y,E(x,y))
    " V4 S, U6 ^9 f, i3 s% b
    6 C+ ]7 T; y7 E  P# Y8 v$ C' K! S. F9 M

    最佳答案

    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
      0 {$ M# d7 S2 Y, n# t, B
    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];
      1 s6 `. r- e( Z\" P& p
    3. dayhistory=day(1:20);%取其中三十天作为历史数据样本9 v# r: O  h/ F. k7 V4 k
    4. dayhismod=reshape(dayhistory,5,4);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的  K# ]8 c2 n* P1 Y0 Y* x
    5. dayday=day(1:15);% 取其中的前25天: \( O  P) X- Y3 Y5 c
    6. daypost=day(6:20);%取其中的随后25天
      + y- {) ^0 j4 L7 E2 e
    7. p=reshape(dayday,3,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本
      8 d: u/ E8 w7 _
    8. t=reshape(daypost,3,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量\" x: I: T2 n5 r* w9 t/ w8 }
    9. daylast=day(16:20);
      ( L+ }) [9 i% g, \: y
    10. h3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本# ]) O6 d+ U6 P) k$ I! E
    11. r=6:20;; Z2 c/ p/ c6 F, O' E  v' ^3 P' V4 ~
    12. rr=reshape(r,5,3);
      # b5 r! @( u; d9 D
    13. %%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%! w- {/ ?3 i/ Y( G% k, d  h\" L
    14. net=newff(minmax(p),[5,3],{'purelin' 'purelin'},'trainlm');* J6 d* o7 f! |: k* _7 @$ t4 a0 Y4 J# w
    15. y1=sim(net,p);
      & m' z  q. `- R5 L\" x$ c3 R7 x
    16. % 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量1 H5 ]7 |# ^* W# i6 i
    17. % 两层的传递函数均为purelin- v+ E3 L5 i6 ]
    18. % 训练函数为trainlm
      2 R6 x3 N9 D4 E, D9 s7 c# I& [
    19. % 所训练的网络大小为[5,5]5 Z% |% I- X0 A; J: M1 V  u0 r, G
    20. % 仿真训练前的网络, O) K0 Q4 z\" Q$ h% g0 R

    21. % |! _: z( a1 b7 ~
    22. %%%%%%%%%%%  进行网络训练  %%%%%%%%%%%%%%2 O) @1 L4 F3 M6 m) X
    23. % network parameters:
      ! ?. i6 f, {% G% a% v* Y
    24. %   epochs--epochs of the train6 x! w& Z6 i1 V+ c
    25. %   goal--errors goal of the network
      / Y1 A) Z4 t- v9 N/ t6 V, {0 Z/ i' f
    26. %   lr--learning rate
      $ u9 S; x5 C, h; X0 O6 c# c6 l
    27. %   shows--epochs between the displays
      7 ], Z4 i1 G2 I. p
    28. %   time--Maximum time to train in seconds
      7 n8 A\" [' |) K& x1 O; P$ O' [
    29. net.trainParam.epochs=200000;  % 训练次数\" v& w, e- o* O8 f
    30. nettrainParam.goal=0.0001;  % 误差期望值
      6 U. r- |/ E( ]- n: `
    31. % returns of the train:7 x$ @2 R# F. f2 V1 v4 N. n
    32. %   net--New network; a: E1 y- G- q\" u+ }, D6 T\" |
    33. %    tr--Training record (epoch and perf).- d. w* K; ]) j6 H+ c5 b
    34. %     Y--Network outputs.* Z# m9 K+ M% a
    35. %     E--Network errors.
      1 d/ G# O0 _5 [& u2 a9 x1 R0 {: X* M
    36. [net,tr,Y,E]=train(net,p,t);   j/ `8 J' M  n
    37. %%%%%%%%%%%  网络测试 %%%%%%%%%%%%%%%%* ^# ~. y0 o7 V6 I
    38. % input the testing points here %' x% S$ M0 Y, K: _* s
    39. title('神经网络训练结果');
      + d7 M' p4 }7 e- |! J: l* Y0 m
    40. xlabel('时间(天)');
      7 p* N* A4 X- u0 a1 `3 c5 S7 @
    41. ylabel('仿真输出结果');\" P9 Z# \  ?- W8 Z, J0 b/ Q
    42. legend('仿真模拟值','实际值','神经网络预测值');
      0 `* ~: c  h! Y) l
    43. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%\" y9 Z8 g) Z4 Q5 ?5 P
    44. x=1:5;& }\" L9 ~0 f3 C: C
    45. y=1:5;
      5 v7 d2 m  \5 x5 j- M  Z4 x
    46. y21=sim(net,p);8 @3 E9 r* g0 o& i
    47. y2=reshape(y21,1,15);5 z7 ~% |1 v+ h! x5 x4 {\" X+ _+ k
    48. clf
      \" C' |% A\" N+ _( ?- P' C
    49. plot(r,y2,'b-^')' h; \3 u6 d0 ?/ V' a% }9 ]& E5 o: `
    50. hold on
      ; @- E8 h+ z1 Q+ J) Q
    51. plot(1:20,day,'r-*'), }& n! P0 c0 X\" W' ~
    52. %%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%7 w! t3 S0 b8 r  d
    53. y3=sim(net,h3);
      ; Y6 X\" O! g7 M4 [! |
    54. plot(21:21,y3,'-*')
      / K5 P$ }+ g1 X1 n% r
    55. hold on
      + ~# p: c6 \5 O% o+ H5 J
    56. title('神经网络训练结果');8 o# v# Q5 K' x% U
    57. xlabel('时间(天)');% b, W, {9 j/ Y6 W  _' s
    58. ylabel('仿真输出结果');
      $ {; G: h( D( H+ S
    59. legend('仿真模拟值','实际值','神经网络预测值');
      2 z( r+ Z& G* C0 P1 m
    60. %%%%%%%%%%%%%%%%%%  绘制误差曲面 %%%%%%%%%%%%%
      + s. h7 K/ {* Z* [
    61. x=1:5;
      ; _' W+ D5 z2 K
    62. y=1:5;. T9 r: m; a  Z\" [9 H1 A
    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 02:04 , Processed in 0.494519 second(s), 58 queries .

    回顶部