2015-11-15 4 views

ответ

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 
+1

Спасибо большое! Это именно то, что я надеялся найти. – bisherbas

+0

@bisherbas Мое удовольствие. Удачи! – rayryeng

+0

@bisherbas Возможно, более быстрая альтернатива была бы «out = A ((0: size (A, 1): numel (A) -1) + I)'. Он делает то же самое, что и 'sub2ind', но избегает некоторых накладных расходов. –

Смежные вопросы