【问题标题】:closed loop optimization in MATLABMATLAB 中的闭环优化
【发布时间】:2013-02-28 19:14:50
【问题描述】:

我想矢量化以下循环:

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

其中 f 是自定义函数,即匿名函数。 有没有像 arrayfun 这样的命令允许这样做?

编辑:这里可能是矢量化是错误的词,应该使用优化。

【问题讨论】:

  • 什么是x 以及I 与它有什么关系???
  • x 是一个向量,与 I 无关。
  • 我想您想将 f(x) 的每个值存储在 x 中。为此,您应该x(I) = f(x)
  • 你能贴出 f 的代码吗,也许可以这样编程,你可以去x = f(x)...
  • 因为 f 应该是适应性强的,这对我没有帮助。不过还是谢谢。

标签: matlab optimization vectorization


【解决方案1】:

我不检查代码,但也许:

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,这可能不是非常有效的内存。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
  • 1970-01-01
  • 2011-11-03
  • 2020-10-19
  • 1970-01-01
  • 1970-01-01
  • 2011-11-03
相关资源
最近更新 更多