Borrar filtros
Borrar filtros

Use of Function Handle and fmincon in Embedded MATLAB

1 visualización (últimos 30 días)
rach
rach el 1 de Mzo. de 2012
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!

Respuestas (2)

Sean de Wolski
Sean de Wolski el 1 de Mzo. de 2012
No need for evil-eval:
F = @(x)x(1)^2 + x(2) - 5;
  2 comentarios
rach
rach el 1 de Mzo. de 2012
Hi Sean,
The code that I typed above is a simplified version of what I actually have in my code. The actual code is:
F = @(x) eval(costFunction);
[x,fval] = fmincon(F,x0,[],[],Aeq,beq,lb,ub);
where costFunction is a string generated from a rather long and complicated function. Hence, 'eval' is necessary in this case.
The problem I am facing now is that embedded matlab does not seem to be able to handle the function handle. Is there any way to get around this limitation?
Thank you!
Sean de Wolski
Sean de Wolski el 1 de Mzo. de 2012
web([docroot '/toolbox/eml/ug/bsvqvgq.html'])
I'm sorry I do not have more time to look at this now.

Iniciar sesión para comentar.


Kaustubha Govind
Kaustubha Govind el 2 de Mzo. de 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.

Categorías

Más información sobre Startup and Shutdown en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by