主要内容

数组索引

在MATLAB®,存在于阵列中访问基于其位置(索引)的数组元素三个主要的方法。这些方法是通过位置,线性索引和逻辑索引索引。

用元素位置索引

最常见的方式是明确指定元素的索引。例如,为了访问矩阵的单个元素,指定行数,随后通过将元件的列数。

a = [1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16]
A =4×4.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
e = a(3,2)
E = 10.

E.是在3,2位置的元件(第三行,第二列)A.

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

R = A(2,[1-3])
r =1×25 7

要访问一系列行或列中的元素,请使用冒号。例如,通过第四列访问到第三行和第二在第一元件A.

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

另一种方法来计算R.就是使用关键字结束通过最后一列指定的第二列。这种方法可以让你在不知道多少列究竟如何在指定的最后一列A.

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

如果您要访问所有的行或列中,通过自身使用冒号运算符。例如,返回的整个第三列A.

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

一般来说,可以使用索引,以在MATLAB不管其数据类型或尺寸的任何阵列的存取元件。例如,直接访问的列DateTime.阵列。

T = [日期时间(2018,1:5,1);日期时间(2019,1:5,1)]
t =2×日期时间01-JAN-2018 01-FEB-2018 01-MAR-2018 01-APR-2018 01-月 -  2018年1月1 2019 01-FEB-2019 01-MAR-2019 01-APR-2019 01-月-2019
march1 = T(:,3)
march1 =2×1日期时间2018 01-Mar-2018 01-Mar-2019

对于更高维阵列,展开的语法以匹配阵列尺寸。考虑一个随机3×3×3数值数组。在第二行,第三列中,并且该阵列的第一片材​​在访问的元素。

a = rand(3,3,3);e = a(2,3,1)
E = 0.5469

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

用单一索引索引

用于访问阵列的元件的另一种方法是仅使用一个单一的指数,无论大小或数组的维。这种方法被称为线性索引。尽管根据其定义的尺寸和形状MATLAB显示器阵列,它们实际上是存储在存储器中作为元件的单个列。一个好的方法来可视化这个概念是一个矩阵。尽管下面的阵列被显示为3×3矩阵,MATLAB将其存储为一个单一的柱制成的列的向上A.追随另一个。存储的矢量包含元素序列12.45.33.36.29.25.91.48.11.,并且可以使用单个冒号来显示。

A = [12 36 91;45 29 48;33 25 11]
A =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元件A.25.,你可以使用语法访问a(3,2)。您还可以使用语法访问此元素A(6),自从25.是存储的矢量序列的第六个元素。

e = a(3,2)
E = 25.
Elinear = A(6)
elinear = 25

虽然线性索引可以是不太直观视觉,它可以是强大的用于执行某些计算不依赖于阵列的大小或形状。例如,您可以轻松地总结所有的元素A.不必向第二个论点提供第二个论点sum功能。

s = sum(a(:))
S = 330

sub2indind2sub功能有助于原始数组索引和它们的线性版本之间的转换。例如,计算的3,2元件的线性指数A.

linearidx = sub2ind(尺寸(A),3,2)
linearidx = 6

从线性索引转换回其行和列表单。

[行,列] = ind2sub(尺寸(A),6)
行= 3.
山口= 2

用逻辑值索引

使用True和False逻辑指示器是索引到数组中的另一种有用的方法,特别是在使用条件语句时。例如,假设您想知道矩阵的元素是否存在A.小于另一矩阵的相应元素B.。在低于操作者返回一个逻辑数组,其元素是1当在一个元件A.比在相应的元件小B.

A = [1 2 6;4 3 6]
A =2×31 2 6 4 3 6
B = [0 3 7;3 7 5]
B =2×30 3 7 3 7 5
IND = A 
              
IND =2×3阵列的逻辑0 1 1 0 1 0

既然你知道遇到条件的元素的位置,你可以使用检查个别值Ind.作为索引数组。Matlab与价值1的位置相匹配Ind.到相应的元素A.B.,并列出列在列向量中的值。

Avals = A(IND)
Avals =.3×12 3 6
Bvals = B(IND)
BVALS =3×13 7 7.

MATLAB“是”功能也返回指示某一条件的输入满足的哪些元素的逻辑阵列。例如,检查一个的哪些元素向量所使用的缺失ISMISSING功能。

str = [“a”“b”失踪“d”“E”缺少];Ind = Ismissing(str)
IND =1x6逻辑阵列0 0 1 0 0 1

假设您想找到元素的值不是缺少。用来操作员与索引矢量Ind.这样做。

strvals = str(~den)
strvals =1x4字符串“”B“”D“”E“

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

相关主题