Como determinar se uma saída de uma chamada de função não é usada?

Diga eu tenho uma funçãofoo que pode retornar três valores com uma entrada:

function [a,b,c] = foo(input)

Os cálculos das variáveisb ec levar muito tempo, então às vezes eu posso querer ignorar o seu cálculo dentrofoo. Se eu quiser ignorar os dois cálculos, simplesmente chamo a função assim:

output1 = foo(input);

e depois incluirnargout dentrofoo:

if nargout == 1
    % Code to calculate "a" only
else
    % Code to calculate other variables

O problema ocorre se eu quiser calcular a última saída, mas não a segunda. Nesse caso, minha chamada de função seria:

[output1,~,output3] = foo(input);

Agora se eu usarnargout dentrofoo para verificar quantas saídas estão na chamada de função, ela sempre retornará3 porque o operador til (~) é considerado um resultado válido. Portanto, não posso usarnargout para determinar se deve ou não calcular o segundo resultado,bdentro defoo.

Existe alguma outra maneira de fazer isso? Ou seja, é possível verificar quais saídas de uma chamada de função são descartadas de dentro da própria função?

questionAnswers(1)

yourAnswerToTheQuestion