官网内容:数组索引

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
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐