我想向量化下面的循環:閉環優化MATLAB
for I=1:N
x = f(x);
end
與f是一個自定義函數,即一個匿名函數。 是否有像arrayfun允許這樣的命令?
編輯:可能是矢量化在這裏是錯誤的詞,而應該使用優化。
我想向量化下面的循環:閉環優化MATLAB
for I=1:N
x = f(x);
end
與f是一個自定義函數,即一個匿名函數。 是否有像arrayfun允許這樣的命令?
編輯:可能是矢量化在這裏是錯誤的詞,而應該使用優化。
我不檢查的代碼,但也許:
x = arrayfun(@(y) f(x), 1:N);
隨着arrayfun
你可以把你作爲參數傳遞的向量的每個元素。在上面的示例中,y
指的是矢量1:N
的每個元素,它也代表您發佈的for
循環的索引。在您的for
循環中,您不使用索引,因此您可以在arrayfun
中執行相同的操作,並遍歷一個正在執行內部操作的矢量:f(x)
。最後,您可以將輸出分配到x
。可能的話,通過arrayfun
的方式,您可以檢索長度爲N
的輸出x
,並在迭代中使用每個f(x)
的結果。通過for
循環,您可以在每次迭代中覆蓋x
的值。
希望你幫忙,對不起我的英文。
感謝您的建議,但代碼似乎不適用於我。對於大N和非標量X,這可能不是非常有效的內存。 – litro 2013-02-28 11:09:43
什麼是'x',我怎麼和它有關? – Shai 2013-02-28 11:00:19
x是一個向量,與I無關。 – litro 2013-02-28 11:13:22
我想你想把f(x)的每個值存儲在x中。爲此,你應該'x(I)= f(x)'。 – HebeleHododo 2013-02-28 11:22:30