如果未分配变量,则忽略所有输出参数

时间:2014-07-22 08:00:40

标签: matlab function

我现在想知道是否可以在Matlab中编写一个函数,如果没有请求则不返回参数。例如,plot如果调用h = plot(x,y);,则返回轴句柄,但如果调用plot(x,y);则不返回。只是该情节不是用Matlab编写的。

3 个答案:

答案 0 :(得分:2)

演示如何获得灵活数量的随机输出的简短示例:

function varargout=myFancyOutput()
    varargout=cell(1,nargout)
    for idx=1:numel(varargout)
        varargout{idx}=rand
    end
end

nargout给出输出参数的数量,varargout扩展为单个输出的列表。

答案 1 :(得分:2)

您可以使用varargout执行此操作,例如:

function varargout = test()

    for k = 1:nargout
        varargout{k} = k;
    end

    disp(['Test function called with ', str2num(nargout), ' output arguments']) %// Just so you can see the function working when you call no outputs

end

答案 2 :(得分:1)

实际上,当函数返回输出时,您可以选择不存储它。

让函数成为:

function [out1,out2,out3] = testfunction(x,y)
    out1 = 2.*x;
    out2 = 2.*y;
    out3 = x.*y;
    plot(1:10,1:10)
end

现在您可以使用以下方法调用此函数:

% Call function interested in no output
testfunction(2,3); % Although in this case `ans` is generated as pointed out by Dan.
% Call function only interested in first output
[out1] = testfunction(2,3)
% Call function only interested in first and second output
[out1,out2] = testfunction(2,3)
% Call function only interested in first, second and third output
[out1,out2,out3] = testfunction(2,3)
% Only the first output
[~,~,out3] = testfunction(2,3)

根据输出的分配,生成输出。

避免生成的非常肮脏的解决办法是:

[~]=testfunction(2,3)

这避免了额外的编码,告诉我们需要多少输出参数。