主要内容

代码生成简介

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

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

  • 通过使用时,您不能在生成代码时在最高级别调用任何功能代码根(MATLAB编码器)。而是在一个内调用该功能入口点功能,然后从入口点函数生成代码。入口点功能,也称为顶层或者基本的函数是您为代码生成定义的函数。入口点功能中的所有功能都必须支持代码生成。万博1manbetx

  • MATLAB编码器限制还适用于代码生成的统计信息和机器学习工具箱。有关详细信息,请参阅MATLAB语言功能支持C/C ++代码生成万博1manbetx(MATLAB编码器)

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

  • 有关每个功能的代码生成用法注释和限制,请参见“函数参考”页面上的代码生成部分。

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

代码生成工作流程

您可以通过多种方式生成统计信息和机器学习工具箱功能的C/C ++代码。

  • 一般代码生成的工作流,用于不是机器学习模型的对象功能的功能

    一般代码生成工作流程

    定义入口点调用支持代码生成的函数的函数,通过使用C/C ++代码为入口点函数生成C/C万博1manbetx ++代码代码根(MATLAB编码器),然后验证生成的代码。入口点功能,也称为顶层或者基本的函数是您为代码生成定义的函数。因为您无法使用最高级别调用任何功能代码根,您必须定义入口点功能。入口点功能中的所有功能都必须支持代码生成。万博1manbetx

    有关详细信息,请参阅一般代码生成工作流程

  • 机器学习模型对象功能的代码生成工作流(包括预测,,,,随机的,,,,Knnsearch,,,,rangesearch,和增量学习对象功能)

    机器学习模型对象功能的代码生成工作流程

    通过使用训练有素的模型Savelearnerforcoder并定义一个入口点功能,该功能通过使用LOADLEARNERNERNERFORCODER并调用对象函数。然后通过使用代码根(MATLAB编码器),并验证生成的代码。入口点函数的输入参数不能是分类或回归模型对象。因此,您需要使用SavelearnerforcoderLOADLEARNERNERNERFORCODER

    您还可以生成单精度的C/C ++代码,以预测用于分类和回归的机器学习模型。对于单精度代码生成,请指定名称值对参数“数据类型”,“单个”作为对LOADLEARNERNERNERFORCODER功能。

    有关详细信息,请参见这些示例

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

    定点代码生成工作流程

    定点代码生成需要一个附加的步骤,该步骤定义了预测所需的变量的固定点数据类型。通过使用由由数据类型的数据类型函数创建定点数据类型结构generatelearnerdatatypefcn,并将结构用作输入参数LOADLEARNERNERNERFORCODER在入口点功能中。您还可以在生成代码之前优化定点数据类型。

    有关详细信息,请参阅固定点代码生成用于SVM的预测

  • 代码生成工作流程预测更新使用SVM或线性二进制二进制学习者的树模型的功能,SVM模型,线性模型或多类错误校正输出代码(ECOC)分类模型

    使用编码器配置器的预测和更新功能的代码生成工作流程

    训练模型后,通过使用LEARNERNERNECODERCONFIGURER,通过使用GenerateCode,然后验证生成的代码。您可以配置代码生成选项并使用对象属性指定模型参数的编码器属性。在使用新数据或设置重新录制模型后,您可以在生成的C/C ++代码中更新模型参数,而无需再生代码。此功能减少了再生,重新部署和可忽视的C/C ++代码所需的努力。

    有关详细信息,请参阅用于预测和使用编码器配置器更新的代码生成

代码生成应用

将机器学习模型的预测集成到Simulink中万博1manbetx®,在统计信息和机器学习工具箱库中使用MATLAB功能块或Simulink块万博1manbetx。有关详细信息,请参见以下示例:

统计和机器学习工具箱功能的代码生成还可以与其他工具箱(例如System Object™和stateFlow)一起使用®,如这些示例中所述:

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

也可以看看

(MATLAB编码器)||||

相关话题