官网内容:数组索引
1 位置索引
1.1 (行号,列号)索引
要访问矩阵中的某个元素,需依序指定该元素的行号和列号。
>> A
A =
1 2 3
4 5 6
>> A(1,2)
ans =
2
1.2 索引向量
>> A([1 2],1)
ans =
1
4
1.3 使用:生成索引向量
:
大大的妙,大大的方便!
>> A=[1 2 3 4 5 6 7 8 9]
A =
1 2 3 4 5 6 7 8 9
>> A(1:5)
ans =
1 2 3 4 5
>> A(1:end)
ans =
1 2 3 4 5 6 7 8 9
>> A(1:2:end)
ans =
1 3 5 7 9
>> A(1:3:end)
ans =
1 4 7
2 线性索引
虽然 MATLAB 根据定义的大小和形状显示数组,但实际上数组在内存中都存储为单列元素。我们用:
可以看到该单列元素
>> A=[1 2 3;4 5 6]
A =
1 2 3
4 5 6
>> A(:)
ans =
1
4
2
5
3
6
因此访问矩阵可以只用单个索引,而不用指定行号、列号两个值。这种索引称为线性索引
>> A(5)
ans =
3
sub2ind 和 ind2sub 函数可用于在数组的原始索引和线性索引之间进行转换。
例如:计算大小为2*3的A的第一行第三列元素的线性索引ind = sub2ind(sz,row,col)
>> A
A =
1 2 3
4 5 6
>> ind = sub2ind([2 3],1,3)
ind =
5
反过来[row,col] = ind2sub(sz,ind)
>> [row,col]=ind2sub([2 3],ind)
row =
1
col =
3
线性索引用途:要找矩阵C中的指定几个元素,知道元素的行数和列数,就可以用线性索引。
要求矩阵第x行y列的线性索引公式为:idx=(y-1)*row+x
以下示例要求行数为A,列数为B(A与B一一对应)的矩阵C中元素:
>> A
A =
1 2
>> B
B =
3 4
>> C=magic(4)
C =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> idx=(B-1)*4+A
idx =
9 14
>> C(idx)
ans =
3 8
3 逻辑索引
逻辑索引大大的妙,大大的方便!
可以用 >
、<
、==
和 ~=
>> A=A(:)
A =
1
4
2
5
3
6
>> A(A<5)
ans =
1
4
2
3