Quickest way to get points in a matrix given two 1-D arrays?
1 回表示 (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
その他の回答 (1 件)
Sean de Wolski
2012 年 2 月 27 日
Apart = diag(A(B(:),C(:)))
3 件のコメント
Sean de Wolski
2012 年 2 月 27 日
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
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!