Function Argument Validation, Compare to Irrational Number or Expression
Mostrar comentarios más antiguos
Is there a way to use MATLAB's built-in validation functions to compare an argument to an expression or funciton output?
I want to do the following:
function out = myfun(x)
arguments
x (1,1) double {mustBeGreaterThan(x,pi)}
end
out = foo;
end
Since pi is a function, which is not allowed in the native validation functions, the above code throws an error. Instead I have to define a custom validation function to compare the argument to pi.
function out = myfun(x)
arguments
x (1,1) double {mustBeGreaterThanPi(x)}
end
out = foo;
end
function mustBeGreaterThanPi(x)
if x <= pi
error('Value must be greater than pi.')
end
end
The validation block cannot pass pi to the custom validation function, so pi must be built into the function. This is a complete pain in the neck if we want to compare, say, ten arguments to ten different irrationals, repeating decimals, or simple expressions; we must define ten custom validation functions, unless we get creative with passing scalars or strings (we could pass c to the validation function where an error is thrown if value <= c*pi, for example).
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Argument Definitions en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!