2
我想使用存儲在另一個數組中的z座標從3D矩陣中的元素創建一個數組。 最簡單的方法是:使用數組作爲下標指令訪問矩陣中的元素
X=2;
Y=3;
lastZ=10000000
for i=1:lastZ
new_array=matrix(X,Y,Z(i));
end
但是我正在尋找使用「量化」的方式只矩陣,而不是for循環。我試過下面的代碼,但我得到一個錯誤信息「下標指標必須是真正的正整數或邏輯值」:
new_array=matrix(X,Y,Z);
據我所知,Z是一個數組,不能用X和Y放這些是整數。有沒有更好的方式來創建單行代碼中的這樣的數組?
是十分明顯的,乾淨!我花了幾個小時試圖理解_bsxfun_和_arrayfun_,但_squeeze _...但我仍然想知道爲什麼'new_array = matrix(X,Y,Z)'不起作用,而您的代碼中唯一的區別是_squeeze_的用法壓扁new_array?我的意思是我的索引有問題。 – workson 2012-07-12 18:25:39
如果您將任何維度的索引超出第二個範圍,則不會得到「正常」向量。通過顯示'矩陣(X,Y,1:10)'來查看它。事實上,在我偶然發現擠壓之前,我也遇到了很多麻煩。 – 2012-07-12 18:46:48
顯然,使用_squeeze_比直接循環慢很多!我在** Matlab 2012a **上。我讀了很多關於_for_ loops性能改進的內容。看起來像我的代碼在每個矢量化步驟的運行時間方面都變得更糟。也許是因爲像_find_,_sum_或_squeeze_這樣的函數,因爲我想避免任何_for_循環。 – workson 2012-07-16 18:50:02