我想从矩阵的每一行中得到一个不同的列。例如:
A = [1,2;1,4;5,2]
B = [2;2;1]
输出应该产生:
out = [2;4;5]
简而言之:A
是矩阵,B
具有每行列数的索引。如何在不使用循环的情况下执行此操作(如果可能的话)?
答案 0 :(得分:8)
您可以使用sub2ind将(i,j)索引转换为矩阵A中的线性索引
idx = sub2ind(size(A), 1:size(A, 1), B');
A(idx)
ans =
2 4 5
假设向量B具有与A中的行一样多的条目。在上面,sub2ind为每对后续行号(1:size(A,1))和列号给出了一个线性索引乙
答案 1 :(得分:8)
你可以通过diag(A(:,B))
来做,但是有一个循环,但只是隐含的。我不知道怎么做没有任何循环。