Optional Arguments in Function as Struct Input
29 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Ingo Hermann
le 14 Jan 2025
Commenté : Ingo Hermann
le 16 Jan 2025
I have a Matlab function with many optional arguments which I want to call with these arguments recursively... This is just a short example, my real code is much more complexe and I don't want to share it here... I know that this function seems kind of nonesense.
function [out] = calculateHatches(vec, args)
arguments
vec
args.Limit = 0
args.Color = 'red'
args.Time = '12:00'
% (and many more argumnts)
end
% some calculations that give me out
out = []
if args.Limit==0
for i=1:10
nargs = args;
nargs.Limit = 1;
% n arguments might change here ...
% calculateHatches(vec,'Limit',nargs.Limit,'Color',nargs.Color,'Time',nargs.Time)
nout = calculateHatches(vec,nargs)
out = [out, nout]
end
end
end
However, this won't work, is there a way to makt it work?
calculateHatches(vec,nargs)
But I have too many optional arguments that change over time of programming too much, that I don't want to write it into the code. This would mean a lot of administration work.
calculateHatches(vec,'Limit',nargs.Limit,'Color',nargs.Color,'Time',nargs.Time)
0 commentaires
Réponse acceptée
Steven Lord
le 14 Jan 2025
3 commentaires
Stephen23
le 15 Jan 2025
"However, I can use eval to make it work somehow but this is not really nice ^^..."
EVAL is the opposite of nice. The MATLAB approach is to use a comma-separated list:
tmp = namedargs2cell(nargs);
out = calculateHatches(vec,tmp{:});
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Startup and Shutdown 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!