在MATLAB中不带for循环扫描每列
如何在没有在MATLAB中不带for循环扫描每列,matlab,vectorization,Matlab,Vectorization,如何在没有的情况下为循环选择正确的值I是a中每列的索引向量。也就是说,I(1)是8和I(2)=11用于基于右侧行和列坐标生成线性索引,然后使用这些来索引到A。在这种情况下,I选择正确的行,并且您希望从第一列到最后一列为每列只选择一个元素: I = [2 1]; A = [7 11 8 17]; 例子 谢谢!这正是我希望找到的。@bishherbas我很高兴。祝你好运@一种可能更快的选择是out=A((0:size(A,1):numel(A)-1)+I)。它的作用与sub2ind相同,
的情况下为循环选择正确的值I
是a
中每列的索引向量。也就是说,I(1)是8
和I(2)=11
用于基于右侧行和列坐标生成线性索引,然后使用这些来索引到A
。在这种情况下,I
选择正确的行,并且您希望从第一列到最后一列为每列只选择一个元素:
I = [2 1];
A = [7 11
8 17];
例子
谢谢!这正是我希望找到的。@bishherbas我很高兴。祝你好运@一种可能更快的选择是out=A((0:size(A,1):numel(A)-1)+I)
。它的作用与sub2ind
相同,但避免了一些错误overhead@bisherbas如果你有兴趣,路易斯的建议在这里有相关的基准-
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