Use of Function Handle and fmincon in Embedded MATLAB
조회 수: 2 (최근 30일)
이전 댓글 표시
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
답변 (2개)
Sean de Wolski
2012년 3월 1일
No need for evil-eval:
F = @(x)x(1)^2 + x(2) - 5;
댓글 수: 2
Sean de Wolski
2012년 3월 1일
web([docroot '/toolbox/eml/ug/bsvqvgq.html'])
I'm sorry I do not have more time to look at this now.
Kaustubha Govind
2012년 3월 2일
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
참고 항목
카테고리
Help Center 및 File Exchange에서 Entering Commands에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!