2014-02-28 54 views
1

使用MatLab,我有一個二維矩陣,我想從中抽樣。該位置是已知的並且每次都是固定的。Matlab從二維矩陣進行高效快速採樣

嵌套的For循環很慢。目前我正在使用邏輯索引,例如

cords = [ 1 0 1; 0 0 0 ]; cords = logical(cords) 
data = aMatrix(cords); 

我的主要問題是:有沒有比這更快的方法?

通過使用邏輯索引,我有另一個查詢是否每次都以相同的順序對數據進行採樣,這很重要。

回答

0

邏輯索引通常比線性索引或下標更快,可能是由於通常撥打find。如果您有邏輯矩陣,請使用它。如果您有線性索引,請使用它們。不要試圖轉換隻是爲了加快實際的索引步驟。

從邏輯索引獲得的輸出data的順序與find(cords)(線性索引)返回的索引順序相同。

0

雖然邏輯索引是簡單,快速,如果你只有少量的已知點的提取你可能仍然認爲線性索引純粹的簡單:

data = aMatrix([1 5]); 

對於沒有價值的情況下,sub2ind會有所幫助。