Quickest way to get points in a matrix given two 1-D arrays?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Let's say that A is an NxN matrix, and B and C are 1-D arrays of the same size, containing numbers between 1 and N.
Is there a better way than going through a "for loopvar=1:length(B)" loop to get the values of A that correspond to the (Bi, Ci)
Example: A is a 5x5 matrix B contains [1 3 5 2 4 5] C contains [2 1 4 3 5 2]
What would be the quickest way to get:
- A(1,2) (Corrseponding to A(B(1), C(1)))
- A(3,1) (Corrseponding to A(B(2), C(2)))
- A(5,4)
- A(2,3)
- A(4,5)
- A(5,2) (Corrseponding to A(B(6), C(6)))
I'd like the quickest way to get this, since I need to run this calculation an enormous number of times with matrices much larger than a 5x5.
0 Commenti
Risposta accettata
Più risposte (1)
Sean de Wolski
il 27 Feb 2012
Apart = diag(A(B(:),C(:)))
3 Commenti
Sean de Wolski
il 27 Feb 2012
True, but for small index vectors it's faster, i.e. 5 elements
. I tested it the usual way for my reply in this question:
http://www.mathworks.com/matlabcentral/answers/11082-how-do-i-index-into-a-2d-matrix-using-two-equal-length-r-and-c-vectors
Vedere anche
Categorie
Scopri di più su Matrix Indexing in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!