Matrix position stored in a variable!

2 visualizaciones (últimos 30 días)
Mohsen  Davarynejad
Mohsen Davarynejad el 11 de Dic. de 2011
Suppose A=rand(10,10) and I need to access the following elements in A: A(2,3), A(4,5), A(6,7). If the positions are stored in a variable, d=[2 3; 4 5; 6 7], how the matrix elements can be retrieved?
Well, a simple solution is the following for loop.
for i = 1 : size(b, 1)
A(b(i,1), b(i,2))
end
Any better suggestion?

Respuesta aceptada

Fangjun Jiang
Fangjun Jiang el 11 de Dic. de 2011
A=magic(10);
d=[2 3; 4 5; 6 7];
B=A(sub2ind(size(A),d(:,1),d(:,2)))
Update for any size of d
A=rand(2,3,4);
d=[1 2 3;2,3,4;1,2,4];
[m,n]=size(d);
if ndims(A)~=n
error('Dimension mis-match');
end
ind=mat2cell(d,m,ones(1,n));
B=A(sub2ind(size(A),ind{:}))
  3 comentarios
Fangjun Jiang
Fangjun Jiang el 11 de Dic. de 2011
That's tough! See update.
Mohsen  Davarynejad
Mohsen Davarynejad el 11 de Dic. de 2011
Just perfect! Thanks.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by