2013-02-28 78 views
0

我想向量化下面的循環:閉環優化MATLAB

for I=1:N 
    x = f(x); 
end 

與f是一個自定義函數,即一個匿名函數。 是否有像arrayfun允許這樣的命令?

編輯:可能是矢量化在這裏是錯誤的詞,而應該使用優化。

+0

什麼是'x',我怎麼和它有關? – Shai 2013-02-28 11:00:19

+0

x是一個向量,與I無關。 – litro 2013-02-28 11:13:22

+1

我想你想把f(x)的每個值存儲在x中。爲此,你應該'x(I)= f(x)'。 – HebeleHododo 2013-02-28 11:22:30

回答

0

我不檢查的代碼,但也許:

x = arrayfun(@(y) f(x), 1:N);

隨着arrayfun你可以把你作爲參數傳遞的向量的每個元素。在上面的示例中,y指的是矢量1:N的每個元素,它也代表您發佈的for循環的索引。在您的for循環中,您不使用索引,因此您可以在arrayfun中執行相同的操作,並遍歷一個正在執行內部操作的矢量:f(x)。最後,您可以將輸出分配到x。可能的話,通過arrayfun的方式,您可以檢索長度爲N的輸出x,並在迭代中使用每個f(x)的結果。通過for循環,您可以在每次迭代中覆蓋x的值。

希望你幫忙,對不起我的英文。

+0

感謝您的建議,但代碼似乎不適用於我。對於大N和非標量X,這可能不是非常有效的內存。 – litro 2013-02-28 11:09:43