En option arguments dans les fonctions MATLAB
Comment puis-je déclarer une fonction dans MATLAB avec des arguments facultatifs?
Par exemple: function [a] = train(x, y, opt)
, où l'opt doit être un argument facultatif.
- double possible de des Arguments par Défaut dans Matlab, Le Matlab équivalent de Python “None”, la Façon de traiter avec des paires nom/valeur des arguments d'une fonction sous MATLAB
- De bonnes discussions ici blogs.mathworks.com/pick/2010/04/02/setting-default-values et voilà blogs.mathworks.com/loren/2009/05/05/...
Vous devez vous connecter pour publier un commentaire.
Il y a quelques options sur la façon de le faire. Le plus fondamental est d'utiliser
mots clé varargin
, et ensuite utilisernargin
,size
etc. pour déterminer si les arguments facultatifs ont été transmis à la fonction.Un peu plus élégant à la recherche de solution est d'utiliser le
inputParser
classe pour définir tous les arguments attendus par la fonction, à la fois obligatoires et facultatives.inputParser
vous permet également d'effectuer une vérification de type à tous les arguments.Une façon simple de le faire est par l'intermédiaire de nargin (N arguments). L'inconvénient est que vous devez vous assurer que votre liste d'arguments et de la nargin contrôles de match.
Il est utile de rappeler que toutes les entrées sont facultatifs, mais les fonctions seront de sortie avec une erreur si elle appelle une variable qui n'est pas défini. L'exemple suivant définit les valeurs par défaut pour les b et c. Sortie si un n'est pas présent.
Une bonne façon de le faire est de ne pas utiliser
nargin
, mais de vérifier si les variables ont été définies à l'aide deexist('opt', 'var')
.Exemple:
Voir cette réponse pour les pros de le faire de cette façon: Comment faire pour vérifier si un argument est fourni dans l'appel de fonction?