我一直在向量化Matlab中的for循環,因爲它瓶頸了整個程序,但我不知道如何在循環內的單個矩陣的不同行或列上迭代時如何做到這一點。下面的代碼:如何向同一個矩陣/數組的不同索引上的嵌套循環操作進行矢量化?
// X is an n*k matrix, W is n*n
// W(i,j) stores the norm of the vector resulting from subtracting
// the j-th line of X from its i-th line.
for i = 1:n
for j = 1:n
W(i,j) = norm(X(i,:) - X(j,:))
end
end
編輯:
我選擇了路易斯Mendo的答案,因爲它是最方便的,我和這更接近我的算法背後的數學概念之一,但所有三個答案是正確的,我建議使用最方便的一個,具體取決於您擁有的Matlab工具箱或您希望編碼的方式。
我還注意到,所有答案的共同點是使用不同的格式,例如:使用一個數組,將存儲索引,重新塑造當前數組,使用一個更多的維度... 所以我認爲這就是如果你有類似的問題,那麼你應該去探索一下。
你是否已經嘗試vectorise內只有循環? – m7913d