【问题标题】:How Matlab extract a subset of a bigger matrix by specifying the indices?Matlab 如何通过指定索引来提取更大矩阵的子集?
【发布时间】:2014-03-05 18:05:51
【问题描述】:

我有一个矩阵 A

A =

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

我有另一个矩阵来指定索引

索引 =

 1     2
 3     4

现在,我从 A 得到第三个矩阵 C

C = A(index)

C =

 1     6
11    16

问题:我无法理解我为什么会收到这样一个矩阵C。我的意思是,它背后的逻辑是什么?

【问题讨论】:

标签: matlab


【解决方案1】:

其背后的逻辑是linear indexing:当您提供单个索引时,Matlab 首先沿列移动,然后沿行移动,然后沿其他维度移动(根据它们的顺序)。

因此,在您的情况下(4 x 5 矩阵),A 的条目按以下顺序访问(这里的每个数字代表顺序,而不是条目的值):

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

一旦你习惯了它,你就会发现线性索引是一个非常强大的工具。

例如:要获得A 中的最大值,您可以使用max(A(1:20))。这可以进一步简化为max(A(1:end))max(A(:))。注意“A(:)”是一个常见的Matlab习语,用来将任意数组变成列向量;有时称为线性化数组。

另见ind2subsub2ind,它们用于从线性索引转换为标准索引,反之亦然。

【讨论】:

    猜你喜欢
    • 2017-02-14
    • 2018-05-12
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多