主要内容

线性最小二乘法的代码生成:背景

什么是代码生成?

代码是MATLAB的转换®使用代码的代码Matlab Coder™。代码需要一个Matlab编码器执照。

通常,您使用代码生成来部署未运行MATLAB的硬件上的代码。例如,您可以在机器人上部署代码,使用Lsqlin.优化运动或计划。

例如,看到为lsqlin生成代码。对于其他优化求解器中的代码生成,请参阅为fmincon生成代码为QuadProg生成代码为lsqcurvefit或lsqnonlin生成代码, 要么为fsolve生成代码

代码生成的要求

  • Lsqlin.金宝app支持使用代码生成使用Codegen.(MATLAB编码器)功能或者Matlab编码器应用程序。你必须有一个Matlab编码器生成代码的许可证。

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

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

  • 在Matlab中解决不受约束和未定的问题时,Lsqlin.呼叫莫德利维,返回基本解决方案。在代码生成中,返回的解决方案具有最小规范,通常不同。

  • Lsqlin.不支持金宝app问题代码生成的参数。

    [x,fval] = lsqlin(问题)% 不支持金宝app
  • 全部Lsqlin.输入矩阵如一种AEQ., 和UB.必须完整,不是稀疏。您可以通过使用稀疏矩阵将稀疏矩阵转换为完整满的功能。

  • UB.参数必须具有与列数相同的条目C或者必须是空的[]

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

  • 您必须包含选项Lsqlin.并使用它指定它们优化选择。选项必须包括算法选项,设置为'active-set'

    选项= Optimoptions('lsqlin''算法''active-set');[x,fval,ExitFlag] = LSQLIN(C,D,A,B,AEQ,BEQ,LB,UB,X0,选项);
  • 代码生成支持这些选项:金宝app

    • 算法- 必须是'active-set'

    • 约束特许

    • 最大

    • Objectivelimit.

    • 最优法

    • StepTolerance.

  • 生成的代码有限错误检查选项。建议更新选项的方法是使用优化选择,不是点表示法。

    opts = Optimoptions('lsqlin''算法''active-set');选择= Optimoptions(选择,'maxtations',1E4);% 受到推崇的opts.maxIterations = 1E4;% 不建议
  • 不要从文件加载选项。这样做会导致代码生成失败。相反,在代码中创建选项。

  • 如果指定不支持的选项,则在代码生成期间通常会忽略该选项。金宝app有关可靠的结果,仅指定支持的选项。金宝app

生成的代码不多

缺省情况下,MATLAB环境外部使用的生成代码使用不多线程的线性代数库。因此,此代码可以在MATLAB环境中的代码中运行显着慢。

如果您的目标硬件有多个核心,则可以使用自定义多线程LAPACK和BLAS库来实现更好的性能。要在生成的代码中纳入这些库,请参阅使用Lapack呼叫加快生成的独立代码中的线性代数(MATLAB编码器)

也可以看看

|||(MATLAB编码器)

相关话题