Octave 为什么在for循环中发生越界错误?
发生越界错误 这是八度音阶语言Octave 为什么在for循环中发生越界错误?,octave,indexoutofboundsexception,Octave,Indexoutofboundsexception,发生越界错误 这是八度音阶语言 for ii=1:1:10 m(ii)=ii*8 q=m(ii) if (ii>=2) q(ii).xdot=(q(ii).x-q(ii-1).x)/Ts; end end 但是错误说 q(2): out of bound 1 如何修复它?对于这种类型的分配,您不需要循环,而且您需要定义Ts。 要计算差分增量,可以使用diff x=(1:1:10)*8 x = 8 16 24 32
for ii=1:1:10
m(ii)=ii*8
q=m(ii)
if (ii>=2)
q(ii).xdot=(q(ii).x-q(ii-1).x)/Ts;
end
end
但是错误说
q(2): out of bound 1
如何修复它?对于这种类型的分配,您不需要循环,而且您需要定义
Ts
。
要计算差分增量,可以使用diff
x=(1:1:10)*8
x =
8 16 24 32 40 48 56 64 72 80
octave:5> Ts=2
Ts = 2
octave:6> xdot=diff(x)/Ts
xdot =
4 4 4 4 4 4 4 4 4
octave:7> size(x)
ans =
1 10
octave:8> size(xdot)
ans =
1 9
循环之前的
q
是什么?你可能需要初始化它,比如说q=m(ii)
,这意味着q
被分配了一个标量。然后你做q(ii)
,如果ii
大于1,这就不存在了,因为q
是一个标量。我想你可能想改成做q(ii)=m(ii)
。是的,当更改为q(ii)=m(ii)
时,它是有效的。