2012-02-17 10 views
0

私は大きな行列を持っており、1つの呼び出し文を使用して、異なる場所にある値のセットを取得したいと考えています。マトリックス内の疎な要素のインデックスを作成するにはどうすればよいですか?

私は次の操作を行うことができます知っている例えば、私は(6,7)、(2,3)を取得したいので、

、および(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を使用するか計算する必要が

おかげ

+0

[ベクトルにMATLAB行列の変換]の可能な重複(http://stackoverflow.com/questions/ 1931545 /変換-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) 
関連する問題