检测某些输出参数是否未使用

时间:2017-03-02 17:55:13

标签: matlab arguments

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

     ...
%]

2 个答案:

答案 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

    %]