在MATLAB中不使用for循环扫描每一列

时间:2015-11-15 02:23:53

标签: matlab vectorization

I = [2 1];
A = [7 11
     8 17];

如何在没有for循环的情况下在A中选择正确的值? IA中每列的索引向量。那是I(1) is 8I(2) = 11

1 个答案:

答案 0 :(得分:2)

使用sub2ind根据右侧行和列坐标生成线性索引,然后使用这些索引编入A。在这种情况下,I选择正确的行,并且您希望从第一列到最后一列只为每列选择一个元素:

ind = sub2ind(size(A), I, 1:numel(I));
out = A(ind);

实施例

>> I = [2 1];
>> A = [7 11
        8 17];
>> ind = sub2ind(size(A), I, 1:numel(I));
>> out = A(ind);
>> out

out =

     8    11