2013-02-28 60 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