如何将fmincon C代码?

17日视图(30天)
默罕默德Bilal阿齐兹
默罕默德Bilal阿齐兹 2020年7月15日
评论道: Qiaohui他2023年4月19日
你好,我是使用stm32单片机和核我想实现建于fmincon优化算法的matlab单片机。我将这段代码转换成C .我有试过通过Matlab嵌入式C程序员但大多数函数不支持。万博1manbetx我也试图实现它,使其模型在仿真软件代码需要一个函数处理给我模型的误差。万博1manbetx我用Matlab 2020版本。谁能指引我如何实现这段代码对stm32而言。谢谢提前
1评论
Qiaohui他
Qiaohui他 2023年4月19日
嗨,我也面临这个问题,你能分享你的解决方案吗?

登录置评。

答案(1)

Ivo Houtzager
Ivo Houtzager 2020年9月27日
编辑:Ivo Houtzager 2020年9月27日
fmincon支持的代码生成,万博1manbetx但是有限制的语法和选项,可以使用,参见以下链接了解更多细节 //www.tianjin-qmedu.com/help/optim/ug/code-generation-in-fmincon.html。 下面的例子是基于提供的例子 //www.tianjin-qmedu.com/help/optim/ug/code-generation-for-optimization.html。
首先你必须安装“意法半导体核板仿真软件编码器支持包”。万博1manbetx万博1manbetx这可以通过使用“附加组件”按钮上,或者由donwloading安装程序的链接 //www.tianjin-qmedu.com/matlabcentral/fileexchange/58942-万博1manbetxsimul万博1manbetxink-coder-support-package-for-stmicroelectronics-nucleo-boards
在仿真软件中插入一块“MATLAB函数”模型。万博1manbetx打开“MATLAB函数”块,复制粘贴以下代码为例。
函数x = test_rosen ()
选择= optimoptions (“fmincon”,“算法”,“sqp”,“MaxIterations”,20);
[x fval] = fmincon (@rosenbrockwithgrad[1],[],[],[],[], 3, 3, 3, 3,[],选择);
函数(f, g) = rosenbrockwithgrad (x)
% f计算目标
f = 100 * (x (2) - (1) ^ 2) ^ 2 + (1 - x (1)) ^ 2;
如果nargout > 1%梯度要求
g = (-400 * (x (2) - x (1) ^ 2) * x (1) - 2 * (1 - x (1));
200 * (x (2) - x (1) ^ 2)];
结束
在主窗口仿真软件模型,选万博1manbetx择建模选项卡和开放”模式设置”。在配置窗口中,将“系统目标文件”设置为“导。薄层色谱在代码生成选项。设定嵌入式编码目标后,在硬件实现中设置“硬件板”选项正确的核板使用。
在主窗口仿真软件模型,选万博1manbetx择c代码选项卡并选择“生成代码”或“构建”(确实也使生成的代码)的丝带。这将创建文件夹name_ert_rtw包含生成的代码文件。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!