How can I generate code using Simulink PLC Coder for fminsearch function?
显示 更早的评论
Hi, I'm trying to generate code for a MATLAB Function Block where I use the method fminsearch in Simulink, but I get some errors.
I decided to create a model with just the MATLAB Function Block and a code using fminsearch (as simple as possible) like this:
function y = myfminsearch(u)
%#codegen
y = fminsearch(@myfun,u);
function f = myfun(x)
f = (x+5)^2+5;
Even if the method is supposed to work for code generation I get this error:
Call to unsupported function 'frexp' detected.
Function 'eps' (#42.910.941), line 31, column 17
Function 'fminsearch' (#41.14645.14653), line 451, column 25
Function 'fminsearch' (#41.14645.14653), line 451, column 25
Function 'fminsearch' (#41.6622.6656), line 195, column 53
Function 'fminsearch' (#41.6622.6656), line 195, column 53
Function 'MATLAB Function1' (#25.34.54), line 3, column 5
Function 'MATLAB Function1' (#25.34.54), line 3, column 5
Component: stateflow | Category: PLC Coder errorOpen
Errors occurred during codegenIR Construction failed
Component: simulink | Category: PLC Coder error
Can you see what the problem is? I don't really understand the error... Do you think I can't use fminsearch for code generation?
Thank you guys!
6 个评论
frexp() however is not a Matlab function. It is C++ function from the cmath library.
It is hard to help you or venture conjectures without looking at the code that actually generates the error.
Julian Peña
2014-10-15
José-Luis
2014-10-15
I am not a Simulink expert, but have you tried to define the function inside the block?
function y = fcn(u)
f = @(x) (x+5).^2 + 5;
y = fminsearch(f,u);
Julian Peña
2014-10-15
Xavier
2016-6-7
I have the same problem. the @ character is not supported I thing you have to write fminsearch('myfun',x,options)
回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Simulink PLC Coder 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!