在每行中获取不同的列

Tim*_*Tim 7 matlab row matrix

我想从矩阵的每一行中得到一个不同的列.例如:

A = [1,2;1,4;5,2]
B = [2;2;1]
Run Code Online (Sandbox Code Playgroud)

输出应该产生:

out = [2;4;5]
Run Code Online (Sandbox Code Playgroud)

所以简而言之:A是矩阵,并且B每行的列数都有索引.如何在不使用循环的情况下执行此操作(如果可能)?

ang*_*nor 8

您可以使用sub2ind将(i,j)索引转换为矩阵A中的线性索引

idx = sub2ind(size(A), 1:size(A, 1), B');
A(idx)

ans =

 2     4     5
Run Code Online (Sandbox Code Playgroud)

假设向量B具有与A中的行一样多的条目.在上面,sub2ind为每对后续行号(1:size(A,1))和B中给出的列号生成线性索引.


sle*_*dav 8

你可以这样做diag(A(:,B)),但是有一个循环,但只是隐含的.我不知道怎么做没有任何循环.