主要内容

coder.MexCodeConfig

用于从生成MEX函数的配置参数马铃薯代码

描述

一种coder.MexCodeConfig对象包含的配置参数codegen使用MEX函数时使用。将物体传递给codegen函数的配置选项。

创建

描述

例子

cfg = coder.config(墨西哥人)创造一个coder.MexCodeConfig对象。

cfg = coder.config创造一个coder.MexCodeConfig对象。

特性

展开全部

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

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

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

恒定输入检查模式,指定为此表中的值之一。

价值 描述
'签名'

此值为默认值。

当您调用MEX函数时,它会检查您为常量输入参数提供的值是否为代码生成时指定的值。

您可以调用MEX函数和原始MATLAB函数,具有相同的参数。因此,您可以使用相同的测试文件进行两种功能。

检查这些值会降低MEX函数的执行速度。

“IgnoreValues”

调用MEX函数时,它会忽略为常量输入参数提供的值。它使用在代码生成时指定的值。

您可以使用相同的测试文件,而无需检查常量参数值。

“删除”

代码生成器从MEX函数签名中删除常量输入参数。调用MEX函数时,不会为常量输入参数提供值。

此选项提供向后兼容性。

MEX函数中的常量输入检查

是否为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代码生成的每个C/ c++头文件的顶部附近,除了RTWTYPES.H.RTWHALF.H.,指定为字符向量。

编译生成的代码时要添加到包含路径的包含文件夹。将包含文件夹的列表指定为字符向量。在字符向量中,使用分隔符分隔包含文件夹Pathsep.特点。例如:

cfg = coder.config('mex');cfg.custominclude = ['c:\ project'pathsep'c:\自定义文件'];

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

静态库文件链接生成的代码,指定为字符向量。在字符向量中,用aPathsep.特点。

编译源文件并与生成的代码链接,指定为字符向量。在字符向量中,用分隔符分隔源文件名Pathsep.特点。

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

假设你指定foo.cpp.作为源文件。如果foo.cfoo.cpp.如果两者都在搜索路径上,则无法确定生成过程是否使用foo.cfoo.cpp.

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

不要指定C静态函数定义。

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

用于深度学习网络的代码生成的配置对象,指定为aCoder.mkldnnconfig对象。

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

cfg = coder.config (墨西哥人的);cfg。TargetLang =“c++”;cfg.deeplearningconfig = coder.deeplearningconfig('mkldnn');

深度学习网络的代码生成需要deep learning Toolbox™和MATLAB编码器™深度学习库接口万博1manbetx支持包。

基于MKL-DNN的深度学习网络代码生成

笔记

使用ARM的深度学习不支持MEX代码生成万博1manbetx®计算库。

依赖:如果深度学习配置是集,codegenTargetLangc++

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

价值 描述
'临界点'

此值为默认值。

代码生成器在堆上为大小(以字节为单位)大于或等于的可变大小数组动态分配内存DynamicMemoryallocationThreshold.

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

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

无界可变大小数组需要动态内存分配。

依赖关系:

  • 启用可变大小支持这个参数。

  • 设置此动态内存分配'临界点'启用DynamicMemoryallocationThreshold.范围。

生成可变大小数据的代码

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

价值 描述
“汽车”

这是默认值。如果你设置TargetLang参数“c++”'C',此值对应于相同的标志。

'C'

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

“c++”

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

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

依赖:

  • 启用可变大小支持这个参数。

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

依赖:

  • 环境动态内存分配'临界点'支持这个参数。

生成可变大小数据的代码

表达回声,指定为此表中的值之一。

价值 描述
真正的

此值为默认值。

MEX函数显示不与分号结尾的语句的输出。

MEX函数不显示没有以分号结束的语句的输出。

此属性不适用于常见的可视化函数,例如disp情节,或数字当它们被称为外在功能时。MEX功能显示这些功能的输出,无论是否存在分号或值回声表达式

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

价值 描述
真正的

此值为默认值。

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

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

一些常见的可视化功能包括情节disp,数字.看非本征函数

C编译器调试模式,指定为此表中的一个值。

价值 描述

此值为默认值。

代码生成器未启用C编译器调试模式。

真正的

代码生成器启用C编译器调试模式。启用调试模式时,C编译器不会优化代码。汇编更快,但执行速度较慢。

即时(JIT)编译模式,指定为此表中的值之一。

价值 描述

此值为默认值。

代码生成器通过生成和编译C/ c++代码来创建C/ c++ MEX函数。

真正的

代码生成器使用即时(JIT)编译技术来生成MEX函数。代码生成器创建一个JIT MEX函数,该函数包含MATLAB代码的抽象表示。当您运行JIT MEX函数时,MATLAB会在内存中生成可执行代码。

加快MEX功能,设置使能JIT真正的

JIT编译与某些代码生成功能和选项不兼容,例如自定义代码或使用OpenMP库。如果指定了JIT编译,而代码生成器无法使用它,它将生成一个带有警告的C/C++MEX函数。如果使能JITEnableOpenmp.真正的,以及您的代码使用议案,代码生成器使用JIT编译并处理议案- 乐队循环。

使用JIT汇编加快MEX生成

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

价值 描述
真正的

此值为默认值。

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

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

启用生成的MEX函数的分析,指定为该表中的值之一。

价值 描述

此值为默认值。

代码生成器没有在生成的MEX函数中包含分析工具。

真正的

代码生成器包括生成的MEX功能中的分析仪器。然后,您可以使用Matlab Profiler配置MEX。看利用MATLAB Profiler分析MEX函数

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

价值 描述
真正的

此值为默认值。

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

代码生成器对待议案- 乐队循环。

议案

使用OpenMP库与即时(JIT)编译不兼容。如果使能JITEnableOpenmp.真正的,代码生成器使用JIT编译和处理议案- 乐队循环。

运行时递归支持,指定为该表中的值之一。万博1manbetx

价值 描述
真正的

此值为默认值。

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

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

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

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

递归函数的代码生成

可变大小的数组支持,指定为此表中的值之一万博1manbetx。

价值 描述
真正的

此值为默认值。

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

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

依赖:

  • 启用动态内存分配

可变大小数组的代码生成

外部函数调用支持,指定为此表中的值之一。万博1manbetx

价值 描述
真正的

此值为默认值。

对于外部函数,代码生成器会产生对MATLAB函数的调用。代码生成器不会生成函数的内部代码。

代码生成器忽略一个外部函数。它不为调用MATLAB函数生成代码。如果外部函数影响MATLAB函数的输出,代码生成器将发出编译错误。

如果你设置外形,生成的MEX函数无法显示来自的运行时间错误断言MATLAB代码中的陈述。MEX函数报告它无法显示错误消息。查看错误消息,设置外形真正的并再次生成MEX函数。

的价值外形影响MEX函数如何为rand生成随机数兰迪,兰德.如果外形真正的,MEX函数使用MATLAB全局随机数流生成随机数。否则,MEX函数使用自包含的随机数生成器。

非本征函数

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

价值 描述
“MapMFileToCFile”

此值为默认值。

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

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

MATLAB编码器分区如何生成代码

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

价值 描述

此值为默认值。

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

真正的

代码生成器生成C/ c++源代码,但不调用make命令或构建对象代码。当您在修改MATLAB代码和生成C/ c++代码之间进行迭代时,只生成代码可以节省时间。

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

价值 描述
真正的

此值为默认值。

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

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

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

价值 描述

此值为默认值。

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

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

全局数据同步模式,指定为该表中的值之一。

价值 全球数据说明 对常量全局数据的描述

“SyncAlways”(默认)

此值为默认值。

同步MEX函数入口和出口的全局数据,以及外部调用,以实现MATLAB和生成的MEX函数之间的最大一致性。为了最大化性能,如果外部调用不改变全局数据,则使用此选项coder.extrinsic-同步:关闭选项关闭这些调用的同步。

验证MEX函数项和外部调用后常量全局数据的一致性。如果MATLAB全局工作区中的全局数据值与MEX函数中的编译时常量全局值不一致,则MEX函数以错误结束。使用coder.extrinsic-同步:关闭在特定的外在调用后关闭一致性检查的选项。

“SyncAtEntryAndExits”

仅在MEX函数进入和退出时同步全局数据。为了最大限度地提高性能,如果只有少数外部调用更改全局数据,请将此选项与coder.extrinsic同步:选项要打开这些呼叫的同步。

仅验证MEX函数条目的常量全局数据。如果MATLAB全局工作空间中的全局数据值与MEX函数中的编译时间常数全局值不一致,MEX函数以错误结尾。使用coder.extrinsic同步:选项打开一致性检查后,特定的外部调用。

“NoSync”

禁用同步。在禁用同步之前,请确认MEX函数没有与MATLAB全局数据交互。否则,MATLAB和MEX函数之间就会发生不一致。

禁用一致性检查。

为全局数据生成代码

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

价值 描述
真正的

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

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

行主要数组布局的代码设计

赋值float和double zeromemset,指定为此表中的一个值。

价值 描述
真正的

此值为默认值。

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

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

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

价值 描述
“速度”

此值为默认值。

使用内部试探法确定是否在调用站点执行内联。这种设置通常会导致高度优化的代码。

“总是”

始终在呼叫站点执行内联。

'可读性'

除了调用非常小的功能外,几乎没有内向函数调用。尽可能保留代码的模块性,而不会牺牲太多的速度。导致高度可读的代码。

“永远”

从不内联函数调用。结果是最大的可读性。此设置可能会显著降低生成代码的性能。

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

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

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

价值 描述
“速度”

此值为默认值。

使用内部试探法确定是否在调用站点执行内联。这种设置通常会导致高度优化的代码。

“总是”

始终在呼叫站点执行内联。

'可读性'

除了调用非常小的功能外,几乎没有内向函数调用。尽可能保留代码的模块性,而不会牺牲太多的速度。导致高度可读的代码。

“永远”

从不内联函数调用。结果是最大的可读性。此设置可能会显著降低生成代码的性能。

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

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

在你写的函数调用你写的另一个函数的所有调用站点上的内联行为,指定为表中的值之一。

价值 描述
“速度”

此值为默认值。

使用内部试探法确定是否在调用站点执行内联。这种设置通常会导致高度优化的代码。

“总是”

始终在呼叫站点执行内联。

'可读性'

除了调用非常小的功能外,几乎没有内向函数调用。尽可能保留代码的模块性,而不会牺牲太多的速度。导致高度可读的代码。

“永远”

从不内联函数调用。结果是最大的可读性。此设置可能会显著降低生成代码的性能。

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

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

内存完整性检查,指定为此表中的值之一。

价值 描述
真正的

此值为默认值。

生成的代码检测内存完整性违反,并使用诊断消息停止执行。

生成的代码不会检测内存完整性违规。

环境IntegrityChecks可以提高性能。然而,如果不进行内存完整性检查,违规将导致不可预知的行为。集IntegrityChecks只有您已验证阵列绑定检查和维度检查,则不需要。环境IntegrityChecks还将禁用运行时堆栈。

控制运行时间检查

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

价值 描述

此值为默认值。

如果出现错误或警告,或者GenerateReport真正的,代码生成器生成报告,但不打开报告。

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

将MATLAB源代码列为生成的代码中的注释,指定为此表中的值之一。

价值 描述

此值为默认值。

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

真正的

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

代码生成器还在函数横幅中包含MATLAB函数签名。

依赖:

  • GenerateComments支持这个参数。

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

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

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

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

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

memcpy优化memset优化

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

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

构建过程定制

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

价值 描述

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

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

生成使用n维索引的代码

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

价值 描述
'没有任何'

此值为默认值。

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

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

“用户名”

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

环境PreserveVariableNames“用户名”不会阻止优化从生成的代码中删除变量,或阻止C / C ++编译器重用生成的二进制代码中的变量。

“所有”

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

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

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

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

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

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

潜在的差异报告

代码生成器不能对函数或变量使用的名称列表,指定为字符向量或字符串标量。要指定多个保留名称,请使用分号分隔的保留名称列表保留名称数组.例如,cfg.reservednameArray =“储备1;保留2;保留3”

响应性检查,指定为此表中的值之一。

价值 描述
真正的

此值为默认值。

您可以使用Ctrl + C停止执行生成的MEX函数。

要结束长期运行的MEX功能,您可能必须终止MATLAB。

控制运行时间检查

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

价值 描述

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

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

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

整数溢出支持,指定为该表中的一个值万博1manbetx。

价值 描述
真正的

此值为默认值。

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

代码生成器不会生成处理整数溢出的代码。不设置SaturateOnIntegerOverflow除非您确定您的代码不依赖于整数溢出支持。万博1manbetx如果禁用整数溢出支持而启用完整性检查,则生成的代码将产生溢出错误万博1manbetx。如果你禁用整数溢出支持和完整性检查,溢出行为取决于你的目标C编译万博1manbetx器。在C标准中,整数溢出的行为是未定义的。然而,大多数C编译器都会在溢出时进行包装。

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

禁用对整数溢出或万博1manbetx非有限值的支持

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

控制堆栈空间使用

生成代码中使用的语言,指定为'C'“c++”.如果指定c++,代码生成器将C代码包装到.cpp文件中,这样您就可以使用c++编译器并与外部c++应用程序进行接口。它不生成c++类。

依赖:如果深度学习配置是集,codegenTargetLangc++

例子

全部折叠

写一个可以从中生成代码的MATLAB函数。此示例使用该功能myadd返回其输入的和。

函数c=myadd(a,b)c=a+b;结束

创建用于生成MEX函数的配置对象。

cfg = coder.config (墨西哥人的);

更改不希望使用默认值的属性值。例如,启用即时(JIT)编译。

cfg.enablejit = true;

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

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

选择功能

要使用默认配置参数值生成MEX函数,不需要创建配置对象,可以调用codegen不指定配置对象或使用-config:mex.选项。

介绍了R2011a