# Quickest way to get points in a matrix given two 1-D arrays?

조회 수: 1(최근 30일)
James 2012년 2월 27일
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.

댓글을 달려면 로그인하십시오.

### 채택된 답변

Honglei Chen 2012년 2월 27일
A(sub2ind(size(A),B(:),C(:)))
##### 댓글 수: 1표시숨기기 없음
James 2012년 2월 28일
Exactly what I was looking for. Thanks!

댓글을 달려면 로그인하십시오.

### 추가 답변(1개)

Sean de Wolski 2012년 2월 27일
Apart = diag(A(B(:),C(:)))
##### 댓글 수: 3표시숨기기 이전 댓글 수: 2
James 2012년 2월 28일
I like this for smaller sets, but I'm running a Monte carlo simulation with several thousand data points. The other answer is quicker for the larger data sets I'm using. Still, this is a good trick for smaller sets. It never hurts to have multiple ways of solving things.

댓글을 달려면 로그인하십시오.

### Community Treasure Hunt

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

Start Hunting!