2012-02-17 4 views
0

큰 매트릭스가 있고 하나의 호출 문을 사용하여 다른 위치에서 값 집합을 검색하려고합니다.매트릭스에서 스파 스 집합의 요소를 어떻게 인덱스 할 수 있습니까?

그래서 예를 들어, 내가, (2,3)를 검색 (6,7)를 원하고, (15, 19)

나는 다음을 수행 할 수 있습니다 알고;

myRows = [2 6 15]; 
myCols = [3 7 19]; 
myTempResults = myBigMatrix(myRows, myCols); % Which will return all possible pairs 
% Then I can do 
% 
myFinalResults = diag(myTempResults); 

그러나 나는 그 일의 올바른/우 방법을 알고 싶습니다.

감사

당신은 sub2ind을 사용하거나 선형 스스로와 indices 계산해야
+0

[벡터에 MATLAB 매트릭스 변환]의 중복 가능성 (http://stackoverflow.com/questions/를 1931545/convert-a-matlab-matrix-to-a-vector) – yuk

답변

0

:

a = rand(20,30); % 20 x 30 matrix 
myRows = [2 6 15]; 
myCols = [3 7 19]; 

% method 1, sub2ind 
a(sub2ind(size(a),myRows,myCols)) 

% or calculate it yourself, Matlab is column major 
% and 1-based so row/col (i,j) is (j-1)*nrow+i 
a((myCols-1)*size(a,1) + myRows) 
관련 문제