Matlab快速入门之数组索引

4.3
(3)

正如上一篇文章所述,Matlab中的所有变量都可以看成数组或矩阵。那么我们获取数组中某个位置的值,就需要用到数组索引的功能。文中,以二维矩阵中某些特定位置的元素为例,说明如何查询数组索引。关于三维数组,方法是类似的,只需要多加一个索引下标即可实现。

Matlab快速入门之数组索引

MathWorks官网

MATLAB® 中的每个变量都是一个可包含许多数字的数组。如果要访问数组的选定元素,请使用索引。

这里,我们假设有一个4×4的矩阵A

>> A = [1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]

A =

     1     2     3     4
     5     6     7     8
     9    10    11    12
    13    14    15    16

引用数组中的特定元素有两种方法:

  • 1、最常见的方法是指定行和列的下标,即元素所在的具体位置,例如
>> A(4,2)

ans =

    14
  • 2、另一种方法不太常用,但有时非常有用,即使用单一下标按顺序向下遍历每一列
>> A(8)

ans =

    14

>> A(3)

ans =

     9

一般情况下,我们使用方法1来引用元素。使用单一下标引用数组中特定元素的方法称为线性索引

如果尝试在赋值语句右侧引用数组外部元素,MATLAB会引发错误。即,引用元素的下标超过最大索引值,比如4行4列矩阵,你要引用第五行第五列这种情况。

>> test = A(4,5)
索引超出矩阵维度。

当然,您可以给矩阵维度以外的元素赋值,即可以新增索引下标。如此,数组大小会增大以便容纳新元素。

>> A(4,5) = 17

A =

     1     2     3     4     0
     5     6     7     8     0
     9    10    11    12     0
    13    14    15    16    17

要引用多个数组元素,可以使用冒号运算符,这使您可以指定一个格式为start:end的范围。例如,列出A前三行及第二列中的元素:

>> A(1:3,2)

ans =

     2
     6
    10

单独的冒号(没有起始值或结束值)指定该维中的所有元素。例如,选择A第三行中的所有列:

>> A(3,:)

ans =

     9    10    11    12     0

此外,冒号运算符还允许您使用较通用的格式start:step:end创建等间距向量值。

>> B = 0:10:100

B =

     0    10    20    30    40    50    60    70    80    90   100

这在我们后续编程做数据处理中,用途广泛。

Matlab快速入门之数组索引

如果省略中间的步骤(如start:end中),MATLAB 会使用默认步长值1

>> B = 0:5

B =

     0     1     2     3     4     5

关于三维数组给一个定义的例子吧:

>> C1

C1 =

     1     2     3
     4     5     6
     7     8     9

>> C2

C2 =

     1     0     0
     0     1     0
     0     0     1

>> C3

C3 =

     1     1     1
     1     1     1
     1     1     1

>> D(:,:,1)=C1

D =

     1     2     3
     4     5     6
     7     8     9

>> D(:,:,2)=C2

D(:,:,1) =

     1     2     3
     4     5     6
     7     8     9


D(:,:,2) =

     1     0     0
     0     1     0
     0     0     1

>> D(:,:,3)=C3

D(:,:,1) =

     1     2     3
     4     5     6
     7     8     9


D(:,:,2) =

     1     0     0
     0     1     0
     0     0     1


D(:,:,3) =

     1     1     1
     1     1     1
     1     1     1

>> D

D(:,:,1) =

     1     2     3
     4     5     6
     7     8     9


D(:,:,2) =

     1     0     0
     0     1     0
     0     0     1


D(:,:,3) =

     1     1     1
     1     1     1
     1     1     1

共计3人评分,平均4.3

到目前为止还没有投票~

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

转载文章,原文出处:MathWorks官网,由古哥整理发布

如若转载,请注明出处:https://iymark.com/program/matlab/array-indexing.html

(0)
上一篇 2022年09月05日 21:59
下一篇 2022年09月06日 23:50

相关推荐

发表回复

登录后才能评论
本站APP