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)
时,它是有效的。