主要内容

数组索引

在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位置(第三行,第二列)中的元素一种

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

r = a(2,[1 3])
r =1×25 7.

要访问一系列行或列中的元素,请使用冒号。例如,访问第一个到第三行中的元素和第二列的元素一种

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

一种替代方法来计算R.是使用关键字结尾通过上列指定第二列。此方法允许您在不知道有多少列的情况下指定最后一列一种

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

如果要访问所有行或列,请自行使用冒号运算符。例如,返回整个第三列一种

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

通常,无论其数据类型或尺寸如何,您都可以使用索引来访问Matlab中的任何数组的元素。例如,直接访问a的一列约会时间大批。

t = [DATETIME(2018,1:5,1);DateTime(2019,1:5,1)]
t =2x5 DateTime.01-jan-2018 01-Feb-2018 01-Mar-2018 01-APR-2018 01-May-2018 01-Jan-2019 01-Feb-2019 01-Feb-2019 01-2019 01-2019 2019 01-APR-2019 01-APR-2019 01-APR-2019 01-APR-2019 01-APR-2019 01-APR-2019 01-APR-2019 01-APR-2019 01-APR-2019 01-2019 01-APR-2019 01-APR-2019 01-APR-2019 01-APR-2019 01-2019 01-2019 01-APR-2019 01-2019 01-2019 01-2019 01-APR-2019 01-2019 01-APR-2019 01-2019 2019
3月1日(:3)
3月1日2x1 DateTime.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将其存储为由列组成的单个列一种追随另一个。存储的矢量包含元素序列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 25 25 91 48 11

例如,3,2元素一种25.,您可以使用语法访问它a(3,2)。您还可以使用语法访问此元素A(6), 自从25.是存储的矢量序列的第六个元素。

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

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

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

次级Ind2sub.函数有助于在原始数组索引和其线性版本之间转换。例如,计算3,2元素的线性索引一种

linearidx = sub2ind(尺寸(a),3,2)
linearidx = 6.

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

[行,col] = Ind2sub(大小(a),6)
行= 3.
col = 2

用逻辑值索引

使用True和False逻辑指示器是索引到数组中的另一种有用的方法,特别是在使用条件语句时。例如,假设您想知道矩阵的元素是否存在一种小于另一个矩阵的相应元素B.。较少的运算符返回一个元素的逻辑阵列1当一个元素一种小于相应的元素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 =2x3逻辑阵列0 1 1 0 1 0

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

avals = a(ind)
Avals =.3×12 3 6.
BVALS = B(IND)
BVALS =3×13 7 7.

MATLAB“是”功能还返回逻辑阵列,指示输入的哪个元素满足某个条件。例如,检查一个元素细绳矢量缺少使用不见了功能。

str = [“一种”“b”失踪“D”“e”失踪];Ind = Ismissing(str)
IND =1x6逻辑阵列0 0 1 0 0 1

假设您想找到元素的值不是失踪。使用操作员与索引矢量Ind.去做这个。

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

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

相关话题