我们习惯于在Matlab中使用不同形式的索引:
乍一看,似乎这些形式是独占的:索引是标准的,逻辑的或线性的.然而,有时似乎在这些形式中的几种之间存在混合.例如,
>> A = magic(3)
A =
8 1 6
3 5 7
4 9 2
>> A(A>5)
ans =
8
9
6
7
Run Code Online (Sandbox Code Playgroud)
这是合乎逻辑的索引,对吧?但它也具有线性索引的一些功能,因为返回了列向量.实际上,逻辑索引A>5与线性索引具有相同的效果find(A>5).
作为第二个例子,考虑一下
>> A = magic(3)
A =
8 1 6
3 5 7
4 9 2
>> A(1:2, [true false true])
ans =
8 6
3 7
Run Code Online (Sandbox Code Playgroud)
在此表达式中,标准(整数值)索引用于第一个坐标,逻辑索引用于第二个坐标.
这些例子(以及在实践中出现的更复杂的例子)提出了以下问题: