代码生成的quadprog
背景
代码生成是什么?
代码生成是MATLAB的转换®代码来使用C / c++代码MATLAB编码器™。代码生成需要MATLAB编码器许可证。
通常,使用代码生成部署代码没有运行MATLAB的硬件上。
例如,看到的为quadprog生成代码。在解决其他优化代码生成,明白了为fmincon生成代码,为fsolve生成代码,或为lsqcurvefit或lsqnonlin生成代码。
代码生成的需求
quadprog
万博1manbetx支持使用生成代码codegen
(MATLAB编码器)函数或MATLAB编码器应用程序,你必须有一个MATLAB编码器许可来生成代码。目标硬件必须支持标准的双精度浮点计算。万博1manbetx你不能为单精度或定点计算生成代码。
代码生成目标不使用MATLAB解决数学内核库一样。因此,代码生成解决方案可以解决不同的解决方案,特别是对万博 尤文图斯条件不佳的问题。
quadprog
不支持万博1manbetx问题
理由代码生成。[x, fval] = quadprog(问题)%不支持万博1manbetx
所有
quadprog
输入矩阵等一个
,Aeq
,磅
,乌兰巴托
必须完整,而不是稀疏。稀疏矩阵转换为可以充分利用完整的
函数。的
磅
和乌兰巴托
参数必须有相同数量的条目的列数H
或必须是空的[]
。对于高级代码优化包括嵌入式处理器,您还需要嵌入式编码器®许可证。
你必须包括选项
quadprog
并指定使用optimoptions
。必须包括的选项算法
选项,设置为“激活集”
。选择= optimoptions (“quadprog”,“算法”,“激活集”);[x, fval exitflag] = quadprog (H f A、b Aeq,说真的,磅,乌兰巴托,x0,选项);
代码生成支持这些选项:万博1manbetx
算法
——必须“激活集”
ConstraintTolerance
MaxIterations
ObjectiveLimit
OptimalityTolerance
StepTolerance
生成的代码错误检查选项有限。推荐的方式来更新一个选项是使用
optimoptions
,而不是点符号。选择= optimoptions (“quadprog”,“算法”,“激活集”);选择= optimoptions(选择,“MaxIterations”1 e4);%推荐选择。MaxIterations = 1 e4;%不推荐
不从文件加载选项。这样做会导致代码生成失败。相反,在代码中创建选项。
如果您指定一个选项不支持,在代码生成选项通常是忽略。万博1manbetx对于可靠的结果,指定仅支持选项。万博1manbetx
生成的代码不是多线程
默认情况下,生成的代码用于在MATLAB环境使用线性代数库不是多线程。因此,这段代码可以在MATLAB环境中运行显著低于代码。
如果你的目标硬件有多个核心,可以取得更好的性能通过使用定制的多线程LAPACK和bla库。将这些库在生成的代码中,看到的加快生成独立的代码通过使用线性代数LAPACK调用(MATLAB编码器)。
另请参阅
quadprog
|codegen
(MATLAB编码器)|optimoptions