通用代码生成工作流
通用工作流代码生成的统计和机器学习工具箱™函数不是机器学习的对象函数模型描述的工作流程是一样的MATLAB®编码器™。有关详细信息,请参见开始使用MATLAB编码器(MATLAB编码器)。学习如何生成代码对象功能的机器学习模型,明白了介绍代码生成。
这个例子简要解释了通用代码生成工作流总结在这个流程图:
定义入口点函数
一个入口点函数,也称为顶级或主函数是一个函数定义为代码生成。因为你不能调用任何函数在顶层codegen
(MATLAB编码器),您必须定义一个入口点函数,调用code-generation-enabled函数,并生成C / c++代码的入口点函数的使用codegen
。内的所有函数的入口点函数必须支持代码生成。万博1manbetx
添加% # codegen
编译器指令(或编译指示)的入口点函数函数签名后,表明您打算为MATLAB算法生成代码。添加这个指令指示MATLAB代码分析器来帮助您诊断和解决违规,将导致错误在代码生成。看到检查代码的代码分析器(MATLAB编码器)。
例如,来生成代码,估计一个数据集使用的四分位范围位差
,定义这个函数。
函数r = iqrCodeGen (x)% # codegen% IQRCODEGEN估计四分位范围% x iqrCodeGen返回数据的四分位范围,%单一或双精度向量。r =差(x);结束
变长度输入宗量
作为输入参数。有关详细信息,请参见可变长度参数列表的代码生成
(MATLAB编码器)和为代码生成指定适应可变参数。
生成代码
设置编译器
生成C / c++代码,您必须访问一个编译器配置正确。MATLAB编码器定位和使用支持,安装编译器。万博1manbetx查看和修改默认的C编译器,输入:
墨西哥人设置
使用生成代码codegen
设置编译器后,生成代码的入口点函数的使用codegen
(MATLAB编码器)或者是MATLAB编码器应用,学习如何使用生成代码MATLAB编码器应用程序,请参阅通过使用MATLAB编码器应用生成墨西哥人功能(MATLAB编码器)。
在命令行生成代码,使用codegen
(MATLAB编码器)。因为C和c++静态类型语言中,您必须确定所有变量的属性在编译时的入口点函数。指定的数据类型和大小的所有输入时的入口点函数的调用codegen
通过使用arg游戏
选择。
指定数据类型和准确的输入数组的大小,通过MATLAB表达式表示的值和特定的数据类型和数组的大小。例如,指定所生成的代码
iqrCodeGen.m
必须接受一个双精度数字与100个元素列向量,输入:testX = randn (100 1);codegeniqrCodeGenarg游戏{testX}报告
的
报告
国旗生成一个代码生成报告。看到代码生成报告(MATLAB编码器)。指定至少一个维度可以拥有任意长度,使用
arg游戏
选项coder.typeof
(MATLAB编码器)如下。args {coder.typeof (example_value,size_vector,variable_dims)}
example_value
,size_vector
,variable_dims
指定的属性输入数组生成的代码可以接受。输入数组具有相同数据类型的示例值
example_value
。size_vector
输入数组的数组大小如果相应的variable_dims
值是假
。size_vector
是数组大小的上限,如果对应的吗variable_dims
值是真正的
。variable_dims
指定是否每个维度的数组变量大小或一个固定的大小。的值真正的
(逻辑1)意味着相应的维度有一个变量的大小;的值假
(逻辑0)意味着相应的维度有一个固定的大小。
指定一个适应输入方便当你有数据和数目不详的观察在编译时。例如,指定所生成的代码
iqrCodeGen.m
可以接受任何长度的双精度数字列向量,输入:testX = coder.typeof(0[正无穷,1][1,0]);codegeniqrCodeGenarg游戏{testX}报告
0
为example_value
值意味着数据类型双
因为双
是默认的数值数据类型的MATLAB。(正,1)
为size_vector
价值和(1,0)
为variable_dims
值意味着第一维的大小是可变的和无限,和第二个维度的大小是固定的,是1。请注意
规范变量大小的输入可以影响性能。有关详细信息,请参见控制内存分配适应可变数组(MATLAB编码器)。
指定一个字符数组,如支持名称-值对参数,指定字符数组常量使用万博1manbetx
coder.Constant
(MATLAB编码器)。例如,假设“名字”
是一个有效名称-值对的理由吗iqrCodeGen.m
,和相应的值价值
是数字。然后输入:codegeniqrCodeGenarg游戏{testX, coder.Constant(“名字”),值}报告
更多细节,请参阅在命令行生成C代码(MATLAB编码器)和指定入口点函数输入的属性(MATLAB编码器)。
构建类型
MATLAB编码器可以为这些类型生成代码:
墨西哥人(MATLAB可执行)函数
独立的C / c++代码
独立的C / c++代码编译为一个静态库
独立的C / c++代码编译成动态链接库
独立的C / c++代码编译为可执行
您可以指定构建类型使用配置
选择codegen
(MATLAB编码器)。设置代码生成选项的更多细节,请参阅配置构建设置(MATLAB编码器)。
默认情况下,codegen
生成一个墨西哥人的功能。一个墨西哥人的函数是一个C / c++程序,从MATLAB是可执行的。您可以使用一个墨西哥人功能加速MATLAB算法和测试生成的代码的功能和运行时的问题。有关详细信息,请参见MATLAB算法加速(MATLAB编码器)和为什么测试墨西哥人在MATLAB函数吗?(MATLAB编码器)。
代码生成报告
您可以使用报告
国旗产生代码生成报告。这份报告可以帮助您调试代码生成问题和视图生成的C / c++代码。有关详细信息,请参见代码生成报告(MATLAB编码器)。
验证生成的代码
测试一个墨西哥人函数来验证生成的代码提供了相同的功能与原始MATLAB代码。执行这个测试,运行墨西哥人使用相同的输入函数用于运行最初的MATLAB代码,然后比较结果。运行墨西哥人在MATLAB函数生成独立的代码还可以检测并修复运行时错误,更难诊断在生成独立的代码。更多细节,请参阅为什么测试墨西哥人在MATLAB函数吗?(MATLAB编码器)。
通过一些数据来验证是否位差
,iqrCodeGen
,iqrCodeGen_mex
返回相同的四分位范围。
testX = randn (100 1);r =差(testX);r_entrypoint = iqrCodeGen (testX);r_mex = iqrCodeGen_mex (testX);
通过比较输出isequal
。
isequal (r, r_entrypoint, r_mex)
isequal
返回逻辑1(真正的)如果所有的输入都是平等的。
你也可以验证函数使用一个测试文件和墨西哥人coder.runTest
(MATLAB编码器)。有关详细信息,请参见从MATLAB代码生成测试代码(MATLAB编码器)。
另请参阅
codegen
(MATLAB编码器)