Programmatically testing whether a variable is an optimoptions object
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I was wondering if there was something like an isoptimoptions function that could be used to test in general whether a variable was generated by optimoptions(). The isa command alone will not seem to do it, because optimoptions objects occupy separate classes, depending on which solver the object was generated for.
>> opts1=optimoptions('lsqnonlin');
>> opts2=optimoptions('linprog');
>> whos opts1 opts2
Name Size Bytes Class Attributes
opts1 1x1 29913 optim.options.Lsqnonlin
opts2 1x1 14775 optim.options.Linprog
The following user-defined command seems to work, but I'm wondering if there are more direct alternatives,
function bool=isaoptimoptions(opts)
bool = startsWith(class(opts),'optim.options')
end
4 commentaires
Guillaume
le 28 Fév 2020
superclasses(obj)
will tell you the base classes (if any). isa on the base class would work.
Réponse acceptée
Guillaume
le 28 Fév 2020
Modifié(e) : Guillaume
le 28 Fév 2020
"those I've checked all seem to have 'optim.options.SolverOptions' as a parent in common."
In that case:
isa(opts, 'optim.options.SolverOptions')
edit:
Strangely enough the base class optim.options.SolverOptions is part of base matlab (or a toolbox I've got even though I've haven't got the optimisation toolbox) and available as an m file.
The comment in the m file does say that this is the "base class for Optimization Toolbox options", so yes, the above is what you want.
1 commentaire
Plus de réponses (1)
Luna
le 28 Fév 2020
Hi,
Maybe something like this helps?
metaClass = metaclass(opts1);
if contains(metaClass.Name,'optim.options')
disp('This is a optim.options object.')
else
end
Voir également
Catégories
En savoir plus sur Linear Programming and Mixed-Integer Linear Programming dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!