- Wrap up all of that code in yet another function, let's call it myOptimization.m. Then, declare that whole function as extrinsic and call it from your MATLAB Function block.
- Given your cost function looks like a pretty run-of-the-mill MPC cost function, have you thought about just using the MPC Toolbox block? https://www.mathworks.com/help/mpc/ref/mpccontroller.html
fmincon in MATLAB Function block (SIMULINK)
3 次查看(过去 30 天)
显示 更早的评论
Hello! I'd like to do MPC controller by using MATLAB. Could u help me with my problem? I try to use 'fmincon' in MATLAB Function block in simulink. There is my code in Function block in simulink:
function u = fcn(unused_parameters)
fun = @(x)100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
x0 = [-1,2];
A = [1,2];
b = 1;
coder.extrinsic('fmincon');
x = fmincon(fun,x0,A,b)
u=x(1,1)
And Matlab gave me this error: "Function handles cannot be passed to extrinsic functions.
Function 'MPC' (#23.171.174), line 7, column 13: "fun" Launch diagnostic report."
Thanks for your suggestions!
0 个评论
采纳的回答
Sebastian Castro
2017-7-13
As the error message suggests, you can't use function handles (i.e. the fmincon cost function) as an argument to an extrinsic function, unless that function handle is declared in an extrinsic function itself.
You can do one of 2 things:
- Sebastian
0 个评论
更多回答(1 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Model Predictive Control Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!