【问题标题】:MATLAB nesting multiple input functionsMATLAB 嵌套多个输入函数
【发布时间】:2012-07-16 12:40:11
【问题描述】:

给定一个多输入的matlab函数

out=f(in1, in2) 

我想编写第二个函数 g 来生成 f 的输入,例如

[in1, in2]=g(in)

这样我就可以调用类似的东西:

out=f(g(in))

我尝试将 g 编写为单个输出函数,它将 in1 和 in2 存储在一个元胞数组中,这样我就可以使用冒号运算符将 g 的输出提供给 f:

in_c=g(in);
out=f(in_c{:})

但我一直在寻找一种单行解决方案,在我阅读时似乎无法以这种方式实现:

Is it possible to apply colon operator on an expression in MATLAB?

还有其他方法吗?

【问题讨论】:

标签: matlab colon


【解决方案1】:

As discussed recently,这在 Matlab 中是不可能的。

但是,如果您不想重写您的函数 g(x,y) 以返回一个元胞数组,您仍然可以在两行中完成所有操作:

[in4f{1}, in4f{2}] = g(in);
out = f(in4f{:});

顺便说一句:除非您真的对记忆感到痛苦,否则通过避免临时变量来尝试在任何地方强制使用单行语句没有多大意义。当然,你可以让你的代码看起来像 CrazyPerl,但从长远来看,你会为增加的可读性而高兴。

【讨论】:

  • 通常你也不会节省内存,因为临时对象仍然是隐式创建的。