Matlab 如何在没有'的情况下终止函数;输出参数";“varargout”;未分配';错误?

Matlab 如何在没有'的情况下终止函数;输出参数";“varargout”;未分配';错误?,matlab,return,Matlab,Return,我有一个参数和输出数量可变的函数,如果有其他参数,我希望它在某个点退出: function [out, varargout] = myfunction(a,varargin) % do stuff out = 1; if nargin > 1 return end % do extra stuff if there is no additional argument varargout{1} = 'optional out

我有一个参数和输出数量可变的函数,如果有其他参数,我希望它在某个点退出:

function [out, varargout] = myfunction(a,varargin)

    % do stuff
    out = 1;

    if nargin > 1
       return
    end

    % do extra stuff if there is no additional argument
    varargout{1} = 'optional output';

end
我得到了错误

Output argument "varargout" not assigned during call to "C:\...\myfunction"

我怎样才能解决这个问题呢?

像这样的事情怎么样

function varargout = my_function(a,varargin)

    % do stuff
    varargout{1} = 1;

    if nargin > 1
        if nargout > 1
            varargout(2:nargout) = {[]};
        end
       return
    end

    % do extra stuff if there is no additional argument
    varargout{2} = 'optional output';

end
测试:

问题是,您不能调用输出多于所创建输出的函数。因此,调用原始函数
a=my_函数(2,3)
可以正常工作,而
[ab]=my_函数(2,3)
将导致错误

因此,您(至少)有两种选择:

  • 确保每次执行函数时输出和输入变量的数量匹配

  • 照我上面说的做

  • [a b] = my_function(2)
    a =
         1
    b =
    optional output
    
    [a b] = my_function(2,3)
    a =
         1
    b =
         []