【问题标题】:equivalent of "apply" in Octave / Matlab?相当于 Octave / Matlab 中的“应用”?
【发布时间】:2015-04-07 00:36:28
【问题描述】:

我在 Octave / Matlab 中有一个这样的函数(真正的函数要复杂得多)

function result = foo (x, y, z)
  result = x + y + z;
endfunction

调用函数的正常方式如下:

foo (1, 2, 3);

但我想将其应用于像这样打包在数组中的参数:

myStuff = [1, 2, 3];
apply (foo, myStuff);

foo (myStuff);

我无法在文档或 Google 上找到此类调用所需的语法。

【问题讨论】:

  • 通常在 Matlab 中直接调用函数,因此没有原生的 apply 函数(Python 3 出于类似原因删除了 apply)。你为什么要找这个?您的目标是使用它来“矢量化”一个未以某种方式矢量化或您无权访问其源代码的函数吗?
  • 我有带有几十个参数的函数(不是手写的;由 DSL 生成的代码),我想为它们编写测试代码;将参数测试集打包在数组中而不是生成几十个临时名称很方便。

标签: matlab octave


【解决方案1】:

如果您将参数放在元胞数组中并使用comma-separated list 运算符:,这是可能的。

例如:

c = {x, y, z};
foo(c{:});

相当于:

foo(x,y,z);

最好的,

【讨论】:

  • 非常好。广播函数参数不是很多人知道的。 +1。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多