主要内容

编码器。CodeConfig

用于从生成C/C++代码的配置参数MATLAB代码

描述

一种编码器。CodeConfig对象包含所需的配置参数codegen用于生成静态库,动态链接库或可执行程序。将物体传递给codegen函数的配置选项。

创建

描述

例子

cfg=coder.config(build_type为指定的构建类型创建代码生成配置对象,该类型可以是静态库、动态链接库或可执行程序。如果嵌入式编码器®产品没有安装,它创建一个编码器。CodeConfig对象。否则,它将创建编码器。EmbeddedCodeConfig对象。

cfg=coder.config(build_type“是”,假)创建一个编码器。CodeConfig对象的指定输出类型,即使已安装Embedded Coder。

输入参数

全部展开

从生成的C/ c++代码构建的输出,指定为该表中的值之一。

价值 描述
“自由” 静态库
“DLL” 动态链接库
'可执行程序' 可执行程序

属性

全部展开

工具链的编译器优化或调试设置,指定为该表中的值之一。

价值 描述
“加快构建”

优化构建以缩短构建时间。

“快跑”

优化构建以更快地运行可执行文件。

'debug'

优化构建以进行调试。

“指定”

启用customtoolchainoptions.用于自定义所选工具链中工具的设置的属性。如果是工具链属性设置为'自动找到安装的工具链',然后设置BuildConfiguration“指定”变化工具链到所定位的工具链。

生成代码的代码格式化选项,指定为表中的值之一。

价值 描述
“Clang-format”

代码生成器将生成的代码按照Clang格式文件。

“汽车”

使用内部启发式来确定生成的代码是否格式化Clang格式或者是MathWorks®格式化工具。

确定生成的代码是否格式化Clang格式,在一个coder.config对象,设置冗长选择“详细”

'mathworks'

使代码生成器恢复为MathWorks格式化工具。

代码替换库生成的代码,指定为表中的值之一:

价值 描述
“没有”

此值为默认值。

不使用代码替换库。

命名代码替换库

生成对特定平台、编译器或标准代码替换库的调用。命名库的列表取决于:

  • 安装包的支持。金宝app

  • 系统目标文件、语言、标准数学库和设备供应商配置。

  • 无论您是创建和注册代码替换库,使用嵌入式编码器产品。

兼容库依赖于这些参数:

  • TargetLang

  • TargetLangStandard

  • ProdHWDeviceType在硬件实现配置对象中。

嵌入式编码器提供更多库和创建和使用自定义代码替换库的能力。

MATLAB®编码器™的最小集#包括所选代码替换库所需的头文件的语句。

在设置此参数之前,请验证编译器是否支持要使用的库。金宝app如果选择编译器不支持的参数值,则可能发生编译器错误。金宝app

笔记

MATLAB编码器软件不支持TLC回调。金宝app

编译时间递归的最大函数专业数,指定为正整数。禁止在Matlab代码中递归,设置CompileTimeRecursionLimit对于0,默认的编译时间递归限制足以满足需要此类递归的大多数递归函数。如果代码生成因编译时间递归限制而失败,并且您希望编译时间递归,请尝试增加限制。或者,更改MATLAB代码,以便代码生成器使用运行时间递归。看达到编译时间递归限制

常量文件夹执行的最大指令数。在某些情况下,代码生成需要特定的指令保持不变。如果常量折叠在这些指令常量折叠之前停止,则代码生成失败。在这种情况下,增加的价值恒定折叠时间

生成代码中的MATLAB编码器优化

使用生成c++代码时接口类的名称CppInterfaceStyle着手'方法'.在这种情况下,MATLAB入门点函数的生成代码由C ++类中包含的方法组成,其中名称指定CppInterfaceClassName.此属性在设置时无效CppInterfaceStyle“功能”

使用类接口生成C ++代码

为您生成代码的MATLAB入口点函数生成的c++代码的接口风格。默认情况下,入口点函数变成c++函数。如果你选择'方法',则入口点函数成为c++类中的方法。使用属性指定类的名称CppInterfaceClassName

使用类接口生成C ++代码

附属国:

  • 环境TargetLang“c++”支持这个参数。

是否为MATLAB代码中的包生成C ++命名空间,指定为此表中的值之一。

价值 描述
真正的

此值为默认值。

代码生成器为MATLAB代码中的包生成c++名称空间。看将生成的c++代码组织到命名空间中

假的

代码生成器不会为MATLAB代码中的包生成c++名称空间。

附属国:

  • 环境TargetLang“c++”支持这个参数。

数据类型:逻辑

生成的C ++代码的命名空间。除非您指定非空字符向量,否则代码生成器不会在命名空间中生成代码。

将生成的c++代码组织到命名空间中

附属国:

  • 环境TargetLang“c++”支持这个参数。

为Mathworks代码生成的C ++代码的命名空间。如果将此属性指定为空字符向量,则代码生成器不会生成此类命名空间。

将生成的c++代码组织到命名空间中

附属国:

  • 环境TargetLang“c++”支持这个参数。

数据类型:字符

是否为MATLAB类生成c++类或C风格结构,指定为该表中的一个值。

价值 描述
真正的

此值为默认值。

代码生成器为MATLAB类生成c++类。看生成MATLAB类的C++类

假的

代码生成器为MATLAB类生成C风格的结构。

附属国:

  • 环境TargetLang“c++”支持这个参数。

数据类型:逻辑

在MATLAB代码中为某些低级向量和矩阵操作生成的代码中用于BLAS库调用的回调类,指定为字符向量。

如果您为某些低级向量和矩阵函数指定了BLAS回调类,那么代码生成器将通过使用BLAS库的CBLAS C接口生成BLAS调用。回调类提供了CBLAS头文件的名称、CBLAS数据类型的名称以及链接到BLAS库所需的信息。如果该参数为空,代码生成器将为矩阵函数生成代码,而不是BLAS调用。

使用BLAS调用加快生成的独立代码中的矩阵操作

在MATLAB代码中为FFT函数生成的代码中FFTW库调用的回调类,指定为字符向量。

为了提高FFT函数的执行速度,代码生成器生成对您在回调类中指定的FFTW库的调用。如果该参数为空,代码生成器将使用自己的FFT函数算法,而不是调用FFTW库。

使用FFTW库调用在生成的独立代码中加速快速傅立叶变换

自定义代码,显示在从MATLAB代码生成的每个C/C++头文件顶部附近,除了rtwtypes.hrtwhalf.h,指定为字符向量。

在编译生成的代码时,包括要添加到Include路径的文件夹。将包含文件夹列表指定为字符串数组、字符向量的单元格数组或字符向量。

多个文件夹名,指定为该表中的一个值。

价值 描述
字符串数组

中的字符串数组CustomInclude.. 例如cfg。CustomInclude = ["C:\项目","C:\自定义文件"];

字符向量的单元格数组

中字符向量的单元格数组CustomInclude.. 例如cfg。CustomInclude = {'C:\项目','C:\自定义文件'};

特征向量

单独包含文件夹pathsep性格CustomInclude.. 例如cfg。CustomInclude = ['C:\项目'路径sep 'C:\自定义文件'];

笔记

使用字符向量指定代码配置对象中的多个条目将在将来的版本中删除。使用字符串阵列和字符阵列,而不是字符向量。有关更多信息,请参见兼容性的考虑

要包含在生成的初始化函数中的自定义代码,指定为字符向量。

Lapack库的回调类呼叫在Matlab代码中为某些线性代数函数生成的代码,指定为字符向量。

如果您指定了一个LAPACK回调类,对于某些线性代数函数,代码生成器通过使用LAPACK库的LAPACKE C接口产生LAPACK调用。回调类提供LAPACKE头文件的名称和链接到LAPACK库所需的信息。如果该参数为空,代码生成器将生成线性代数函数的代码,而不是LAPACK调用。

通过使用LAPACK调用加速独立代码中的线性代数

静态库文件与生成的代码链接,指定为字符串数组,字符向量或字符向量的单元格数组。

多个静态库文件名,指定为该表中的一个值。

价值 描述
字符串数组

中的字符串数组CustomLibrary. 例如cfg。CustomLibrary =(“myLib1.lib”、“myLib2.lib”);

字符向量的单元格数组

中字符向量的单元格数组CustomLibrary. 例如cfg。CustomLibrary ={‘myLib1.lib’,‘myLib2.lib};

特征向量

用。分隔静态库文件名pathsep性格CustomLibrary. 例如cfg.customlibrary = ['mylib1.lib'pathsep'mylib2.lib'];

笔记

使用字符向量指定代码配置对象中的多个条目将在将来的版本中删除。使用字符串阵列和字符阵列,而不是字符向量。有关更多信息,请参见兼容性的考虑

要编译并与生成的代码链接的源文件,指定为字符串数组、字符向量的单元格数组或字符向量。

构建过程首先在当前文件夹中搜索源文件,然后在您指定的包含文件夹中CustomInclude..如果在搜索路径上的多个文件夹中出现具有相同名称的源文件,则构建过程可能会使用不同的文件,而不是您指定的文件。

假设你指定foo.cpp作为源文件。如果富科foo.cpp都在搜索路径上,您无法确定构建过程是否使用富科foo.cpp

多个源文件名,指定为该表中的一个值。

价值 描述
字符串数组

中的字符串数组CustomSource.. 例如cfg。CustomSource =(“mySrc1.c”、“mySrc2.c”);

字符向量的单元格数组

中字符向量的单元格数组CustomSource.. 例如cfg。CustomSource ={‘mySrc1.c’,‘mySrc2.c};

特征向量

将源文件名用pathsep性格CustomSource.. 例如cfg。CustomSource = ['mySrc1.c' pathsep 'mySrc2.c'];

笔记

使用字符向量指定代码配置对象中的多个条目将在将来的版本中删除。使用字符串阵列和字符阵列,而不是字符向量。有关更多信息,请参见兼容性的考虑

指定代码显示在每个生成的顶部附近.c. cpp文件(除了rtwhalf.crtwhalf.cpp),在任何功能之外。将代码指定为字符向量。

请勿指定C静态函数定义。

出现在生成的终止函数中的代码,指定为字符向量。

在选定的工具链中自定义工具的设置,指定为单元格数组。

依赖关系:

  • 工具链属性确定在单元格数组中出现哪些工具和选项。

  • 设置BuildConfiguration财产指定使customtoolchainoptions.

首先,获取当前设置。例如:

cfg=coder.config('lib');cfg。BuildConfiguration =“指定”;opt = cfg.customtoolchainoptions.

然后,编辑其中的值选择

这些值来自工具链定义文件和第三方编译器选项。看自定义工具链登记

生成代码中的数据类型替换,指定为该表中的值之一。

价值 描述
“CBuiltIn”

此值为默认值。

代码生成器使用内置C数据类型。

“CoderTypeDefs” 代码生成器使用预定义的数据类型rtwtypes.h

深度学习网络代码生成的配置对象,指定为Coder.mkldnnconfig对象或一个编码器。一种RMNEONConfig对象。

一种Coder.mkldnnconfig对象包含特定于使用Intel进行深度学习的c++代码生成的参数®MKL-DNN。创建Coder.mkldnnconfig对象,使用coder.deeplearningconfig. 例如:

cfg=coder.config('mex');cfg。TargetLang =“c++”;cfg。DeepLearningConfig =编码器。DeepLearningConfig (“mkldnn”);

一种编码器。一种RMNEONConfig对象包含特定于使用ARM进行深度学习的c++代码生成的参数®计算库。创建一个编码器。一种RMNEONConfig对象,使用coder.deeplearningconfig. 例如:

cfg=coder.config('lib');cfg。TargetLang =“c++”;cfg。DeepLearningConfig =编码器。DeepLearningConfig (“arm-compute”);

深度学习网络的代码生成需要deep learning Toolbox™和MATLAB编码器界面为深度学习库金宝app支持包。

MKL-DNN的深度学习网络代码生成ARM Compute库的深度学习网络代码生成

依赖:如果DeeplearningConfig是集,codegenTargetLangc++

对象描述,指定为字符向量。

动态内存分配模式,指定为此表中的一个值。

价值 描述
“阈值”

此值为默认值。

代码生成器在变量大小阵列的堆上动态分配内存,其大小(以字节为单位)大于或等于DynamicMemoryAllocationThreshold

'AllvariablesizeAray' 代码生成器动态地为堆上所有大小可变的数组分配内存。
“关闭”

代码生成器静态地为堆栈上的可变大小数组分配内存。

无限的可变大小阵列需要动态内存分配。

依赖关系:

  • EnableVariableSizing支持这个参数。

  • 设置这一点DynamicMemoryAllocation“阈值”启用DynamicMemoryAllocationThreshold参数。

生成可变大小数据的代码

在生成的C/ c++函数的接口上实现动态分配的数组,指定为该表中的值之一。

价值 描述
“汽车”

这是默认值。如果你设置TargetLang参数“c++”“C”,该值相应地表现为相同的选项。

“C”

生成的代码使用C风格emxArray用于实现动态分配阵列的数据结构。看见在生成的函数接口中使用C数组

“c++”

如果你设置TargetLang参数“C”,则禁用此值。

否则,生成的代码将使用编码器::数组类模板来实现动态分配的数组。看在生成的函数接口中使用动态分配的C ++数组

附属国:

  • EnableVariableSizing支持这个参数。

可变大小数组的动态内存分配的大小阈值,指定为正整数。代码生成器对大小(以字节为单位)大于或等于阈值的可变大小数组使用动态内存分配。

附属国:

  • 环境DynamicMemoryAllocation“阈值”支持这个参数。

生成可变大小数据的代码

自动外部函数调用,指定为表中的值之一。

价值 描述
真正的

此值为默认值。

代码生成器将一些常见的可视化函数视为外部函数。您不必通过使用将这些函数声明为外部函数编码器.Extrinsic..此功能可以减少您花费的时间,使代码适用于代码生成。

假的 代码生成器不会将常见可视化函数视为外部函数,除非您通过使用声明它们为外部函数编码器.Extrinsic.

一些常见的可视化功能是情节disp,数字.看使用MATLAB引擎在生成的代码中执行函数调用

自动并行化对于循环,指定为此表中的值之一。

价值 描述
假的

此值为默认值。

代码生成器不会自动并行化对于循环。

真正的

代码生成器自动并行化对于生成的代码中的循环。自动并行化可以显著提高生成代码的执行速度。看在生成的代码中自动并行化循环

数据类型:逻辑

梅检优化,指定为此表中的一个值。

价值 描述
真正的

此值为默认值。

如果可能,代码生成器使用梅检优化。为了优化复制连续数组元素的代码,梅检优化将代码替换为梅检呼叫当编译时知道要复制的元素数时,代码生成器使用MemcpyThreshold属性以确定是否使用该优化。看memcpy优化

假的

代码生成器不使用梅检优化。

并行化议案- 将指定为此表中的值之一。

价值 描述
真正的

此值为默认值。

如果可能的话,代码生成器使用OpenMP库生成并行运行的循环迭代。

假的

代码生成器对待议案-循环作为对于-循环。

议案

使用OpenMP库与即时(JIT)编译不兼容。如果启用EnableOpenMP真正的,代码生成器使用JIT编译和处理议案-循环作为对于-循环。

运行时递归支持,指定为该表中的值之一。金宝app

价值 描述
真正的

此值为默认值。

在生成的代码中允许使用递归函数。

假的

生成的代码中不允许使用递归函数。

一些编码标准,如MISRA®,不允许递归。增加生成符合MISRA C的代码的可能性®, 放EnableRuntimerEvursion.假的

如果您的MATLAB代码需要运行时递归和EnableRuntimerEvursion.假的,代码生成失败。

递归函数的代码生成

可变大小的数组支持,指定为此表中的值之一金宝app。

价值 描述
真正的

此值为默认值。

允许使用可变大小的数组生成代码。

假的

代码生成不允许变量大小阵列。

附属国:

  • 启用动态内存分配

可变大小数组的代码生成

指定为该表中的值之一的文件分区模式。

价值 描述
“MapMFileToCFile”

此值为默认值。

代码生成器为每个MATLAB语言文件生成单独的C/ c++文件。

“SingleFile” 代码生成器为C / C ++函数生成一个文件,该函数映射到MATLAB入学点函数。代码生成器为实用程序功能生成单独的C / C ++文件。

MATLAB编码器如何划分生成的代码

仅生成源代码,指定为此表中的值之一。

价值 描述
假的

此值为默认值。

代码生成器生成C/ c++源代码并构建目标代码。

真正的

代码生成器生成C / C ++源代码,但不会调用Make命令或构建对象代码。当您迭代修改MATLAB代码并生成C / C ++代码时,仅生成代码可以节省时间。

生成代码中的注释,指定为该表中的值之一。

价值 描述
真正的

此值为默认值。

代码生成器在生成的代码中放置注释。

假的 代码生成器不会在生成的代码中放置注释。

例C/ c++主文件生成,指定为表中值之一。

价值 描述
“GenerateCodeOnly”

此值为默认值。

代码生成器生成示例C / C ++主函数,但不编译它。

“不生成”

代码生成器不会生成一个示例C/ c++主函数。

'generatecodeandcompile'

代码生成器生成示例C / C ++ MAIN函数,并将其编译为创建测试可执行文件。此可执行文件不会返回输出。

如果是GencodeOnly.参数是真正的,代码生成器不编译C/ c++ main函数。

main函数示例是一个模板,用于帮助您编写C/ c++ main函数,调用生成的C/ c++代码。看使用示例主函数合并生成的代码

构建过程中的makefile生成,指定为此表中的值之一。

价值 描述
真正的

此值为默认值。

代码生成器在构建过程中生成一个makefile。

假的 代码生成器在构建过程中不会生成生成文件。在post-code-generation命令中指定用于post-code-generation处理的指令,包括编译和链接。看构建过程定制

为非有限数据生成支持文件,指金宝app定为该表中的值之一。

价值 描述
真正的

此值为默认值。

代码生成器为非有限数据生成支持文件(金宝appINF.),仅当生成的代码使用非有限数据时。

假的

代码生成器总是为非有限数据生成支持文件(金宝appINF.).

附属国:

  • 环境金宝appspreessnonfinite.真正的支持这个参数。

代码生成报告,指定为该表中的值之一。

价值 描述
假的

此值为默认值。

代码生成器仅在出现错误或警告消息或设置LaunchReport真正的

真正的 代码生成器产生代码生成报告。

指定硬件板的对象。创建编码器。硬件对象,使用coder.hardware. 例如:

cfg=coder.config('lib');hw=编码器硬件(“树莓Pi”);硬件=硬件;

在使用之前coder.hardware,必须安装硬件的支持包。金宝app

依赖关系:

  • 环境硬件定制特定硬件单板的硬件实现对象和其他配置参数。

  • 如果DeeplearningConfig设置为编码器。一种RMNEONConfig对象和硬件那么是空的吗codegen设置GencodeOnly.财产真正的

注意:

  • 假设您创建了一个编码器。CodeConfig目的CFG.在Matlab会话中并在另一个Matlab会话中使用它。如果第二次会话的MATLAB主机没有指定的硬件板cfg。硬件属性时,此参数将恢复为其默认值。默认值为[]

硬件实现对象,为C/ c++代码生成指定特定于硬件的配置参数。coder.config创建一个编码器。CodeConfig对象与之硬件实现属性设置为编码器.Hardwareimplementation.对象,该对象具有MATLAB主机的默认参数值。

为了防止由于多个包含头文件而导致的编译错误,代码生成器也会产生#如果未定义#pragma一次在生成的头文件中的构造。如果项目使用使用相同预处理器宏的不同文件,则使用#pragma一次构造。的编译行为#pragma一次不是标准化的。

指定头型作为表中的值之一。

价值 描述
UseIncludeGuard

代码生成器生成#如果未定义风格#包括警卫。

使用Praagmaonce. 代码生成器生成#pragma一次风格#包括警卫。

显示潜在的行主要布局效率问题,指定为此表中的值之一。

价值 描述
真正的

代码生成报告显示了由于行主布局造成的潜在效率问题。(此值为默认值。)

假的 代码生成报告不会显示与数组布局相关的问题。

行主数组布局的代码设计

赋值float和double zeromemset,指定为该表中的值之一。

价值 描述
真正的

此值为默认值。

如果可能,代码生成器使用memset浮点零赋值给连续数组元素的优化。要指定连续的数组元素,请使用memset优化使用memset呼叫当编译时已知要分配的元素数时,代码生成器使用MemcpyThreshold属性以确定是否使用该优化。看膜组优化

假的

代码生成器不使用memset优化浮点数和双零到连续数组元素的分配。

在MathWorks调用另一个MathWorks函数(指定为该表中的值之一)的所有调用站点上的内联行为。

价值 描述
'速度'

此值为默认值。

使用内部启发式istics来确定是否在呼叫站点上进行内联。此设置通常会导致高度优化的代码。

“总是”

始终在调用站点执行内联。

“可读性”

几乎从不内联函数调用,除非调用非常小的函数。尽可能保持代码的模块化,而不牺牲太多的速度。结果是高可读性的代码。

'绝不'

永远不会引入函数调用。导致最大可读性。此设置可能会显着降低生成的代码的性能。

即使你选择了“总是”或者是'绝不'在某些情况下,选择的选项,代码生成器可能不会严格遵循该指令。例如,如果存在冲突,coder.inline(总是)coder.inline('never')置于函数体内的指令将重写此选项。有关更多信息,请参见不同内联控件之间的交互

控制内联以微调性能和可读性生成的代码

在您编写的函数调用MathWorks函数或MathWorks函数调用您编写的函数的所有调用站点上的内联行为。指定为该表中的值之一。

价值 描述
'速度'

此值为默认值。

使用内部启发式istics来确定是否在呼叫站点上进行内联。此设置通常会导致高度优化的代码。

“总是”

始终在调用站点执行内联。

“可读性”

几乎从不内联函数调用,除非调用非常小的函数。尽可能保持代码的模块化,而不牺牲太多的速度。结果是高可读性的代码。

'绝不'

永远不会引入函数调用。导致最大可读性。此设置可能会显着降低生成的代码的性能。

即使你选择了“总是”或者是'绝不'在某些情况下,选择的选项,代码生成器可能不会严格遵循该指令。例如,如果存在冲突,coder.inline(总是)coder.inline('never')置于函数体内的指令将重写此选项。有关更多信息,请参见不同内联控件之间的交互

控制内联以微调性能和可读性生成的代码

在所有呼叫网站上的内联行为,您写的函数调用您写入的另一个函数,指定为此表中的值之一。

价值 描述
'速度'

此值为默认值。

使用内部启发式istics来确定是否在呼叫站点上进行内联。此设置通常会导致高度优化的代码。

“总是”

始终在调用站点执行内联。

“可读性”

几乎从不内联函数调用,除非调用非常小的函数。尽可能保持代码的模块化,而不牺牲太多的速度。结果是高可读性的代码。

'绝不'

永远不会引入函数调用。导致最大可读性。此设置可能会显着降低生成的代码的性能。

即使你选择了“总是”或者是'绝不'在某些情况下,选择的选项,代码生成器可能不会严格遵循该指令。例如,如果存在冲突,coder.inline(总是)coder.inline('never')置于函数体内的指令将重写此选项。有关更多信息,请参见不同内联控件之间的交互

控制内联以微调性能和可读性生成的代码

自动打开代码生成报告,指定为此表中的值之一。

价值 描述
假的

此值为默认值。

如果出现错误或警告,或者发电机报告真正的,代码生成器会产生报告,但未打开报告。

真正的 代码生成器生成并打开代码生成报告。

迭代次数少于此阈值的循环可以由代码生成器自动展开。这个阈值适用于所有人对于-循环在MATLAB代码中。对一个人对于-loop,Acoder.unroll在循环优先于循环展开优化之前立即放置的指令。阈值也可以适用于一些对于在代码生成期间生成的循环。

unr

将MATLAB源代码作为注释包含在生成的代码中,指定为表中的值之一。

价值 描述
假的

此值为默认值。

代码生成器不会在生成的代码中插入MATLAB源代码作为注释。代码生成器在函数横幅中不包含MATLAB函数签名。

真正的

代码生成器将MATLAB源代码作为注释插入生成的代码中。可跟踪性标记紧跟在每一行源代码的前面。跟踪标签帮助您定位相应的MATLAB源代码。看跟踪生成的C/ c++代码到MATLAB源代码

如果您有嵌入式编码器,则在代码生成报告中,可跟踪标记链接到源代码。

代码生成器还包括功能横幅中的MATLAB函数签名。

附属国:

  • 发电建议支持这个参数。

跟踪生成的C/ c++代码到MATLAB源代码

生成标识符的最大字符数,指定为范围[31,2048]的正整数。此属性适用于生成的函数、类型定义和变量名。为了避免被目标C/ c++编译器截断标识符,指定一个与目标C/ c++编译器的最大标识符长度匹配的值。

此属性不适用于导出的标识符,例如生成的入门点函数或emxArray API函数。如果导出标识符的长度超过目标C编译器的最大标识符长度,则目标C / C ++编译器截断导出的标识符。

默认值:

  • 如果TargetLang被设定为“C”的默认值maxidlength.31

  • 如果TargetLang被设定为“c++”的默认值maxidlength.1024.

memcpy或memset优化所需的最小大小(以字节为单位),指定为正整数。

为了优化复制连续数组元素的生成代码,代码生成器尝试使用梅检称呼。为了优化为连续数组元素分配文字常数的生成的代码,代码生成器尝试用一个替换代码memset称呼。

字节数是要复制或赋值的数组元素数乘以C/ c++数据类型所需的字节数。

如果要复制或赋值的元素数量是可变的(在编译时不知道),则代码生成器将忽略MemcpyThreshold财产。

memcpy优化膜组优化

多实例可重入代码,指定为此表中的一个值。

价值 描述
假的

此值为默认值。

代码生成器不会生成多实例的重码代码。

真正的

代码生成器会产生可重复使用的可重用,多实例代码。

重码代码.GPU编码器™产品不支持此选项。金宝app

对象名称,指定为字符向量。

从生成的C/ c++代码构建的输出,指定为该表中的值之一。

价值 描述
“自由” 静态库
“DLL” 动态链接库
'可执行程序' 可执行程序

通过参考入口点函数传递结构,指定为此表中的值之一。

价值 描述
真正的

此值为默认值。

生成的代码通过引用传递结构,这通过最小化入口点函数边界处的参数份数来减少内存使用和执行时间。

笔记

写入结构参数字段的入口点函数覆盖输入值。

假的 生成的代码通过价值传递结构。

此参数仅适用于入口点函数。

GPU编码器始终设置PassStructByReference属性为true。

在生成的代码中通过引用或值传递结构参数

命令自定义MEX函数生成后的构建处理codegen,指定为字符向量。

构建过程定制

生成使用n维索引的代码,指定为该表中的值之一。

价值 描述
假的

生成使用一维索引的代码。(此值为默认值。)

真正的 生成使用n维索引的代码。

生成使用n维索引的代码

要保留在生成的代码中的变量名,指定为该表中的值之一。

价值 描述
“没有”

此值为默认值。

代码生成器不必保留任何变量名称。它可以重用满足可变重用要求的任何变量。

如果您的代码使用大型结构或数组,则设置蜜饯“没有”可以减少内存使用或提高执行速度。

'usernames'

代码生成器保留与您在MATLAB代码中定义的变量对应的名称。它不会将变量名替换为另一个名称,也不会将您的名称用于另一个变量。为了提高可读性,设置蜜饯'usernames'.然后,您可以更容易地跟踪生成代码中的变量,返回到MATLAB代码中的变量。

环境蜜饯'usernames'不会阻止优化从生成的代码中删除变量,也不会阻止C/ c++编译器在生成的二进制代码中重用变量。

“所有”

保留所有变量名。此参数值禁用变量重用。它仅用于测试或调试,不用于生产代码。

在生成的代码中保留变量名

导出有关代码生成信息的变量的名称,指定为字符向量。代码生成器在Base Matlab工作区中创建此变量。此变量包含有关代码生成设置,输入文件,生成文件和代码生成消息的信息。

以编程方式访问代码生成报告信息编码器。ReportInfo属性

电位差报告,指定为表中值之一:

价值 描述
真正的 代码生成器报告生成的代码和MATLAB代码之间的潜在行为差异。潜在的差异列在代码生成报告的一个选项卡上。电位差是在运行时仅在某些条件下发生的差值。
假的 代码生成器不会报告潜在的差异。

潜在的差异报告

代码生成器不得用于函数或变量的名称列表,指定为字符串数组,字符向量或字符向量的单元格数组。

多个保留名,指定为该表中的一个值。

价值 描述
字符串数组

中的字符串数组reasurednameArray.. 例如cfg.reservednameArray = [“保留1”,“保留2”,“保留3”]

字符向量的单元格数组

中字符向量的单元格数组reasurednameArray.. 例如cfg.reservednameArray = {'保留1','保留2','保留3'}

字符向量

中以分号分隔的保留名称列表reasurednameArray.. 例如cfg.reservednameArray ='保留1;保留2;保留3'

笔记

使用字符向量指定代码配置对象中的多个条目将在将来的版本中删除。使用字符串阵列和字符阵列,而不是字符向量。有关更多信息,请参见兼容性的考虑

生成使用行主数组布局的代码,指定为该表中的值之一。

价值 描述
假的

生成使用列主数组布局的代码。(此值为默认值。)

真正的 生成使用行主数组布局的代码。

生成使用行主数组布局的代码

在生成的入口点函数的开始处生成对初始化函数的调用,指定为该表中的值之一。

价值 描述
真正的

此值为默认值。

在生成的入口点函数的开头包含对初始化函数的调用。生成的代码包括检查,以确保初始化函数只被调用一次,即使有多个入口点函数。

假的

生成的入口点函数不包括对初始化函数的调用。

使用生成的初始化和终止功能

附属国:

  • 环境MultiInstanceCode真正的禁用此参数。

运行时错误检测和生成代码中的报告指定为此表中的值之一。

价值 描述
假的

此值为默认值。

生成的代码不会检查错误,例如界限数组索引。

真正的

生成的代码检查错误,例如界限数组索引。

错误报告软件使用将错误消息写入stderr.它使用中止终止应用程序。如果中止不可用,您必须提供它们。这中止函数突然终止程序。如果您的系统支持信号,您可以捕金宝app获中止信号(SIGABRT),以便控制程序的终止。

错误信息是英文的。

生成检测和报告运行时错误的独立C/ c++代码

整数溢出支持,指定为该表中的一个值金宝app。

价值 描述
真正的

此值为默认值。

代码生成器生成处理整数溢出的代码。溢出会饱和到数据类型所能表示的最小值或最大值。

假的

代码生成器不生成处理整数溢出的代码。不要设定SaturateOnIntegerOverflow假的除非您确定您的代码不依赖于整数溢出支持。金宝app如果禁用整数溢出支持和运行时错误检查,则生成的代码会产生溢出的错金宝app误。如果禁用整数溢出支持并禁用运行时错误检查,则溢出行为取决于您的目金宝app标C编译器。在C标准中,整数溢出的行为是未定义的。但是,大多数C编译器覆盖溢出。

此参数仅适用于MATLAB内置整数类型。它不适用于双打,单打或固定点数据类型。

禁用对整数溢出或金宝app非整数溢出的支持

每个应用程序的最大堆栈使用量,以字节为单位,指定为正整数。设置一个小于可用堆栈大小的限制。否则,可能会发生运行时堆栈溢出。C编译器检测并报告堆栈溢出。

禁用对整数溢出或金宝app非整数溢出的支持

金宝app支持非限定值,指定为此表中的一个值。

价值 描述
真正的

此值为默认值。

如果generatenonfinitefilesifused.被设定为真正的,代码生成器产生代码以支持非小型值(金宝appINF.),除非他们被使用。

如果generatenonfinitefilesifused.被设定为假的,代码生成器始终产生代码以支持非小型值(金宝appINF.).

假的

代码生成器不生成支持非有限值的代码。金宝app

禁用对整数溢出或金宝app非整数溢出的支持

用于生成代码的语言,指定为“C”“c++”. 如果指定C++,代码生成器将C代码封装到.CPP文件中,以便使用C++编译器和与外部C++应用程序的接口。它不生成C++类。

依赖:如果DeeplearningConfig是集,codegenTargetLangc++

“汽车”选项使用TargetLang设置为选择为生成的代码使用的语言标准。默认语言标准取决于您选择的语言。对于C语言,默认库是“C99 (ISO)”.对于C ++,默认库是'C ++ 11(ISO)'

用于生成代码的语言标准,指定为以下字符向量之一:

  • “C89 /人私下偷偷收藏盒式(ANSI)”

  • “C99 (ISO)”

  • “c++ 03 (ISO)”

  • 'C ++ 11(ISO)'

代码生成器使用标准库进行对数学和其他操作的调用。

改变标准数学库

工具链用于构建C / C ++库或可执行程序,指定为字符向量。可用的工具链列表取决于主机平台,并且可以包括您添加的自定义工具链。如果未指定工具链,则代码生成器定位已安装的工具链。

注意:

  • 假设您创建了一个编码器。CodeConfig目的CFG.在MATLAB会话中,并在另一个MATLAB会话中使用它。如果第二个会话的MATLAB主机没有在cfg。工具链属性时,此参数将恢复为其默认值。默认值为'自动找到安装的工具链'

代码生成进度显示,指定为此表中的一个值。

价值 描述
假的

此值为默认值。

代码生成器不显示代码生成进度。

真正的

代码生成器显示代码生成进度,包括代码生成阶段和编译器输出。

是否在MATLAB命令行显示代码生成进度的状态,指定为该表中的值之一。

价值 描述
“沉默”

如果代码生成成功而没有警告,所有消息都会被抑制,包括生成报告时。

显示警告和错误信息。

'信息'

此值为默认值。

相比“沉默”模式,如果代码生成成功,将显示以下附加消息:

  • 代码生成成功

  • 链接到生成的报告(如果有)

“详细”

除了显示的消息'信息'将显示模式、代码生成状态和目标生成日志消息。

例子

全部崩溃

编写一个MATLAB函数,从中可以生成代码。下面的例子使用了这个函数myadd返回其输入的总和。

函数C = MyAdd(A,B)C = A + B;结束

创建用于生成独立C/C++代码(静态库、动态链接库或可执行程序)的配置对象。例如,创建用于生成静态库的配置对象。

cfg=coder.config('lib');

更改不希望使用默认值的属性值。例如,在生成的C/ c++代码中启用运行时错误检测和报告。

cfg。RuntimeChecks = true;

通过使用生成代码codegen.将配置对象传递给codegen通过使用配置选项。指定输入参数是标量级的。

codegenmyadd配置CFG.-  args.{1}报告

选择功能

要使用构建类型的默认配置参数“自由”“DLL”,或'可执行程序', 使用codegen选项配置:自由-配置:dll,或-config:exe., 分别。然后,您不必创建并传递配置对象codegen

兼容性的考虑

全部展开

未来版本中的行为改变

未来版本中的行为改变

介绍了R2011a