我现在想知道是否可以在Matlab中编写一个函数,如果没有请求则不返回参数。例如,plot
如果调用h = plot(x,y);
,则返回轴句柄,但如果调用plot(x,y);
则不返回。只是该情节不是用Matlab编写的。
答案 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)
这避免了额外的编码,告诉我们需要多少输出参数。