主要内容

数组索引

在MATLAB®中,根据数组元素在数组中的位置(索引),有三种主要方法来访问数组元素。这些方法是按位置索引、线性索引和逻辑索引。

元素位置索引

最常见的方法是显式地指定元素的索引。例如,要访问矩阵中的单个元素,请指定元素的行号和列号。

A = [1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16]
一个=4×412 3 4 5 6 7 8 9 10 11 12 13 14 15 16
e = (2)
e = 10

e元素是否在的3,2位(第三行,第二列)一个

您还可以通过在向量中指定元素的索引来一次引用多个元素。例如,访问的第二行第一个和第三个元素一个

r = A(2,[13])
r =1×25 7

要访问行或列范围内的元素,请使用结肠。例如,访问的第一行到第三行和第二列到第四列中的元素一个

2:4 r = (1:3)
r =3×32 3 4 6 7 8 10 11 12

另一种计算方法r是使用关键字吗结束通过最后一列指定第二列。这种方法允许您指定最后一列,而不知道具体有多少列一个

r =(1:3, 2:结束)
r =3×32 3 4 6 7 8 10 11 12

如果您想访问所有的行或列,请单独使用冒号操作符。例如,返回的整个第三列一个

r = (: 3)
r =4×13 7 11 15

通常,您可以使用索引来访问MATLAB中任何数组的元素,而不管其数据类型或维数如何。例如,直接访问a的一列datetime数组中。

t = [datetime(2018年,1:5,1);datetime(2019年,1:5,1))
t =2 x5 datetime2018年1月-2018年1月-2018年1月-2018年1月-2018年1月-2018年1月-2018年1月-2019年1月-2019年1月-2019年1月-2019年1月-2019年1月-2019年1月-2019年1月-2019年1月-2019年1月-2019年1月-2019年
3 = t (: 3)
3 =2 x1 datetime01 - 3月- 2018年1 - 3月- 2019

对于高维数组,扩展语法以匹配数组维数。考虑一个随机的3×3×3的数字数组。访问数组第二行、第三列和第一个工作表中的元素。

一个=兰德(3,3,3);e =(2、3、1)
e = 0.5469

有关使用多维数组的更多信息,请参见多维数组

使用单个索引进行索引

访问数组元素的另一种方法是只使用单个索引,而不管数组的大小或维数。这种方法被称为线性索引。虽然MATLAB根据数组定义的大小和形状显示数组,但它们实际上是作为元素的一列存储在内存中。把这个概念形象化的一个好方法是用矩阵。下面的数组显示为一个3×3的矩阵,而MATLAB将其存储为由的列组成的单个列一个一个接一个的附加。存储的向量包含元素序列12,45,33,36,29,25,91,48,11,并且可以使用单个冒号显示。

A = [12 36] 91;45 29 48;33 25 11]
一个=3×312 36 91 45 29 48 33 25 11
Alinear = A (:)
Alinear =9×112 45 33 36 29 25 91 48 11

例如,的3,2元素一个25,您可以使用语法访问它(2)。您还可以使用语法访问该元素(6),因为25是存储的向量序列的第6个元素。

e = (2)
e = 25
elinear = (6)
elinear = 25

虽然线性索引在视觉上可能不那么直观,但在执行不依赖于数组大小或形状的某些计算时,它可能非常强大。例如,您可以轻松地对的所有元素求和一个,而不必提供第二个参数总和函数。

s =总和((:))
s = 330

sub2indind2sub函数帮助转换原始数组索引和它们的线性版本。例如,计算的3,2元素的线性索引一个

linearidx = sub2ind(大小(A), 3、2)
linearidx = 6

将线性索引转换回其行和列形式。

(行,坳)= ind2sub(大小(A), 6)
行= 3
坳= 2

使用逻辑值进行索引

使用true和false逻辑指示符是另一种对数组进行索引的有用方法,特别是在使用条件语句时。例如,假设你想知道一个矩阵的元素一个小于另一个矩阵的对应元素B。小于运算符返回一个逻辑数组,其元素为1当一个元素一个小于中对应的元素B

A = [1 2 6;4 3 6]
一个=2×31 2 6 4 3 6
B = [0 3 7;3 7 5]
B =2×30 3 7 3 7 5
印第安纳州= < B
印第安纳州=2 x3逻辑阵列0 1 1 0 1 0

现在您已经知道了满足条件的元素的位置,您可以使用检查单个值印第安纳州作为索引数组。MATLAB匹配值1在的位置印第安纳州的对应元素一个B,并在列向量中列出它们的值。

保兑=(印第安纳州)
保兑=3×12 3 6
Bvals = B(印第安纳州)
Bvals =3×13 7 7

MATLAB“is”函数还返回逻辑数组,指示输入的哪些元素满足一定条件。例如,检查a的哪些元素字符串向量在使用时丢失ismissing函数。

str = [“一个”“B”失踪“D”“E”失踪);印第安纳州= ismissing (str)
印第安纳州=1 x6逻辑阵列0 0 1 0 0 1

假设你想要找到元素的值失踪。使用~操作符与索引向量印第安纳州来做到这一点。

strvals = str(~印第安纳州)
strvals =1 x4字符串"A" "B" "D" "E"

有关使用逻辑索引的更多示例,请参见查找满足条件的数组元素

相关的话题