我有一个矩阵A
A =
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
我有另一个矩阵来指定索引
index =
1 2
3 4
现在,我从A
获得了第三个矩阵C.C = A(index)
C =
1 6
11 16
问题:我无法理解为什么我收到了这样的矩阵C
。我的意思是,背后的logi是什么?
答案 0 :(得分:4)
它背后的逻辑是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习惯用法,用于将任何数组转换为列向量;有时称为线性化数组。