【发布时间】:2015-11-15 16:50:34
【问题描述】:
I = [2 1];
A = [7 11
8 17];
如何在没有for 循环的情况下在 A 中选择正确的值? I 是A 中每一列的索引向量。那是I(1) is 8 和I(2) = 11。
【问题讨论】:
标签: matlab vectorization
I = [2 1];
A = [7 11
8 17];
如何在没有for 循环的情况下在 A 中选择正确的值? I 是A 中每一列的索引向量。那是I(1) is 8 和I(2) = 11。
【问题讨论】:
标签: matlab vectorization
使用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
【讨论】:
out = A((0:size(A,1):numel(A)-1)+I)。它与sub2ind 的作用相同,但避免了一些开销