我正在学习Matlab(实际上,Octave)并且让我感到困惑的是:
octave:14> a = [2 3 4]
a =
2 3 4
octave:15> a(1)
ans = 2
octave:16> a(1,1)
ans = 2
octave:17> a(1,1,1)
ans = 2
octave:18> a(1,1,2)
error: A(I,J,...): index to dimension 3 out of bounds; value 2 out of bound 1
octave:18> a(2,1,1)
error: A(I,J,...): index to dimension 1 out of bounds; value 2 out of bound 1
我希望a(1, 1, 1)
是非法的,但这让我很困惑......矩阵允许多少个索引?
当我说a(1, 1, 1)
时是什么意思??
答案 0 :(得分:2)
在数组中,只要数组不为空,就始终定义第一行,列,页等。
所以,如果
a = 3;
a(1) %# works
a(1,1) %# works
a(1,1,1) %# works
a(1,1,1,1) %# works
因为a
的大小理论上是[1,1,1,1,1,1,....]
为方便起见,标量的大小为[1,1]
,即未提及长度为1的其他维度。