主要内容

coder.CodeConfig

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

描述

一个coder.CodeConfig对象包含的配置参数codegen用于生成一个静态库,动态链接库,或一个可执行程序。通过对象的codegen函数使用配置选择。

创建

创建一个coder.CodeConfig通过使用对象coder.config函数。

一旦你创建一个coder.CodeConfig对象,您可以在命令行或修改其属性以编程方式交互地使用配置参数对话框。看到在命令行指定配置参数工作流交互

属性

全部展开

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

价值 描述
“加快构建”

优化的构建更短的建立时间。

“快跑”

优化构建可执行程序运行的更快。

“调试”

优化构建进行调试。

“指定”

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

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

价值 描述
真正的

这个值是默认值。

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

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

看到优化动态数组访问

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

价值 描述
“Clang-format”

代码生成器生成的代码格式显示clang-format文件。

“汽车”

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

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

“MathWorks”

原因代码生成器回到MathWorks格式化工具。

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

价值 描述
“没有”

这个值是默认值。

不使用一个代码替换库。

命名的代码替换库

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

  • 安装包的支持。金宝app

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

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

兼容库依赖于这些参数:

  • TargetLang

  • TargetLangStandard

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

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

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

设置这个参数之前,确认您的编译器支持您想要使用的库。金宝app如果你选择一个参数值,编译器不支持,会发生编译器错误。金宝app

请注意

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

最大数量的专门化的编译时递归函数,指定为一个正整数。在MATLAB代码不允许递归,集CompileTimeRecursionLimit为0。默认编译时递归限制是大到足以让最需要这种类型的递归的递归函数。如果代码生成失败,因为编译时递归限制,和你想要编译时递归,试图增加的极限。另外,改变你的MATLAB代码,代码生成器使用运行时递归。看到编译时递归限制达到

最大数量的恒定文件夹执行的指令。在某些情况下,代码生成需要特定的指令是常数。如果constant-folded常数合并之前停止这些指令,代码生成失败。在这种情况下,增加的价值ConstantFoldingTimeout

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

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

价值 描述
真正的

这个值是默认值。

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

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

依赖:

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

接口类的名称时生成c++代码CppInterfaceStyle设置为“方法”。在这种情况下,对MATLAB生成的代码入口点函数的方法包含在一个c++类所指定的名称CppInterfaceClassName。当你设定这个属性没有影响CppInterfaceStyle“功能”

看到生成c++代码的类接口

风格的界面为MATLAB生成c++代码入口点函数生成代码。默认情况下,入口点函数成为c++函数。如果你选择“方法”,然后入口点函数成为c++类的方法。指定类的属性的名称CppInterfaceClassName

看到生成c++代码的类接口

依赖:

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

是否为包生成c++名称空间在MATLAB代码中,指定为这个表中的值之一。

价值 描述
真正的

这个值是默认值。

代码生成器生成c++名称空间在MATLAB代码包。看到生成c++代码组织成名称空间

代码生成器不能产生c++名称空间在MATLAB代码的包。

依赖:

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

数据类型:逻辑

名称空间为生成c++代码。代码生成器不能产生代码在一个名称空间,除非你指定一个非空的特征向量。

看到生成c++代码组织成名称空间

依赖:

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

名称空间为MathWorks生成c++代码的代码。代码生成器不能产生这样一个名称空间如果指定这个属性是一个空的特征向量。

看到生成c++代码组织成名称空间

依赖:

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

数据类型:字符

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

价值 描述
真正的

这个值是默认值。

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

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

当使用GPU编码器™,代码生成器总是禁用这个参数。

依赖:

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

数据类型:逻辑

回调类巴拉斯库调用的代码生成的某些低级的向量和矩阵运算在MATLAB代码中,指定为一个特征向量。

如果你指定巴拉斯回调类,对于某些低级的向量和矩阵函数,代码生成器产生巴拉斯调用使用CBLAS C接口布拉斯特区图书馆。回调类提供CBLAS头文件的名称,CBLAS数据类型的名称,bla库链接到你所需的信息。如果该参数为空,矩阵函数的代码生成器生成的代码而不是巴拉斯的电话。

看到加快矩阵运算生成独立的代码通过使用布拉斯特区调用

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

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

看到加快快速傅里叶变换使用FFTW库调用生成的独立的代码

定制代码出现顶部附近的每一个C / c++头文件从MATLAB代码生成的,除了rtwtypes.hrtwhalf.h,指定为一个特征向量。

包括文件夹添加到包括当编译生成的代码路径。指定包括文件夹的列表作为一个字符串数组,单元阵列特征向量,特征向量。

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

价值 描述
字符串数组

一个字符串数组CustomInclude。例如,cfg。CustomInclude = [“C: \工程”,“C: \自定义文件”);

单元阵列的特征向量

一个细胞阵列的特征向量CustomInclude。例如,cfg。CustomInclude = {“C: \项目”,“C: \自定义文件”};

特征向量

单独由一个包括文件夹pathsep字符CustomInclude。例如,cfg。CustomInclude = [' C: \项目' pathsep“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.cfoo.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静态函数定义。

出现在终止函数所生成的代码,指定为一个特征向量。

自定义设置工具选择的工具链,指定为一个单元阵列。

依赖关系:

  • 工具链属性决定了哪些工具和选项出现在单元阵列。

  • 设置BuildConfiguration财产指定使CustomToolchainOptions

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

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

然后,编辑中的值选择

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

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

价值 描述
“CBuiltIn”

这个值是默认值。

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

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

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

对象 需要 描述
coder.MklDNNConfig

  • 深度学习工具箱™

  • 为深度学习MATLAB编码器接口库金宝app支持包

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

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

看到代码生成与MKL-DNN深度学习网络

coder.ARMNEONConfig

  • 深度学习工具箱

  • 为深度学习MATLAB编码器接口库金宝app支持包

一个coder.ARMNEONConfig对象包含参数特定于c++代码生成深度学习使用的手臂®计算库。创建一个coder.ARMNEONConfig对象,使用coder.DeepLearningConfig。例如:

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

看到代码生成与臂计算深度学习网络图书馆

coder.CuDNNConfig(GPU编码器)

  • 深度学习工具箱

  • GPU编码器

  • 为深度学习GPU编码器接口库金宝app支持包

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

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

看到通过使用cuDNN代码生成深度学习网络(GPU编码器)

coder.TensorRTConfig(GPU编码器)

  • 深度学习工具箱

  • GPU编码器

  • 为深度学习GPU编码器接口库金宝app支持包

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

cfg = coder.gpuConfig (“自由”);cfg。TargetLang =“c++”;cfg。DeepLearningConfig = coder.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编码器时,代码生成器总是使用C风格emxArray数据结构。

依赖:

  • EnableVariableSizing支持这个参数。

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

依赖:

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

看到为适应可变数据生成代码

非本征函数调用,自动指定为这个表中的值之一。

价值 描述
真正的

这个值是默认值。

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

代码生成器不治疗常见可视化函数作为外在功能,除非你宣布他们为外部使用coder.extrinsic

一些常见的可视化功能情节,disp,。看到使用MATLAB引擎来执行一个函数调用生成的代码

自动并行化循环,在这个表指定为一个值。

价值 描述

这个值是默认值。

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

真正的

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

使用GPU编码器时,代码生成器总是让自动并行循环。

数据类型:逻辑

报告的自动并行化循环,在这个表指定为一个值。

价值 描述
真正的

这个值是默认值。

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

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

隐式扩张能力在生成的代码中,指定表中列出的值。

价值 描述
真正的

这个值是默认值。

代码生成器允许隐式扩张在生成的代码中。代码生成器包括在生成的代码修改应用隐式扩张。看到兼容数组大小的基本操作

生成的代码不遵守规则的隐式扩张。

数据类型:逻辑

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

价值 描述
真正的

这个值是默认值。

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

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

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

并行化的parfor循环,在这个表指定为一个值。

价值 描述
真正的

这个值是默认值。

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

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

看到parfor

使用OpenMP图书馆与即时(JIT)编译不兼容。如果EnableJITEnableOpenMP真正的,代码生成器使用JIT编译和治疗parfor循环,循环。

使用GPU编码器时,代码生成器总是对待parfor循环,循环。

运行时递归的支持,在这个表指定为一个值金宝app。

价值 描述
真正的

这个值是默认值。

递归函数都可以在生成的代码中。

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

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

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

看到递归函数的代码生成

适应可变数组的支持,在这个表指定为一个值金宝app。

价值 描述
真正的

这个值是默认值。

适应可变数组允许代码生成。

适应可变数组不允许代码生成。

依赖:

  • 使动态内存分配

看到为适应可变数组生成代码

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

价值 描述
“MapMFileToCFile”

这个值是默认值。

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

“SingleFile” 代码生成器产生单个文件的C / c++函数映射到你的MATLAB函数入口点。代码生成器生成单独的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。指定post-code-generation处理指令,包括编译和链接,在一个post-code-generation命令。看到构建流程定制

一代的非限定的数据支持文件,金宝app指定为这个表中的值之一。

价值 描述
真正的

这个值是默认值。

支持文件的代码生成器产生的非限定的数据(金宝app)只有在生成的代码中使用非限定的数据。

代码生成器产生非限定的数据的支持文件(金宝app)。

依赖:

  • 设置金宝appSupportNonFinite真正的支持这个参数。

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

价值 描述

这个值是默认值。

代码生成器生成一个报告只有在发生错误或警告消息,或者如果你设置LaunchReport真正的

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

对象,该对象指定一个硬件板。创建coder.Hardware对象,使用coder.hardware。例如:

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

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

依赖关系:

  • 设置硬件定制的硬件实现对象和其他特定硬件配置参数。

  • 如果DeepLearningConfig被设置为一个coder.ARMNEONConfig对象和硬件是空的,然后codegen设置GenCodeOnly财产真正的

注意:

  • 假设您创建一个coder.CodeConfig对象cfg在MATLAB会话并使用它在另一个MATLAB会话。如果第二个会话的MATLAB主机没有硬件板中指定cfg.Hardware财产上安装它,这个参数恢复为默认值。默认值是[]。设置硬件板选项MATLAB主机在应用程序相当于使用cfg.Hardwarecfg.HardwareImplementation.ProdHWDeviceType与他们的默认值。

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

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

指定HeaderGuardStyle在这个表的值。

价值 描述
UseIncludeGuard

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

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

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

价值 描述
真正的

代码生成的报告上显示了潜在的效率问题,由于行布局。(该值是默认值)。

代码生成报告并没有显示阵列布局有关的问题。

看到代码行阵列布局设计

转让和双零浮动memset,指定为这个表中的值之一。

价值 描述
真正的

这个值是默认值。

如果可能的话,代码生成器使用memset优化连续浮点零分配给数组元素。连续分配数组元素memset优化使用memset调用。当元素的数量分配在编译时是已知的,代码生成器使用MemcpyThreshold属性来决定是否使用优化。看到memset优化

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

内联行为调用地点MathWorks调用另一个MathWorks函数,指定为这个表中的值之一。

价值 描述
“速度”

这个值是默认值。

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

“总是”

总是表现内联调用站点上。

“可读性”

几乎从不内联函数调用,除了要求非常小的功能。保留了模块化的代码不牺牲太多的速度,只要有可能。结果在高度可读的代码。

“永远”

内联函数调用。导致最大的可读性。这个设置可以显著减少生成的代码的性能。

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

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

内联行为调用站点,你写一个函数,调用一个MathWorks函数,或者MathWorks函数调用一个函数,你写道。这个表中指定的值。

价值 描述
“速度”

这个值是默认值。

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

“总是”

总是表现内联调用站点上。

“可读性”

几乎从不内联函数调用,除了要求非常小的功能。保留了模块化的代码不牺牲太多的速度,只要有可能。结果在高度可读的代码。

“永远”

内联函数调用。导致最大的可读性。这个设置可以显著减少生成的代码的性能。

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

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

内联行为调用站点,你写一个函数,调用另一个函数,你写道,在这个表指定为一个值。

价值 描述
“速度”

这个值是默认值。

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

“总是”

总是表现内联调用站点上。

“可读性”

几乎从不内联函数调用,除了要求非常小的功能。保留了模块化的代码不牺牲太多的速度,只要有可能。结果在高度可读的代码。

“永远”

内联函数调用。导致最大的可读性。这个设置可以显著减少生成的代码的性能。

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

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

指令集生成单指令多数据(SIMD)目标硬件的代码。这个列表显示了指令集的依赖,其中每个指令集取决于之前的指令集。代码生成器加载选中的指令集,这取决于的指令集。例如,如果您选择AVX,代码生成器负载AVX,SSE4.1,SSE2,上交所

看到为MATLAB生成SIMD代码功能

使用GPU编码器时,代码生成器总是禁用InstructionSetExtensions

指定的代码生成报告,自动打开这个表中的值。

价值 描述

这个值是默认值。

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

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

循环比这更少的迭代阈值由代码生成器的候选人自动展开。这个阈值适用于所有循环和parfor在MATLAB代码循环。对一个人循环,coder.unroll指令立即放置在循环优先于循环展开优化。阈值也可以适用于一些循环过程中产生代码生成。

看到展开for循环和parfor-Loops

包含注释的MATLAB源代码生成的代码,在这个表指定为一个值。

价值 描述

这个值是默认值。

代码生成器不插入评论的MATLAB源代码生成的代码。代码生成器函数中不包括MATLAB函数签名横幅。

真正的

代码生成器插入MATLAB源代码生成的代码的注释。立即可追溯性标记之前的每一行源代码。可追溯性标记能帮助你找到相应的MATLAB源代码。看到跟踪生成的C / c++代码的MATLAB源代码

如果你有嵌入式编码,代码生成报告,可追溯性标记源代码的链接。

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

依赖:

  • GenerateComments支持这个参数。

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

最大字符数生成的标识符,指定为一个正整数的范围[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编码器产品。金宝app

对象名称、指定为一个特征向量。

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

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

是否生成SIMD代码还原操作,比如产品和和功能。使用这个参数时,您必须选择一个指令集InstructionSetExtensions参数。代码生成器使用指定的指令集生成SIMD减少操作的代码。

看到为MATLAB生成SIMD代码功能

并行化循环执行还原操作,指定为这个表中的值之一。

价值 描述

这个值是默认值。

代码生成器并不会自动并行化循环执行还原操作。

真正的

代码生成器自动截然不同循环执行还原操作在生成的代码中,只有当你设置EnableAutoParallelization真正的

看到并行化循环执行还原操作

输出构建生成的C / c++代码,在这个表指定为一个值。

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

通过结构参照入口点函数,指定为这个表中的值之一。

价值 描述
真正的

这个值是默认值。

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

请注意

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

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

这个参数只适用于入口点函数。

看到通过结构参数通过引用或值在生成的代码

墨西哥人后命令自定义构建处理函数生成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”

请注意

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

生成的代码使用行阵列布局,指定为这个表中的值之一。

价值 描述

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

真正的 生成代码,使用行阵列布局。

看到生成代码,使用行阵列布局

代初调用初始化函数生成的入口点函数,指定为这个表中的值之一。

价值 描述
真正的

这个值是默认值。

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

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

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

依赖:

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

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

价值 描述

这个值是默认值。

生成的代码不检查错误,如禁止入内的索引数组。

真正的

生成的代码检查错误,例如禁止入内的索引数组。

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

错误消息都是英文的。

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

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

价值 描述
真正的

这个值是默认值。

代码生成器生成的代码来处理整数溢出。溢出的最小值或最大值,数据类型可以表示。

代码生成器不能产生代码来处理整数溢出。不设置SaturateOnIntegerOverflow除非你确信你的代码不依赖于整数溢出的支持。金宝app如果禁用整数溢出支持和启用运行时错误检查,生成的代码会产生溢出的金宝app错误。如果你禁用整数溢出支持禁用运行时错误检查,溢出行为取决于您的目标金宝appC编译器。在C标准,整数溢出的行为是未定义的。然而,大多数C编译器包装上溢出。

这个参数只适用于MATLAB内置整数类型。它并不适用于双打、单身或定点数据类型。

看到禁用支持整数溢出金宝app或非限定的

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

看到禁用支持整数溢出金宝app或非限定的

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

价值 描述
真正的

这个值是默认值。

如果GenerateNonFiniteFilesIfUsed被设置为真正的,代码生成器生成的代码来支持非限定的值(金宝app只有使用它们)。

如果GenerateNonFiniteFilesIfUsed被设置为,代码生成器总是产生代码来支持非限定的值(金宝app)。

代码生成器不能产生代码来支持非限定的值。金宝app

看到禁用支持整数溢出金宝app或非限定的

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

使用GPU编码器时,代码生成器TargetLangc++

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

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

语言标准对生成的代码,使用指定为一个特征向量:

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

  • “C99 (ISO)”

  • “c++ 03 (ISO)”

  • “c++ 11 (ISO)”

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

看到改变语言标准

工具链用于构建一个C / c++库或可执行程序,指定为一个特征向量。可用工具链的列表取决于主机平台,并且可以包括您所添加的自定义工具链。如果你不指定工具链,代码生成器将定位安装工具链。

注意:

  • 假设您创建一个coder.CodeConfig对象cfg在MATLAB会话并使用它在另一个MATLAB会话。如果第二个会话的MATLAB主机没有中指定的工具链cfg.Toolchain财产上安装它,这个参数恢复为默认值。默认值是“自动定位一个安装工具链”

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

价值 描述

这个值是默认值。

代码生成器不显示代码生成的进步。

真正的

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

是否显示状态的代码生成的进步在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

全部展开

不推荐在R2022a开始

在未来的发布行为改变

在未来的发布行为改变