Passing variable from anonymous objective function to main workspace
Afficher commentaires plus anciens
Hello guys, I have a quick and simple question for you about passing variables from anonymous objective functions.
[x, fval] = fmincon(@(x)objfun(x,var1, var2),x0)
And in this objfun I am calculating and saving some information in variable data (cell). After optimization is done, I would like to have that variable into my workspace. Currently I am declaring it as a global variable and of course since it's bad practice. Is there an alternative way to do it?
Saving into variable data for each iteration seems a little bit tedious.
1 commentaire
Mario Malic
le 2 Nov 2020
Réponse acceptée
Plus de réponses (1)
Geoff Hayes
le 28 Juil 2020
Mario - consider nesting your optimization function within the main function and have it return the variable to the workspace. See Nested Functions for details. An example of this might be
function [data] = myMainFunction
data = [];
function myNestedFunction(x)
% do something
for k = 1:ceil(x)
data(k) = k;
end
end
% call the nested function
myNestedFunction(42);
end
The above code would be saved to a file named myMainFunction.m. It would be called from the command line as
>> x = myMainFunction;
1 commentaire
Mario Malic
le 28 Juil 2020
Catégories
En savoir plus sur Problem-Based Optimization Setup dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!