Comment puis-je obtenir la deuxième valeur de retour d'une fonction sans l'aide de variables temporaires?
J'ai une fonction qui retourne deux valeurs, comme suit:
[a b] = myfunc(x)
Est-il un moyen d'obtenir la deuxième valeur de retour sans l'aide d'une variable temporaire, et sans altérer la fonction?
Ce que je cherche, c'est quelque chose comme ceci:
abs(secondreturnvalue(myfunc(x)))
- Que penser de l'utilisation d'une classe à la place d'une fonction de correspondant "getter" des méthodes. Vous pourriez obtenir quelque chose comme abs(mafonction.secondReturnValue(x)).
- Upvoting cela comme une pseudo-fonction de demande de MathWorks.
Vous devez vous connecter pour publier un commentaire.
Sauf s'il existe un besoin pressant pour ce faire, je serais probablement le déconseillent. La clarté de votre code va en souffrir. Stocker les sorties dans des variables temporaires et puis le passage de ces variables à une autre fonction permet de rendre votre code plus propre, et les différents moyens de le faire sont décrites ici: Comment élégamment ignorer certaines valeurs de retour d'une fonction MATLAB?.
Toutefois, si vous vraiment envie ou besoin de le faire, le seul moyen je pense, serait de créer votre propre fonction
secondreturnvalue
. Voici un autre exemple général appelénth_output
:Et vous l'appeler en passant comme les entrées 1) l'argument de sortie numéro que vous voulez, 2) un la fonction de poignée à
myfunc
, et 3) quels que soient les arguments d'entrée, vous devez passer àmyfunc
:pas que je sache.
subsref
ne semble pas fonctionner dans ce cas, peut-être parce que la deuxième variable n'est même pas retourné par la fonction.depuis matlab 2009b il est possible d'utiliser la notation
si vous n'avez pas besoin le premier argument, mais c'est toujours utilise une variable temporaire pour
b
.