1

与えられた複数入力の matlab 関数

out=f(in1, in2) 

f の入力を生成する 2 番目の関数 g を書きたいと思います。

[in1, in2]=g(in)

次のようなものを呼び出すことができるように:

out=f(g(in))

in1 と in2 をセル配列に格納する単一の出力関数として g を記述してみました。これにより、コロン演算子を使用して g の出力を f に渡すことができます。

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

しかし、私が読んだように、この方法を達成することは不可能と思われる1行のソリューションを探していました:

MATLAB の式にコロン演算子を適用することは可能ですか?

これを行う他の方法はありますか?

4

1 に答える 1

0

最近議論されたように、これは Matlab では不可能です。

g(x,y)ただし、セル配列を返すように関数を書き直したくない場合でも、すべてを 2 行で行うことができます。

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

余談ですが、本当にメモリが不足している場合を除き、一時変数を避けてどこでも 1 行のステートメントを強制しようとしてもあまり意味がありません。確かに、コードを CrazyPerl のように見せることはできますが、長い目で見れば、読みやすさが向上することに満足するでしょう。

于 2012-07-16T13:06:31.800 に答える