Use of Function Handle and fmincon in Embedded MATLAB
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi,
I would like to perform the following 2 lines of code in the MATLAB Function found in the Simulink library (user-defined function):
F = @(x) eval('x(1)^2 + x(2) - 5'); [x,fval] = fmincon(F,x0,[],[],Aeq,beq,lb,ub);
However, I received a coder error saying that: 'This kind of expression is not supported'. Is there any way I can get around this problem?
Any help or suggestion is greatly appreciated! Thanks alot!
0 commentaires
Réponses (2)
Sean de Wolski
le 1 Mar 2012
No need for evil-eval:
F = @(x)x(1)^2 + x(2) - 5;
2 commentaires
Sean de Wolski
le 1 Mar 2012
web([docroot '/toolbox/eml/ug/bsvqvgq.html'])
I'm sorry I do not have more time to look at this now.
Kaustubha Govind
le 2 Mar 2012
As Sean pointed out, here is the documentation about support for function handles with code generation - Code Generation for Function Handles.
Btw, support for function handles was supported for code-generation only added fairly recently. So you might be using an older release where they are not supported in an Embedded MATLAB Function block. In that case, I would recommend defining a MATLAB-file with your code in it:
F = @(x) eval('x(1)^2 + x(2) - 5');
[x,fval] = fmincon(F,x0,[],[],Aeq,beq,lb,ub);
And call that function with the coder.extrinsic (previously eml.extrinsic) directive. Since eval and fmincon are not amongst the functions supported for code-generation, you will have to declare them as extrinsic functions anyway.
0 commentaires
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!