我想向量化下面的循环:闭环优化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