найти значение в массиве по номеру строки и столбца

У меня есть две матрицы A и B, первая строка матрицы A (1, :) = [1 2] относится к числу строк и матриц столбцов B (1,2) = 21, теперь я хочу сделать эту работу для другие строки матрицы A без петель?

A=[1 2;2 3;1 3;3 3];
B=[1 21 34;45 65 87;4 55 66];
for i=1:4
d(i,:)=B(A(i,1),A(i,2))
end
d =[21; 87;34;66] 

person abbas    schedule 27.08.2017    source источник
comment
Ни одно из вышеперечисленных решений не работает, когда размер (A, 1) слишком велик. Причина в том, что все приведенные выше решения подразумевают создание матрицы размеров size(A,1) x size(A,1). См. stackoverflow.com/questions/60477249/   -  person Karpov    schedule 01.03.2020


Ответы (2)


Альтернативой sub2ind является

d = B(A(:,1)+ (A(:,2)-1)*size(B,1));
person Community    schedule 28.08.2017

Я предполагаю, что следующий код должен работать для вас:

A=[1 2;2 3;1 3;3 3];
B=[1 21 34;45 65 87;4 55 66];
d=diag(B(A(:,1),A(:,2)))
person Salman    schedule 27.08.2017