2011-11-26 88 views
1

我有一個m×n的整數矩陣,其中n是一個相當大的數m和n〜1000。我想遍歷所有這些並執行一些操作,例如訪問特定單元格並分配特定單元格的值。Matlab中矩陣元素的高效訪問

但是,至少在我的實現中,這是相當低效的,因爲我有兩個for循環與矩陣(a,b)=矩陣(a,b + 1)或沿着這些線的東西。有沒有其他方法可以做到這一點,因爲我目前的實施需要很長時間來遍歷大約100,000個單元格並執行一些操作。

謝謝

回答

0

MATLAB的使用矩陣的列存儲器主要排序(不像C)。你確定你正在按照正確的順序迭代索引嗎?如果沒有,請嘗試切換它們,看看性能是否提高。

1

在matlab中,幾乎總是可以避免循環。 如果你想要做Matrix(a,b)=Matrix(a,b+1),你應該做Matrix2=Matrix(:,2:end);

如果你更精確地說你在循環內做什麼,我可以幫助你更多。

0

如果你不能擺脫for循環,一種可能性是重寫C中昂貴的操作並創建一個MEX文件,如here所述。