【问题标题】:eval command as string for using with Matlabeval 命令作为字符串用于 Matlab
【发布时间】:2011-05-04 09:14:54
【问题描述】:

Matlab 中有没有办法将命令存储为字符串以供以后使用?
例如,如果我有

x = 1:10;
plot(x, x);

我能否以某种方式自动将第二行存储为str = 'plot(1:10, 1:10)',以便稍后我可以简单地再次使用该命令与eval(str)?有什么有用的功能可以帮助我完成这项任务吗?

附言我知道可以使用 str='plot(x,x)' 存储该行,但这还不够好,因为它取决于工作区变量 x 的即时值,该值可以随时间而改变。

【问题讨论】:

  • 你的目标是什么?是的,您可以使用eval 简单地执行字符串。
  • eval 几乎从来都不是正确的答案。所以我同意@zellus:你想做什么?
  • @oli, @zellus:我这里的目标是执行被服务器拒绝的 setstatus 命令,所以我将这些命令存储起来供以后执行。

标签: string matlab eval


【解决方案1】:

您可以尝试使用闭包。在你的情况下,看起来像这样:

x=1:10;
f = @()plot(x, x);

现在f 拥有执行绘图所需的一切(包括 x 中的信息),您可以应用它来执行绘图功能:

f()

【讨论】:

  • 需要注意的是,MATLAB 使用特定术语"anonymous function" 而不是“闭包”来指代这些类型的函数。
  • Nitpick:这不是一个闭包,它是一个匿名函数。它们在 Matlab 中的行为不同。像这样的内联匿名函数在构造句柄时获取它所引用的封闭工作区变量中的值的副本。嵌套函数的句柄实际上是闭包:它们保持对封闭工作区中变量的“实时”引用,并且稍后会看到对它们的更新。
  • 哈哈!看起来@gnovice 和我差不多在同一时间阅读了他早上的 StackOverflow。
  • @Andrew:是的,东部标准时间!
猜你喜欢
  • 2012-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-24
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
相关资源
最近更新 更多