Matlab 编写具有不同签名的函数的正确方法是什么?

Matlab 编写具有不同签名的函数的正确方法是什么?,matlab,Matlab,我想写一个函数,它接受一个有限的参数列表作为输入参数,并返回另一个输出参数列表。或者,该函数应该接受一个参数,一个包含必要参数的数组,然后返回另一个包含输出参数的数组。最后,该函数应处理所有输入和输出组合,否则将抛出错误。 注意:输入和输出参数都是同一类型(double) 例如,考虑以下函数: function [e, f, g, h] = example( a, b, c, d ) if nargin == 1 input = a; % I rename `a

我想写一个函数,它接受一个有限的参数列表作为输入参数,并返回另一个输出参数列表。或者,该函数应该接受一个参数,一个包含必要参数的数组,然后返回另一个包含输出参数的数组。最后,该函数应处理所有输入和输出组合,否则将抛出错误。
注意:输入和输出参数都是同一类型(
double

例如,考虑以下函数:

function [e, f, g, h] = example( a, b, c, d )

if nargin == 1
    input = a;             % I rename `a` for clarity
    a = input(1);
    b = input(2);
    c = input(3);
    d = input(4);
end

% Generate e, f, g, h from a, b, c, d

if nargout == 1
    output = [e, f, g, h]; % I work with `output` for clarity, but the output
    e = output;            % variable is `e`
end

end
我想称之为:

[e, f, g, h] = example(a, b, c, d)
[e, f, g, h] = example(input)
output = example(a, b, c, d)
output = example(input)
在哪里


那么,定义具有不同“签名”的函数的正确方法是什么?我觉得我实现它的方式可以大大改进。

这基本上就是你必须要做的。使用varargin/varargout变量。这基本上就是你必须要做的。使用varargin/varargout变量。
input = [a, b, c, d]
output = [e, f, g, h]