- Using nargin (or narginchk), is* and error. Check the Fundamental MATLAB Classes to get a feeling of the checks you need to perform.
- Using the validateattributes function.
- Using the inputParser class.
- Using try catch
- Compile it as a mex-function. You will need to specify the datatypes before compiling.
Hi, what should I do to get the 'Not enough input arguments'-error,
9 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Rebecca Sippel
le 9 Nov 2016
Réponse apportée : Clemens Lindscheid
le 11 Nov 2016
If I call my own function with not enough input arguments MATLAB realizes this not until the missing variable is used.
Example:
function d = inputErrorCheck(a,b,c)
if a > b
d = a+b;
else
d = a+c;
end;
end
Output:
>> inputErrorCheck(3,2)
ans = 5
>> inputErrorCheck(2,3)
Not enough input arguments.
Error in inputErrorCheck (line 6) d = a+c;
Is there a setting or something to get MATLAB to check the amount of input arguments before it starts the function?
Thanks!
0 commentaires
Réponse acceptée
Clemens Lindscheid
le 11 Nov 2016
Hi Rebecca,
your problem seems to be closely related to the question of strict data typing for function arguments in Matlab. As far as I know, you cannot do it automatically in Matlab. Matlab functions usually start with checking the number and data type of the input arguments manually, see e.g. gaussmf from the statistics toolbox with 7 lines of checking input arguments and 2 lines of actual code (R2014b).
There are several ways of checking the input arguments:
0 commentaires
Plus de réponses (1)
Mischa Kim
le 9 Nov 2016
Rebecca, yes. Use something like
function d = inputErrorCheck(a,b,vargin)
switch nargin
case 3
if a > b
d = a + b;
else
d = a + vargin;
end
case 2
d = a + b;
end
end
2 commentaires
Jan
le 10 Nov 2016
@Rebecca: There cannot be a switch in Matlab to restrict the number of inputs, because many built-in functions use optional arguments. It is a typical programming style in Matlab.
Voir également
Catégories
En savoir plus sur Function Creation dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!