当我初始化 v(0)=0 和 t(0)=0 时我卡住了。问题是不先创建一个空数组吗?非常感谢您的帮助。
T= 0.001;
C= 0.004;
n=0;
k=0;
v(0)=k;
t(0)=k;
while v(n)<60
v(n+1)= T.*(A(n)-C.*(v(n)).^2)+v(n);
t(n+1)= (n-1)*T;
n=n+1;
end
n60=n
t60=(n60-1)*T
Matlab 中的索引从 1 开始。
因此v(0)=k
,并且t(0)=k
是不合法的。你宁愿这样做:
v(desired arraysize)=k;
t(desired arraysize)=k;
预先分配。和
v(1)=k;
t(1)=k;
初始化第一个值。
所以v(n)<60
也会给你一个错误。
你可以写:
v(1) = 0;
while v(n) < 60+1
v(n+1)= T.*(A(n)-C.*(v(n)).^2)+v(n);
t(n+1)= (n-2)*T; %not completetely sure with this line, you should check it again.
n=n+1;
end
来自评论:
只需设置 t(1)=0 和 v(1)=0,您只需从其他语言重新考虑,索引从 1 开始。这基本上意味着您不能使用索引来代替您通常需要的“时间”一个额外的时间向量,它将您的值与特定时间相关联