数组索引

您所在的位置:网站首页 matlab字母下标 数组索引

数组索引

2024-04-28 19:07| 来源: 网络整理| 查看: 265

按元素位置进行索引

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

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 是 A 中位于 3,2 位置(第三行第二列)的元素。

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

r = A(2,[1 3])r = 1×2 5 7

要访问某个行范围或列范围内的元素,请使用 colon。例如,访问 A 中第一到三行、第二到四列中的元素。

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

计算 r 的另一种方法是使用关键字 end 指定第二直至最后一列。通过此方法,您可以直接指定最后一列,而不必知道 A 中到底有多少列。

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

如果要访问所有行或所有列,只使用冒号运算符即可。例如,返回 A 的整个第三列。

r = A(:,3)r = 4×1 3 7 11 15

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

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-Mar-2019 01-Apr-2019 01-May-2019 march1 = t(:,3)march1 = 2x1 datetime 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×3 12 36 91 45 29 48 33 25 11 Alinear = A(:)Alinear = 9×1 12 45 33 36 29 25 91 48 11

例如,A 的第 3,2 个元素是 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

sub2ind 和 ind2sub 函数可用于在数组的原始索引和线性索引之间进行转换。例如,计算 A 的第 3,2 个元素的线性索引。

linearidx = sub2ind(size(A),3,2)linearidx = 6

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

[row,col] = ind2sub(size(A),6)row = 3 col = 2 使用逻辑值进行索引

使用 true 和 false 逻辑指示符也可以对数组进行索引,在处理条件语句时尤其便利。例如,假设您想知道矩阵 A 中的元素是否小于另一个矩阵 B 中的对应元素。当 A 中的元素小于 B 中的对应元素时,小于号运算符返回元素为 1 的逻辑数组。

A = [1 2 6; 4 3 6]A = 2×3 1 2 6 4 3 6 B = [0 3 7; 3 7 5]B = 2×3 0 3 7 3 7 5 ind = A


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3