主要内容

代码生成简介

MATLAB®编码器™从支持代码生成的统计和机器学习工具箱™函数生成可读和可移植的C和c++代码。万博1manbetx您可以将生成的代码作为源代码、静态库或动态库集成到项目中。您还可以在MATLAB环境中使用生成的代码来加速MATLAB代码的计算密集型部分。

生成C/ c++代码需要MATLAB编码器并具有以下局限性:

  • 使用生成代码时,不能在顶层调用任何函数codegen(MATLAB编码器).方法中调用该函数入口点函数,然后从入口点函数生成代码。入口点函数,也称为顶级主要的函数,是为代码生成而定义的函数。入口点函数中的所有函数都必须支持代码生成。万博1manbetx

  • MATLAB编码器限制也适用于统计和机器学习工具箱的代码生成。详细信息请参见支持C/ c++代码生成的MATLAB语言特性万博1manbetx(MATLAB编码器)

  • “统计和机器学习工具箱”中的代码生成不支持稀疏矩阵。万博1manbetx

  • 有关每个函数的代码生成使用说明和限制,请参阅函数参考页上的代码生成部分。

有关支持代码生成的“统计和机器学习工具箱”函数的列表,请参见万博1manbetx函数列表(C/ c++代码生成)

代码生成工作流程

可以通过几种方式为统计和机器学习工具箱函数生成C/ c++代码。

  • 非机器学习模型的目标函数的通用代码生成工作流

    通用代码生成工作流

    定义一个入口点函数调用支持代码生成的函数,生成C/ c++代码的入口点函数通过使用万博1manbetxcodegen(MATLAB编码器),然后验证生成的代码。入口点函数,也称为顶级主要的函数,是为代码生成而定义的函数。因为您不能在顶层使用codegen,必须定义一个入口点函数。入口点函数中的所有函数都必须支持代码生成。万博1manbetx

    详细信息请参见通用代码生成工作流程

  • 机器学习模型的目标函数的代码生成工作流(包括预测随机knnsearchrangesearch,以及增量学习对象函数)

    机器学习模型的目标函数的代码生成工作流

    通过使用保存一个训练好的模型saveLearnerForCoder,并定义一个入口点函数,该函数通过使用加载保存的模型loadLearnerForCoder并调用对象函数。然后使用生成入口点函数的代码codegen(MATLAB编码器),并验证生成的代码。入口点函数的输入参数不能是分类或回归模型对象。因此,您需要通过使用saveLearnerForCoder而且loadLearnerForCoder

    您还可以生成用于分类和回归的机器学习模型预测的单精度C/ c++代码。对于单精度代码生成,指定名称-值对参数“数据类型”、“单”的附加输入loadLearnerForCoder函数。

    具体请参见示例

    您还可以生成用于预测支持向量机(SVM)模型、决策树模型和用于分类和回归的决策树集合的定点C/ c++代码。万博1manbetx这种类型的代码生成需要定点设计器™。

    定点代码生成工作流

    定点代码生成需要一个额外的步骤,该步骤定义预测所需变量的定点数据类型。通过使用生成的数据类型函数创建定点数据类型结构generateLearnerDataTypeFcn,并使用结构作为的输入参数loadLearnerForCoder在一个入口函数中。您还可以在生成代码之前优化定点数据类型。

    详细信息请参见支持向量机预测的定点代码生成

  • 代码生成工作流预测而且更新使用支持向量机或线性二元学习器的树模型、支持向量机模型、线性模型或多类纠错输出码(ECOC)分类模型的函数

    带有编码器配置器的预测和更新功能的代码生成工作流

    训练一个模型后,通过使用创建一个编码器配置器learnerCoderConfigurer,通过使用生成代码generateCode,然后验证生成的代码。您可以配置代码生成选项,并使用对象属性指定模型参数的编码器属性。在您使用新的数据或设置重新训练模型之后,您可以在生成的C/ c++代码中更新模型参数,而不必重新生成代码。该特性减少了重新生成、重新部署和重新验证C/ c++代码所需的工作。

    详细信息请参见使用编码器配置器预测和更新的代码生成

代码生成应用

将机器学习模型的预测集成到Simulink中万博1manbetx®,使用MATLAB函数块或统计和机器学习工具箱库中的Simulink块。万博1manbetx具体请参见以下示例:

统计和机器学习工具箱函数的代码生成还可以与其他工具箱(如System object™和Stateflow)一起使用®,如以下例子所述:

有关代码生成的更多应用,请参阅以下示例:

另请参阅

(MATLAB编码器)||||

相关的话题