主要内容

代码生成的quadprog背景

什么是代码生成?

代码生成是MATLAB的转换®代码以C/ c++代码使用MATLAB编码器™.代码生成需要MATLAB编码器许可证。

通常,您使用代码生成将代码部署到没有运行MATLAB的硬件上。

例如,请参见为quadprog生成代码.有关其他优化求解器中的代码生成,请参见为fmincon生成代码为fsolve生成代码,或为lsqcurvefit或lsqnonlin生成代码

代码生成的需求

  • quadprog金宝app支持使用codegen(MATLAB编码器)函数或MATLAB编码器你一定有一个MATLAB编码器生成代码的许可。

  • 目标硬件必须支持标准的双精度浮点计算。金宝app不能为单精度或定点计算生成代码。

  • 代码生成目标不使用与MATLAB求解器相同的数学内核库。因此,代码生成解决方案可能因求解器解决方案而异,特别是金宝搏官方网站对于条件差的问题。

  • quadprog不支持金宝app问题用于代码生成的参数。

    [x, fval] = quadprog(问题)%不支持金宝app
  • 所有quadprog输入矩阵如一个Aeq,乌兰巴托必须充实,不能稀疏。您可以将稀疏矩阵转换为完整的完整的函数。

  • 乌兰巴托参数必须具有与中的列数相同的条目数H或者必须是空的[]

  • 对于涉及嵌入式处理器的高级代码优化,还需要嵌入式编码器®许可证。

  • 您必须包含以下选项quadprog并使用optimoptions.选项必须包括算法选项,设置为“激活集”

    选择= optimoptions (“quadprog”“算法”“激活集”);[x, fval exitflag] = quadprog (H f A、b Aeq,说真的,磅,乌兰巴托,x0,选项);
  • 代码生成支持以下选项:金宝app

    • 算法——必须“激活集”

    • ConstraintTolerance

    • MaxIterations

    • ObjectiveLimit

    • OptimalityTolerance

    • StepTolerance

  • 生成的代码对选项有有限的错误检查。更新选项的推荐方法是使用optimoptions,而不是点符号。

    选择= optimoptions (“quadprog”“算法”“激活集”);选择= optimoptions(选择,“MaxIterations”1 e4);%推荐选择。MaxIterations = 1 e4;%不推荐
  • 不要从文件中加载选项。这样做可能会导致代码生成失败。相反,在代码中创建选项。

  • 如果指定不受支持的选项,则该选项通常在代码生成期间被忽略。金宝app为了得到可靠的结果,只指定受支持的选项。金宝app

生成的代码不是多线程的

默认情况下,在MATLAB环境之外使用的生成代码使用非多线程的线性代数库。因此,此代码的运行速度可能比MATLAB环境中的代码慢得多。

如果您的目标硬件有多个核心,那么您可以通过使用定制的多线程LAPACK和BLAS库来获得更好的性能。要将这些库合并到生成的代码中,请参见通过使用LAPACK调用加速独立代码中的线性代数(MATLAB编码器)

另请参阅

|(MATLAB编码器)|

相关的话题