以下を一般化する方法はありますか?(注:nargout_requested
実行時以外はわからない場合があります)
function outputs = apply_and_gather(f, args, nargout_requested)
switch nargout_requested
case 0
f(args{:});
outputs = {};
case 1
o1 = f(args{:});
outputs = {o1};
case 2
[o1,o2] = f(args{:});
outputs = {o1,o2};
case 3
[o1,o2,o3] = f(args{:});
outputs = {o1,o2,o3};
...
つまり、引数のセル配列を使用して関数を呼び出し、関数の出力をセル配列に割り当て、特定の数の出力引数を要求したいと考えています。
Python では、これは次のようになります。
outputs = f(*args)
しかし、Matlab では、関数を呼び出す前に必要な引数の数を関数に伝える必要があり、出力引数が多すぎるとエラーが発生します。