假设我们有一个二维矩阵A
和两个向量a = (a1,a2,...,an)
,b = (b1,b2,...,bn)
。我的任务是获得一个包含A
元素的向量,其中索引取自向量a
,b
,即ans = (A(a1,b1), A(a2,b2), A(a3,b3),..., A(an,bn))
。有没有向量操作,所以我可以在一个操作中而不是使用循环?
在这里使用矩阵类型不是必需的,A
可以是单元格数组,表格或其他任何东西,唯一重要的是允许我形成我所描述的向量。
使问题复杂化的是,我不需要只有值,而是相反更改选定的矩阵元素,所以我不应该从矩阵中提取它们。
目前我脑海中只有一个变体,这不是很聪明:线性化矩阵A并从矢量中获取值,格式为A_vectorized(index_vector)
,其中index_vector
为由a
和b
的索引组合而成。
答案 0 :(得分:2)
您可以使用函数sub2ind
将下标(a,b)
转换为线性索引。你可以得到答案
A(sub2ind(size(A),a,b))