Matrix position stored in a variable!
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
Fangjun Jiang
le 11 Déc 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 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!