Matlab为某些例程的输出参数列表中的~
字符引入,以表明我们对此输出值不感兴趣。例如:
% Only interested for max position, not max value
[~, idx] = max(rand(1, 10));
出于速度优化的原因,是否可以从某个例程中检测到某些输出参数未被使用?例如:
function [y, z] = myroutine(x)
%[
if (argout(1).NotUsed)
% Do not compute y output it is useless
y = [];
else
% Ok take time to compute y
y = timeConsummingComputations(x);
end
...
%]
答案 0 :(得分:2)
它可能不是最好的,但一个简单的解决方案是添加另一个输入参数
function [y, z] = myroutine(x, doYouWantY)
%[
if doYouWantY == 0
% Do not compute y output it is useless
y = [];
else
% Ok take time to compute y
y = timeConsummingComputations(x);
end
...
%]
答案 1 :(得分:0)
nargout
方法,已编辑。虽然不是很稳定的解决方案,因为每当你用一个输出参数调用函数时,你需要知道输出只是第二个参数。
function [y, z] = myroutine(x)
%[
if nargout==1
% Do not compute y output it is useless
y = [];
else
% Ok take time to compute y
y = timeConsummingComputations(x);
end
%]