Comment puis-je déclarer la fonction dans Matlab avec les arguments optionnels?
par exemple: function [a] = train(x, y, opt)
, où opt doit être un argument optionnel.
Comment puis-je déclarer la fonction dans Matlab avec les arguments optionnels?
par exemple: function [a] = train(x, y, opt)
, où opt doit être un argument optionnel.
Il ya quelques options différentes sur la manière de procéder. Le plus fondamental est d'utiliser varargin
, et ensuite utiliser nargin
, 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 l' inputParser
classe de définir tous les arguments attendus par votre fonction, à la fois obligatoires et facultatives. inputParser
vous permet également d'effectuer une vérification de type à tous les arguments.
Un moyen simple de le faire est via nargin (N arguments in). L'inconvénient est que vous devez vous assurer que votre liste d'arguments et les contrôles nargin correspondent.
Il convient de rappeler que toutes les entrées sont facultatives, mais les fonctions se fermeront avec une erreur si elles appellent une variable non définie. L'exemple suivant définit les valeurs par défaut pour b et c. Sortira si un n'est pas présent.
function [ output_args ] = input_example( a, b, c )
if nargin < 1
error('input_example : a is a required input')
end
if nargin < 2
b = 20
end
if nargin < 3
c = 30
end
end
Une bonne façon de procéder consiste à ne pas utiliser nargin
, mais à vérifier si les variables ont été définies à l'aide de exist('opt', 'var')
.
Exemple:
function [a] = train(x, y, opt)
if (~exist('opt', 'var'))
opt = true;
end
end
Voir cette réponse pour les pros de cette manière: Comment vérifier si un argument est fourni dans un appel de fonction?
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.