主要内容

编码器。CodeConfig

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

描述

一个编码器。CodeConfig对象包含的配置参数codegen用于生成静态库、动态链接库或可执行程序。将对象传递给codegen函数。配置选择。

创建

创建一个编码器。CodeConfig对象。coder.config函数。

一旦创建了编码器。CodeConfig对象,您可以在命令行以编程方式修改其属性,也可以使用“配置参数”对话框以交互方式修改。看到在命令行工作流中指定配置参数

属性

全部展开

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

价值 描述
“加快构建”

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

“快跑”

优化构建,以更快地运行可执行程序。

“调试”

为调试优化构建。

“指定”

使CustomToolchainOptions属性,用于定制所选工具链中的工具的设置。如果工具链属性设置为“自动定位已安装的工具链”,然后设置BuildConfiguration“指定”变化工具链到所定位的工具链。

如果你设置工具链属性设置为可用的CMake工具链定义之一时,该属性允许的值为“发布”“调试”“RelWithDebInfo”“MinSizeRel”,“指定”.看到配置CMake生成过程

动态数组优化,指定为该表中的值之一。

价值 描述
真正的

该值为默认值。

代码生成器通过优化动态数组访问,提高了生成的C代码的执行时间。

代码生成器不会优化动态数组访问。

看到优化动态数组访问

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

价值 描述
“Clang-format”

代码生成器将生成的代码按照clang-format文件。

“汽车”

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

来确定生成的代码是否被格式化clang-format,在一个coder.config对象,设置冗长选项“详细”

“MathWorks”

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

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

价值 描述
“没有”

该值为默认值。

不使用代码替换库。

命名代码替换库

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

  • 安装包的支持。

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

  • 是否使用嵌入式编码器创建和注册了代码替换库®产品。

兼容库依赖于以下参数:

  • TargetLang

  • TargetLangStandard

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

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

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

在设置此参数之前,请验证编译器是否支持要使用的库。如果选择了编译器不支持的参数值,就会发生编译器错误。

请注意

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

用于编译时递归的函数专门化的最大数目,指定为正整数。若要在MATLAB代码中禁止递归,请设置CompileTimeRecursionLimit为0。默认编译时递归限制对于大多数需要这种递归的递归函数来说足够大。如果代码生成由于编译时递归限制而失败,而您想要编译时递归,请尝试增加该限制。或者,更改您的MATLAB代码,使代码生成器使用运行时递归。看到达到编译时递归限制

常量文件夹执行的最大指令数。在某些情况下,代码生成需要特定的指令保持恒定。如果常量折叠在这些指令被常量折叠之前停止,代码生成将失败。在本例中,增加的值ConstantFoldingTimeout

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

是否生成包含枚举类或普通C枚举的c++ 11代码,指定为该表中的值之一。

价值 描述
真正的

该值为默认值。

代码生成器在生成的c++ 11代码中为MATLAB枚举生成枚举类。看到枚举的代码生成

代码生成器为生成的c++ 11代码中的MATLAB枚举生成普通的C枚举。

依赖:

  • 设置TargetLang“c++”支持这个参数。

用于生成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风格的结构。

当使用GPU Coder™时,代码生成器总是禁用此参数。

依赖:

  • 设置TargetLang“c++”支持这个参数。

数据类型:逻辑

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

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

看到使用BLAS调用加速独立生成代码中的矩阵运算

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

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

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

从MATLAB代码生成的每个C/ c++头文件的顶部附近出现的自定义代码,除了rtwtypes.h而且rtwhalf.h,指定为字符向量。

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

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

价值 描述
字符串数组

中的字符串数组CustomInclude.例如,cfg。CustomInclude = ["C:\Project","C:\Custom Files"];

字符向量的单元格数组

中的字符向量的单元格数组CustomInclude.例如,cfg。CustomInclude = {'C:\Project','C:\Custom Files'};

特征向量

分开包含文件夹由一个pathsep字符CustomInclude.例如,cfg。CustomInclude = ['C:\Project' pathsep 'C:\Custom Files'];

请注意

通过使用字符向量在代码配置对象中指定多个条目将在未来的版本中删除。使用字符向量的字符串数组和单元格数组代替。有关更多信息,请参见兼容性的考虑

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

LAPACK库的回调类调用为MATLAB代码中的某些线性代数函数生成的代码,指定为字符向量。

如果指定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.c而且foo.cpp都在搜索路径上,您不能确定构建过程是否使用foo.cfoo.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静态函数定义。

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

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

依赖关系:

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

  • 设置BuildConfiguration财产指定使CustomToolchainOptions

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

cfg = coder.config (“自由”);cfg。BuildConfiguration =“指定”;选择= cfg。CustomToolchainOptions

然后,编辑中的值选择

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

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

价值 描述
“CBuiltIn”

该值为默认值。

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

“CoderTypeDefs” 的预定义数据类型rtwtypes.h

用于深度学习网络代码生成的配置对象,指定为该表中的一个对象。

对象 需要 描述
编码器。MklDNNConfig

  • 深度学习工具箱™

  • 深度学习库的MATLAB编码器接口支持包

一个编码器。MklDNNConfig对象包含特定于使用Intel进行深度学习的c++代码生成的参数®MKL-DNN。创建一个编码器。MklDNNConfig对象,使用编码器。DeepLearningConfig.例如:

cfg = coder.config (墨西哥人的);cfg。TargetLang =“c++”;cfg。DeepLearningConfig =编码器。DeepLearningConfig (“mkldnn”);

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

编码器。一个RMNEONConfig

  • 深度学习工具箱

  • 深度学习库的MATLAB编码器接口支持包

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

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

看到基于ARM计算库的深度学习网络代码生成

编码器。CuDNNConfig(GPU编码器)

  • 深度学习工具箱

  • GPU编码器

  • 用于深度学习库的GPU编码器接口支持包

一个编码器。CuDNNConfig对象包含CUDA特有的参数®使用cuDNN库进行深度学习的代码生成。创建一个编码器。CuDNNConfig对象,使用编码器。DeepLearningConfig.例如:

cfg = coder.gpuConfig (“自由”);cfg。TargetLang =“c++”;cfg。DeepLearningConfig =编码器。DeepLearningConfig (“cudnn”);

看到基于cuDNN的深度学习网络代码生成(GPU编码器)

编码器。TensorRTConfig(GPU编码器)

  • 深度学习工具箱

  • GPU编码器

  • 用于深度学习库的GPU编码器接口支持包

一个编码器。TensorRTConfig对象包含特定于CUDA代码生成的参数,用于使用TensorRT库进行深度学习。创建一个编码器。TensorRTConfig对象,使用编码器。DeepLearningConfig.例如:

cfg = coder.gpuConfig (“自由”);cfg。TargetLang =“c++”;cfg。DeepLearningConfig =编码器。DeepLearningConfig (“tensorrt”);

看到基于TensorRT的深度学习网络代码生成(GPU编码器)

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

对象说明,指定为字符向量。

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

价值 描述
“阈值”

该值为默认值。

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

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

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

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

依赖关系:

  • EnableVariableSizing支持这个参数。

  • 设置这个DynamicMemoryAllocation“阈值”使DynamicMemoryAllocationThreshold参数。

看到为可变大小数据生成代码

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

价值 描述
“汽车”

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

“C”

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

“c++”

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

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

当使用GPU Coder时,代码生成器总是使用C风格emxArray数据结构。

依赖:

  • EnableVariableSizing支持这个参数。

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

依赖:

  • 设置DynamicMemoryAllocation“阈值”支持这个参数。

看到为可变大小数据生成代码

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

价值 描述
真正的

该值为默认值。

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

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

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

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

价值 描述

该值为默认值。

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

真正的

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

当使用GPU Coder时,代码生成器总是启用自动并行化循环。

数据类型:逻辑

的自动并行化报告循环,指定为该表中的值之一。

价值 描述
真正的

该值为默认值。

如果你设置EnableAutoParallelization真正的的自动并行化,代码生成器生成一个代码生成报告循环

代码生成器不会为的自动并行化生成代码生成报告循环。

生成代码中的隐式扩展功能,指定为该表中列出的值之一。

价值 描述
真正的

该值为默认值。

代码生成器支持在生成的代码中进行隐式展开。代码生成器在生成的代码中包含用于应用隐式展开的修改。看到基本操作的兼容数组大小

生成的代码不遵循隐式展开的规则。

数据类型:逻辑

memcpy优化,指定为该表中的值之一。

价值 描述
真正的

该值为默认值。

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

代码生成器不使用memcpy优化。

当使用GPU Coder时,代码生成器总是禁用的Memcpy优化。

并行化的parfor-loops,指定为该表中的一个值。

价值 描述
真正的

该值为默认值。

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

代码生成器处理parfor循环,循环。

看到parfor

OpenMP库的使用与即时(JIT)编译不兼容。如果EnableJIT而且EnableOpenMP真正的,代码生成器使用JIT编译和处理parfor循环,循环。

当使用GPU Coder时,代码生成器总是处理parfor循环,循环。

运行时递归支持,指定为该表中的一个值。

价值 描述
真正的

该值为默认值。

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

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

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

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

看到递归函数的代码生成

可变大小的数组支持,指定为该表中的一个值。

价值 描述
真正的

该值为默认值。

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

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

依赖:

  • 使动态内存分配

看到变大小数组的代码生成

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

价值 描述
“MapMFileToCFile”

该值为默认值。

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

“SingleFile” 代码生成器为映射到MATLAB入口点函数的C/ c++函数生成单个文件。代码生成器为实用程序函数生成单独的C/ c++文件。

看到MATLAB编码器如何分区生成的代码

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

价值 描述

该值为默认值。

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

真正的

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

注释,指定为该表中的值之一。

价值 描述
真正的

该值为默认值。

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

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

示例C/ c++主文件生成,指定为该表中的一个值。

价值 描述
“GenerateCodeOnly”

该值为默认值。

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

“DoNotGenerate”

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

“GenerateCodeAndCompile”

代码生成器生成一个示例C/ c++主函数并编译它以创建一个测试可执行文件。此可执行文件不返回输出。

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

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

在构建过程中生成Makefile,指定为该表中的值之一。

价值 描述
真正的

该值为默认值。

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

代码生成器在构建过程中不生成makefile。在后代码生成命令中指定后代码生成处理的指令,包括编译和链接。看到构建流程定制

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

价值 描述
真正的

该值为默认值。

代码生成器为非有限数据生成支持文件(而且),除非生成的代码使用非有限数据。

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

依赖:

  • 设置SupportNonFinite真正的支持这个参数。

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

价值 描述

该值为默认值。

只有在发生错误或警告消息时,或者您设置了LaunchReport真正的

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

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

cfg = coder.config(“自由”);hw =编码器。硬件(覆盆子π);cfg。硬件= hw;

使用之前coder.hardware,则必须安装硬件支持包。

依赖关系:

  • 设置硬件为特定硬件板自定义硬件实现对象和其他配置参数。

  • 如果DeepLearningConfig设置为编码器。一个RMNEONConfig对象和硬件是空的,然后codegen设置GenCodeOnly财产真正的

注意:

  • 假设你创建了一个编码器。CodeConfig对象cfg并在另一个MATLAB会话中使用它。如果用于第二会话的MATLAB主机没有指定的硬件板cfg。硬件属性安装在其上时,此参数将恢复为其默认值。默认值为[].设置硬件板选项MATLAB主机在应用中相当于使用cfg。硬件而且cfg.HardwareImplementation.ProdHWDeviceType使用它们的默认值。

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

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

指定HeaderGuardStyle作为该表中的一个值。

价值 描述
UseIncludeGuard

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

UsePragmaOnce 代码生成器产生# pragma一旦风格# include警卫。

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

价值 描述
真正的

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

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

看到行-主阵列布局的代码设计

浮点和双零的赋值memset,指定为该表中的一个值。

价值 描述
真正的

该值为默认值。

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

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

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

价值 描述
“速度”

该值为默认值。

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

“总是”

总是在调用站点执行内联。

“可读性”

几乎从不内联函数调用,除非是对非常小的函数的调用。尽可能在不牺牲太多速度的情况下保持代码的模块化。产生高可读性的代码。

“永远”

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

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

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

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

价值 描述
“速度”

该值为默认值。

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

“总是”

总是在调用站点执行内联。

“可读性”

几乎从不内联函数调用,除非是对非常小的函数的调用。尽可能在不牺牲太多速度的情况下保持代码的模块化。产生高可读性的代码。

“永远”

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

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

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

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

价值 描述
“速度”

该值为默认值。

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

“总是”

总是在调用站点执行内联。

“可读性”

几乎从不内联函数调用,除非是对非常小的函数的调用。尽可能在不牺牲太多速度的情况下保持代码的模块化。产生高可读性的代码。

“永远”

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

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

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

指令集为目标硬件生成单指令、多数据(SIMD)代码。该列表显示了指令集的依赖性,其中每个指令集都依赖于它前面的指令集。代码生成器加载所选的指令集和它所依赖的指令集。例如,如果您选择AVX,加载代码生成器AVXSSE4.1SSE2,上交所

看到为MATLAB函数生成SIMD代码

当使用GPU Coder时,代码生成器总是禁用的InstructionSetExtensions

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

价值 描述

该值为默认值。

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

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

迭代次数少于此阈值的循环可以由代码生成器自动展开。这个阈值适用于所有人循环和parfor-循环在你的MATLAB代码。对一个人循环,coder.unroll直接放在循环之前的指令优先于循环展开优化。这个阈值也适用于一些国家-在代码生成期间产生的循环。

看到展开for-Loops和parfor-Loops

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

价值 描述

该值为默认值。

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

真正的

代码生成器在生成的代码中插入MATLAB源代码作为注释。在源代码的每一行之前都有一个跟踪标记。可追溯标记帮助您定位相应的MATLAB源代码。看到跟踪生成的C/ c++代码到MATLAB源代码

如果您有Embedded Coder,在代码生成报告中,可跟踪性标记链接到源代码。

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

依赖:

  • 设置GenerateComments真正的支持这个参数。

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

是否在生成的代码中包含MATLAB源代码的行号作为注释,指定为真正的

依赖:

  • MATLABSourceComments支持这个参数。

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

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

默认值:

  • 如果TargetLang被设置为“C”的默认值MaxIdLength31

  • 如果TargetLang被设置为“c++”的默认值MaxIdLength1024

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

为了优化复制连续数组元素的生成代码,代码生成器尝试用memcpy调用。为了优化为连续数组元素赋值文字常量的生成代码,代码生成器尝试用memset调用。

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

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

看到memcpy优化而且memset优化

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

价值 描述

该值为默认值。

代码生成器不会产生多实例、可重入的代码。

真正的

代码生成器生成可重用的、可重入的多实例代码。

看到可重入代码

GPU Coder产品不支持此选项。

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

并行运行的最大CPU线程数-循环在生成的C/ c++代码中,指定为正整数。

看到在生成的代码中指定运行并行for循环的最大线程数

是否为积函数和函数等约简操作生成SIMD代码。要使用此参数,必须为类选择指令集InstructionSetExtensions参数。代码生成器使用指定的指令集生成用于简化操作的SIMD代码。

看到为MATLAB函数生成SIMD代码

并行化-执行缩减操作的循环,指定为该表中的一个值。

价值 描述

该值为默认值。

代码生成器不会自动并行化-循环执行约简操作。

真正的

代码生成器自动并行化-循环在生成的代码中执行缩减操作,只有当你设置EnableAutoParallelization真正的

看到并行化循环执行约简操作

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

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

通过引用入口点函数传递结构,指定为该表中的值之一。

价值 描述
真正的

该值为默认值。

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

请注意

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

生成的代码按值传递结构。

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

看到在生成的代码中按引用或值传递结构参数

命令自定义生成处理后的MEX功能生成codegen,指定为字符向量。

看到构建流程定制

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

价值 描述

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

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

看到生成使用n维索引的代码

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

价值 描述
“没有”

该值为默认值。

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

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

“用户名”

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

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

“所有”

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

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

将有关代码生成的信息导出到其中的变量的名称,指定为字符向量。代码生成器在基本的MATLAB工作区中创建这个变量。此变量包含关于代码生成设置、输入文件、生成文件和代码生成消息的信息。

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

潜在差值报告,指定为该表中的值之一:

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

看到潜在的差异报告

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

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

价值 描述
字符串数组

中的字符串数组ReservedNameArray.例如,cfg。ReservedNameArray =[“reserve1”、“reserve2”,“reserve3”)

字符向量的单元格数组

中的字符向量的单元格数组ReservedNameArray.例如,cfg。ReservedNameArray ={‘reserve1’,‘reserve2’,‘reserve3}

特征向量

中保留名称的分号分隔的列表ReservedNameArray.例如,cfg。ReservedNameArray = ' reserve1; reserve2 reserve3”

请注意

通过使用字符向量在代码配置对象中指定多个条目将在未来的版本中删除。使用字符向量的字符串数组和单元格数组代替。有关更多信息,请参见兼容性的考虑

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

价值 描述

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

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

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

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

价值 描述
真正的

该值为默认值。

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

生成的入口点函数不包括对initialize函数的调用。

看到使用生成的初始化和终止函数

依赖:

  • 设置MultiInstanceCode真正的禁用这个参数。

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

价值 描述

该值为默认值。

生成的代码不会检查超出边界的数组索引等错误。

真正的

生成的代码检查错误,例如超出范围的数组索引。

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

错误消息是英文的。

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

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

价值 描述
真正的

该值为默认值。

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

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

此参数仅适用于MATLAB内置整数类型。它不适用于双精度、单精度或定点数据类型。

看到禁用对整数溢出或非有限的支持

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

看到禁用对整数溢出或非有限的支持

对非有限值的支持,指定为该表中的值之一。

价值 描述
真正的

该值为默认值。

如果GenerateNonFiniteFilesIfUsed被设置为真正的,代码生成器生成支持非有限值的代码(而且)。

如果GenerateNonFiniteFilesIfUsed被设置为,代码生成器总是生成支持非有限值的代码(而且).

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

看到禁用对整数溢出或非有限的支持

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

当使用GPU Coder时,代码生成集TargetLangc++

依赖:如果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主机没有中指定的工具链cfg。工具链属性安装在其上时,此参数将恢复为其默认值。默认值为“自动定位已安装的工具链”

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

价值 描述

该值为默认值。

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

真正的

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

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

价值 描述
“沉默”

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

显示警告和错误信息。

“信息”

该值为默认值。

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

  • 代码生成成功

  • 链接到生成的报告,如果有的话

“详细”

中显示的消息之外“信息”将显示模式、代码生成状态和目标构建日志消息。

例子

全部折叠

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

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

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

cfg = coder.config (“自由”);

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

cfg。RuntimeChecks = true;

通过使用codegen.将配置对象传递给codegen通过使用配置选择。指定输入参数为双精度标量。

codegenmyadd配置cfgarg游戏{1}报告

选择功能

为构建类型使用默认配置参数“自由”“DLL”,或EXE”,可以使用codegen选项配置:自由配置:dll,或配置:exe,分别。然后,您不必创建配置对象并将其传递给codegen

版本历史

介绍了R2011a

全部展开

Baidu
map