Matrix position stored in a variable!
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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?
0 comentarios
Respuesta aceptada
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
Más respuestas (0)
Ver también
Categorías
Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!