我有兩個for循環嵌入代碼,重複多次。我想加快速度:如何矢量化在MATLAB中指數爲矩陣的矩陣?
for i = 1:10
for j = 1:10
A(i,j) = B(i,j,D(i,j))*C(i,j);
end
end
這裏ð由它們對指數沒有B.在d依賴整數的for循環可以通過按元素矩陣乘法來代替。 問題是如何以優雅的方式評估B.我搜索了SO和mathworks頁面,並嘗試使用線性索引,但是這會產生錯誤:
d = reshape(D, 100, []);
b = reshape(B, 100, []);
arrayfun(@(x) b(x,d(x)), 1:100);
我在做什麼錯?有沒有辦法替換兩個for-loops?
的問題不僅評估'B'在一個優雅的方式,要覆蓋'A'所有這一切意味着,唯一的結果你會時間get是最後一層,即當'i = 10'和'j = '10'時 – Oleg 2013-05-08 17:34:39
@OlegKomarov感謝評論!我的代碼實際上是可以的,並且執行它應該做的事:通過乘以「B」和「C」的元素來創建元素明確的矩陣「A」。棘手的部分是從'D'查找索引。 – 2013-05-08 18:47:21