2015-10-05 67 views
2

數據行和列的indeces的矩陣得到的數據和用於的indeces行陣列和列MATLAB從與存儲在給定的數據矩陣陣列

data=reshape(1:9,3,3) 
row_index=[1,2,3]; 
column_index=[1,2,2]; 

我= [1,5,6]通過

得到結果
for i =1:length(row_index) 
    result(i)=data(row_index(i),column_index(i)); 
end 

如何矢量化循環?

回答

3

像這樣:(使用sub2ind

indices = sub2ind(size(data), row_index, column_index); 

然後,

result = data(indices) 
+0

謝謝!我想知道是否有更直接的方式而不轉換indeces。 –

1

我也找到了間接的方式,而無需使用。

data(column_index*size(data,2)+row_index) 
+0

應該是'column_index * size(data,1)'而不是。 – Divakar