我无法弄清楚为什么我会越界。这是错误:
试图访问t2(3638);由于numel(t2)= 3637,因此索引越界。 problem1testing出错(第25行) 往往微不足道(T2(索引))≤; 3600
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的启动有关,但这是应该的长度,我使用的代码与我的教练非常相似。
非常感谢任何帮助。
答案 0 :(得分:1)
您的条件是while (t2(index))<3600
,但索引显然应限制为t2
的长度。请改用while index<numel(t2)
。
除此之外,你的循环有固定的迭代次数。在这些情况下,for循环更好。
答案 1 :(得分:0)
我不是MATLAB专家,但是你打到3628的事实告诉我你的while循环设置不正确。你尝试过类似的东西吗?
while((t2(index))<3600)
我担心它可能正在检查t2(指数)以做出真/假的决定。或者你的意思是检查索引值而不是t2(索引)的值?
while (index<3600)