【问题标题】:Matlab: Simple Index Out of BoundsMatlab:简单索引越界
【发布时间】:2014-03-19 19:48:33
【问题描述】:

我不知道为什么我会越界。这是错误:

尝试访问 t2(3638);索引超出范围,因为 numel(t2)=3637。 问题 1 测试中的错误(第 25 行) hile(t2(index))

   dt2=.99;
     t2=(0:dt2:3600);    
   index = 1;
while(t2(index))<3600
A2(index+1)=A2(index)-dt2*(La*A2(index));
B2(index+1)=B2(index)+dt2*((La*A2(index+1)*ab)-(Lb*B2(index)));
C2(index+1)=C2(index)+dt2*((Lb*B2(index+1)*bc)-(Lc*C2(index)));
D2(index+1)=D2(index)+dt2*(Lc*C2(index));
E2(index+1)=E2(index)+dt2*((La*A2(index+1)*ae)+(Lb*B2(index+1)*be))-(Le*E2(index));
F2(index+1)=F2(index)+dt2*(Le*E2(index+1));
index = index +1;
end

我已经搜索并发现它与我对 t2 的初始化有关,但这是应该的长度,我使用的代码与我的导师非常相似。

任何帮助将不胜感激。

【问题讨论】:

    标签: arrays matlab indexing


    【解决方案1】:

    您的 while 条件是 while (t2(index))&lt;3600,但索引显然应该限制为 t2 的长度。请改用while index&lt;numel(t2)

    除此之外,您的循环还有固定的迭代次数。在这些情况下,for 循环会更好。

    【讨论】:

      【解决方案2】:

      我不是 MATLAB 专家,但您达到 3628 的事实表明您的 while 循环设置不正确。您是否尝试过类似的方法:

      while((t2(index))<3600)
      

      恐怕它可能正在检查 t2(index) 以做出真/假判断。或者您的意思是检查索引值而不是 t2(index) 的值?

      while (index<3600)
      

      【讨论】:

      • 那行不通。谢谢你。是的,我不知道为什么它会达到 3628,我尝试检查输出 =/
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-13
      • 1970-01-01
      • 2016-03-09
      • 2014-06-06
      • 2013-07-27
      • 2015-03-22
      相关资源
      最近更新 更多