获取索引存储在数组中的矩阵元素,无需循环

时间:2014-03-31 03:44:39

标签: matlab vector matrix indexing

假设我们有一个二维矩阵A和两个向量a = (a1,a2,...,an)b = (b1,b2,...,bn)。我的任务是获得一个包含A元素的向量,其中索引取自向量ab,即ans = (A(a1,b1), A(a2,b2), A(a3,b3),..., A(an,bn))。有没有向量操作,所以我可以在一个操作中而不是使用循环?

在这里使用矩阵类型不是必需的,A可以是单元格数组,表格或其他任何东西,唯一重要的是允许我形成我所描述的向量。

使问题复杂化的是,我不需要只有值,而是相反更改选定的矩阵元素,所以我不应该从矩阵中提取它们。

目前我脑海中只有一个变体,这不是很聪明:线性化矩阵A并从矢量中获取值,格式为A_vectorized(index_vector),其中index_vector为由ab的索引组合而成。

1 个答案:

答案 0 :(得分:2)

您可以使用函数sub2ind将下标(a,b)转换为线性索引。你可以得到答案

A(sub2ind(size(A),a,b))