1

给定一个多输入 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{:})

但我正在寻找一种单行解决方案,当我读到时,这似乎不可能实现:

是否可以在 MATLAB 中的表达式上应用冒号运算符?

有没有其他方法可以做到这一点?

4

1 回答 1

0

正如最近所讨论的,这在 Matlab 中是不可能的。

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

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

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

于 2012-07-16T13:06:31.800 回答