主要内容

编码器。EmbeddedCodeConfig

C/ c++代码生成的配置参数MATLAB代码与嵌入式编码器

描述

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

创建

描述

例子

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

cfg = coder.config (build_type“是”,真的)创建一个编码器。EmbeddedCodeConfig对象的指定输出类型,即使未安装Embedded Coder产品。但是,不能使用编码器。EmbeddedCodeConfig对象,除非您已安装嵌入式编码器。

输入参数

全部展开

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

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

属性

全部展开

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

价值 描述
“加快构建”

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

“快跑”

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

“调试”

优化构建以进行调试。

“指定”

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

生成的C/ c++代码中变量的数据类型转换级别,指定为该表中的值之一。

价值 描述
“名义”

此值为默认值。

生成使用默认C编译器数据类型转换的C/ c++代码。例如:

Short addone(Short x) {int i;I = x + 1;If (i > 32767) {i = 32767;}我返回(短);}

“标准”

生成C/ c++代码,强制转换数据类型以符合MISRA®标准。例如:

Short addone(Short x) {int i;I = (int)x + (int)1;If (i> (int)32767) {i = (int)32767;}我返回(短);}

“明确”

生成显式强制转换数据类型值的C/ c++代码。例如:

Short addone(Short x) {int i;I = (int)x + 1;If (i > 32767) {i = 32767;}我返回(短);}

看到生成代码中的控制数据类型强制转换(嵌入式编码)

设置此选项以指定是否要生成或使用现有的clang-format文件以格式化生成的代码。选择格式化文件选择方法,该方法指定为表中的值之一。

价值 描述
“生成”

此值为默认值。

创建一个clang-format基于配置设置的生成文件。的clang-format文件生成在codegen文件夹中。

“现有”

控件格式化生成的代码clang-format您选择的文件。使用clang-format启用对生成代码的格式的详细控制。

代码生成器搜索现有的clang-format文件,然后是代码生成文件夹上方的文件夹树。代码生成器查找文件名包括_clang-format或者是一个.clang-format它找到的文件。如果无法找到所需的文件,代码生成器将使用内置的格式规范。

有关更多信息,请参见https://clang.llvm.org/docs/ClangFormatStyleOptions.html

在循环中软件(SIL)或循环中处理器(PIL)执行期间的执行时分析,指定为该表中的值之一。

价值 描述

此值为默认值。

在SIL或PIL执行期间禁用执行时间分析。

真正的 在SIL或PIL执行期间启用执行时间分析。

看到SIL和PIL的执行时间分析(嵌入式编码)

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

价值 描述
“Clang-format”

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

“汽车”

使用内部试探法确定生成的代码是否按clang-format或者是MathWorks®格式化工具。

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

“MathWorks”

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

代码生成模板用于生成的代码中的文件和函数横幅。默认情况下,CodeTemplate为空,代码生成器将生成默认横幅。要生成自定义横幅,请设置CodeTemplate到一个编码器。MATLABCodeTemplate对象由代码生成模板(CGT)文件创建。看到为C/ c++代码生成自定义文件和函数横幅(嵌入式编码)

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

价值 描述
“没有”

此值为默认值。

不使用代码替换库。

命名代码替换库

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

  • 安装包的支持。金宝app

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

  • 是否使用Embedded Coder产品创建和注册代码替换库。

兼容库依赖于以下参数:

  • TargetLang

  • TargetLangStandard

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

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

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

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

请注意

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

生成的代码中换行前的最大列数,指定为范围[455,65536]的正整数。

其他放置换行符的规则可以优先于指定的列限制。

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

价值 描述
“汽车” 对于C语言,生成多行注释。对于c++,生成单行注释。
单行的 生成单行注释//
“多行” 生成以分隔的单行或多行注释/**/

对于C代码生成,只在编译器支持的情况下指定单行注释样式。金宝app

依赖:GenerateComments支持这个参数。

看到为C/ c++代码指定注释风格(嵌入式编码)

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

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

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

转换if-elseif-else模式切换实例生成代码中的语句,指定为该表中的值之一。

价值 描述

此值为默认值。

代码生成器不进行转换if-elseif-else模式切换实例语句。

真正的 代码生成器尝试转换if-elseif-else模式切换实例语句。代码生成器生成切换实例语句仅当所有可能的case表达式都是标量整数值时。

看到控制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风格的结构。

依赖:

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

数据类型:逻辑

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

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

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

宏,指定使用附加字符和标记自定义生成的文件名。有关更多信息,请参见自定义C/ c++文件名生成的MATLAB代码(嵌入式编码)

在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:\自定义文件'};

特征向量

用a分隔包含文件夹pathsep字符CustomInclude.例如,cfg。CustomInclude = ['C:\项目'路径sep 'C:\自定义文件'];

请注意

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

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

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

如果您指定了一个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静态函数定义。

生成的EMX数组类型(可嵌入的mxArray类型)的自定义标识符格式,指定为字符向量。要指定格式,请参见自定义生成的标识符(嵌入式编码)

生成的EMX数组(可嵌入的mxArrays)实用函数的自定义标识符格式,指定为字符向量。要指定格式,请参见自定义生成的标识符(嵌入式编码)

生成的局部函数标识符的自定义标识符格式,指定为字符向量。要指定格式,请参见自定义生成的标识符(嵌入式编码)

在全局类型标识符中生成字段名的自定义标识符格式,指定为字符向量。要指定格式,请参见自定义生成的标识符(嵌入式编码)

生成的全局变量标识符的自定义标识符格式,指定为字符向量。要指定格式,请参见自定义生成的标识符(嵌入式编码)

生成常量宏标识符的自定义标识符格式,指定为字符向量。要指定格式,请参见自定义生成的标识符(嵌入式编码)

生成的本地临时变量标识符的自定义标识符格式,指定为字符向量。要指定格式,请参见自定义生成的标识符(嵌入式编码)

生成的全局类型标识符的自定义标识符格式,指定为字符向量。要指定格式,请参见自定义生成的标识符(嵌入式编码)

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

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

依赖关系:

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

  • 设置BuildConfiguration财产指定使CustomToolchainOptions

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

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

然后,编辑其中的值选择

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

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

价值 描述
“CBuiltIn”

此值为默认值。

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

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

用于深度学习网络代码生成的配置对象,指定为编码器。MklDNNConfig对象或一个编码器。一个RMNEONConfig对象。

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

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

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

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

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

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

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

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

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

价值 描述
“阈值”

此值为默认值。

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

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

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

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

依赖关系:

  • EnableVariableSizing支持这个参数。

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

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

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

价值 描述
“汽车”

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

“C”

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

“c++”

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

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

依赖:

  • EnableVariableSizing支持这个参数。

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

依赖:

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

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

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

价值 描述
真正的

此值为默认值。

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

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

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

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

价值 描述

此值为默认值。

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

真正的

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

数据类型:逻辑

在生成的C/ c++代码中MATLAB数据类型的自定义名称,指定为表中的值之一。

价值 描述

此值为默认值。

不允许为MATLAB数据类型自定义名称。

真正的

允许为MATLAB数据类型自定义名称。通过使用指定自定义名称ReplacementTypes.设置EnableCustomReplacementTypes真正的使ReplacementTypes参数。

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

价值 描述
真正的

此值为默认值。

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

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

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

价值 描述
真正的

此值为默认值。

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

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

看到parfor

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

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

价值 描述
真正的

此值为默认值。

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

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

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

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

看到递归函数的代码生成

在生成的C/ c++代码中用带符号的左移位替换2的乘数,指定为该表中的值之一。

价值 描述
真正的

此值为默认值。

对于2的乘方,代码生成器使用带符号的左移位。生成的C代码使用符号左移表示乘以8的例子如下:

< < = 3;

对于2的幂乘法,代码生成器不使用带符号的左移位。下面是一个不使用符号左移的C代码示例:

I = I * 8;

GPU编码器™总是设置EnableSignedLeftShifts属性为true。

一些编码标准,如MISRA,不允许对有符号整数进行位操作。为了增加生成MISRA C兼容代码的可能性,设置EnableSignedLeftShifts

看到生成代码中的控制符号左移(嵌入式编码)

生成的代码中有符号的右移位,指定为该表中的一个值。

价值 描述
真正的

此值为默认值。

代码生成器使用有符号的右移位。一个使用符号右移生成的C代码示例如下:

我> > = 3

代码生成器用生成的代码中的函数调用替换有符号整数上的右移位。例如:

i = asr_s32(i, 3U);

GPU编码器总是设置EnableSignedRightShifts属性为true。

一些编码标准,如MISRA,不允许对有符号整数进行位操作。为了增加生成MISRA-C:2004兼容代码的可能性,设置EnableSignedRightShifts

强度降低优化,指定为表中值之一。

价值 描述

此值为默认值。

代码生成器不使用强度降低优化。

真正的

代码生成器尝试使用强度降低优化来简化生成代码中循环中的数组索引。如果可能,对于循环中的数组索引,代码生成器将用添加操作替换乘法操作。乘法运算可能很昂贵。当目标平台上的C/ c++编译器不优化数组索引时,强度降低优化是有用的。即使优化替换了生成代码中的乘法操作,C/ c++编译器也可能生成乘法指令。

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

价值 描述
真正的

此值为默认值。

代码生成报告包括代码可跟踪性。看到交互式跟踪MATLAB代码和生成的C/ c++代码(嵌入式编码)

代码生成报告不包括代码可跟踪性。

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

价值 描述
真正的

此值为默认值。

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

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

依赖:

  • 使动态内存分配

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

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

价值 描述
“MapMFileToCFile”

此值为默认值。

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

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

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

静态代码度量报告,指定为该表中的值之一。

价值 描述

此值为默认值。

代码生成器在代码生成时不会运行静态代码度量分析。您可以稍后通过单击运行分析并生成报告代码度量总结选项卡的代码生成报告。

真正的

代码生成器运行静态代码度量分析,并在代码生成时生成报告。

要打开代码度量报告,请单击代码度量链接总结选项卡的代码生成报告。

依赖:

  • 代码生成器仅在以下情况下生成静态代码度量报告GenerateReport真正的或者如果你指定报告选择的codegen报告。

看到为MATLAB代码生成的代码生成一个静态代码度量报告(嵌入式编码)

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

价值 描述

此值为默认值。

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

真正的

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

代码替换报告,按本表中的值指定。

价值 描述

此值为默认值。

代码生成器不生成代码替换报告。

真正的

代码生成器生成一个代码替换报告,该报告总结了来自所选代码替换库的替换。该报告提供了每个代码替换实例与触发替换的MATLAB代码行之间的映射。

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

价值 描述
真正的

此值为默认值。

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

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

所有switch语句的默认情况,指定为该表中的一个值。

价值 描述

此值为默认值。

代码生成器可能不会为某些switch语句生成默认情况。

真正的 代码生成器为生成的代码中的所有switch语句生成默认情况。

一些编码标准,如MISRA,要求switch语句使用默认情况。

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

价值 描述
“GenerateCodeOnly”

此值为默认值。

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

“DoNotGenerate”

代码生成器不会生成一个示例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定为该表中的值之一。

价值 描述
真正的

此值为默认值。

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

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

依赖:

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

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

价值 描述

此值为默认值。

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

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

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

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

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

依赖关系:

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

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

注意:

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

为PIL执行指定硬件板,请参阅在命令行使用ARM Cortex-A执行PIL(嵌入式编码)

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

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

指定HeaderGuardStyle作为表中的值之一。

价值 描述
UseIncludeGuard

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

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

在代码生成报告中突出显示潜在的数据类型问题,指定为该表中的值之一。

价值 描述

此值为默认值。

此代码生成报告没有突出潜在的数据类型问题。

真正的

代码生成报告强调了在生成的C/ c++代码中导致单精度或双精度操作的MATLAB代码。如果您有Fixed-Point Designer™,报告还会突出显示MATLAB代码中导致生成代码中昂贵的定点操作的表达式。

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

价值 描述
真正的

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

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

看到行主数组布局的代码设计

初始化函数生成,指定为本表中的值之一。

价值 描述
真正的

此值为默认值。

代码生成器生成一个初始化函数。

代码生成器不生成初始化函数。如果你设置IncludeInitializeFcn并且需要一个初始化函数,例如,为非有限数据调用支持代码(金宝app)时,代码生成器将生成错误消息。

看到在生成的代码中需要一个非空初始化函数的MATLAB代码模式(嵌入式编码)

终止函数生成,指定为该表中的一个值。

价值 描述
真正的

此值为默认值。

代码生成器产生一个terminate函数。

代码生成器不生成terminate函数。如果你设置IncludeTerminateFcn如果需要terminate函数,例如,要释放内存,代码生成器会发出警告。

每个缩进级别的字符数,指定为[2,8]范围内的正整数。

在生成的代码中放置大括号的样式,指定为该表中的值之一。

价值 描述
“k和r”

此值为默认值。

对于函数中的块,左大括号与它的控制语句在同一行。例如:

Void addone(const double x[6], double z[6]) {int i0;For (i0 = 0;i0 < 6;{z[I0] = x[I0] + 1.0;} }

“奥尔曼”

对于函数中的块,左大括号在其自己的行上,其缩进级别与其控制语句相同。例如:

Void addone(const double x[6], double z[6]) {int i0;For (i0 = 0;i0 < 6;{z[I0] = x[I0] + 1.0;} }

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

价值 描述
真正的

此值为默认值。

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

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

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

价值 描述
“速度”

此值为默认值。

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

“总是”

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

“可读性”

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

“永远”

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

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

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

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

价值 描述
“速度”

此值为默认值。

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

“总是”

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

“可读性”

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

“永远”

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

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

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

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

价值 描述
“速度”

此值为默认值。

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

“总是”

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

“可读性”

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

“永远”

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

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

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

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

价值 描述

此值为默认值。

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

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

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

看到展开for循环

MATLAB函数帮助文本在函数banner中生成的代码指定为本表中的值之一。

价值 描述
真正的

此值为默认值。

代码生成器在生成的代码的函数横幅中包含MATLAB函数帮助文本。

代码生成器将帮助文本视为用户注释。

如果不选择,MATLAB编码器将帮助文本视为用户评论。

依赖关系:

  • GenerateComments支持这个参数。

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

价值 描述

此值为默认值。

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

真正的

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

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

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

依赖:

  • GenerateComments支持这个参数。

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

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

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

默认值:

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

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

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

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

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

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

看到memcpy优化memset优化

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

价值 描述

此值为默认值。

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

真正的

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

看到可重入代码

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

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

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

生成代码中的括号级别,指定为该表中的值之一。

价值 描述
“名义”

此值为默认值。

代码生成器插入括号以平衡可读性和视觉复杂性。例如:

Out = ((In2 - In1 > 1.0) && (In2 > 2.0));

“最大”

代码生成器包含括号来指定含义,而不依赖操作符优先级。使用此设置生成的代码符合MISRA要求。例如:

Out = (((In2 - In1) > 1.0) && (In2 > 2.0));

“最低”

代码生成器在ANSI需要的地方插入括号®C或c++,或重写默认优先级。例如:

Out = In2 - In1 > 1.0 && In2 > 2.0;

如果您生成的C/ c++代码使用了最低级别,对于某些编译器中的某些设置,您可以收到编译器警告。要消除这些警告,请尝试名义级别。

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

价值 描述
真正的

此值为默认值。

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

请注意

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

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

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

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

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

看到构建流程定制

保存的走读生在生成的代码中函数声明中的关键字,指定为该表中的值之一。

价值 描述
真正的

此值为默认值。

代码生成器包括走读生关键字在外部函数的声明中。

代码生成器删除走读生函数声明中的关键字。

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

价值 描述

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

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

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

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

价值 描述
“没有”

此值为默认值。

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

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

“用户名”

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

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

“所有”

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

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

浮点代码的检测,指定为该表中的值之一。

价值 描述

此值为默认值。

代码生成器允许浮点数据和操作。

真正的

代码生成器不允许浮点数据或操作。如果代码生成器检测到浮点数据或操作,则代码生成将以错误结束。

依赖:

  • 设置PurelyIntegerCode真正的禁用金宝appSupportNonFinite参数。设置PurelyIntegerCode使金宝appSupportNonFinite参数。

为这些MATLAB内置数据类型指定自定义名称:uint8uint16uint32uint64int8int16int32int64字符,逻辑在生成的C/ c++代码中。

依赖:

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

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

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

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

看到潜在的差异报告

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

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

价值 描述
字符串数组

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

字符向量的单元格数组

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

特征向量

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

请注意

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

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

价值 描述

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

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

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

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

价值 描述
真正的

此值为默认值。

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

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

依赖:

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

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

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

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

价值 描述

此值为默认值。

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

真正的

生成的代码将检查诸如超出边界的数组索引之类的错误。

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

错误信息是英文的。

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

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

价值 描述
真正的

此值为默认值。

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

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

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

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

在循环中软件(SIL)执行期间生成代码的源代码级调试,指定为该表中的值之一。

价值 描述

此值为默认值。

在SIL执行期间禁用对生成代码的调试。

真正的

允许调试器在软件在循环(SIL)执行期间观察代码行为。

金宝app调试器支持:

  • 在Windows上®微软®Visual c++®调试器。

  • 在Linux上®, GNU®数据显示调试器。

看到在SIL执行期间调试生成的代码(嵌入式编码)

SIL或PIL执行的恒定输入检查模式,指定为该表中的一个值。

价值 描述
真正的

此值为默认值。

SIL或PIL执行将测试文件为常量输入参数提供的值与代码生成时指定的值进行比较。如果值不匹配,则会发生错误。

SIL或PIL执行不会将测试文件为常量输入参数提供的值与代码生成时指定的值进行比较。SIL或PIL执行使用代码生成时指定的值。如果测试文件使用不同的值,那么MATLAB中的结果可能与SIL或PIL执行中的结果不同。

可以通过设置来加速SIL或PIL执行SILPILCheckConstantInputs

看到通过禁用常量输入检查和全局数据同步来加速SIL/PIL执行(嵌入式编码)

SIL或PIL执行的全局数据同步模式,指定为该表中的一个值。

价值 描述
真正的

此值为默认值。

SIL或PIL执行将SIL或PIL执行环境中的全局变量值与MATLAB工作空间中的值同步。如果一个全局变量是常量,并且它在SIL或PIL执行环境中的值与它在MATLAB工作空间中的值不同,就会发生错误。

SIL或PIL执行并不同步SIL或PIL执行环境中的全局变量值与MATLAB工作空间中的值。如果值不是同步的,MATLAB中的结果可能与SIL或PIL执行中的结果不同。

可以通过设置来加速SIL或PIL执行SILPILSyncGlobalData

看到通过禁用常量输入检查和全局数据同步来加速SIL/PIL执行(嵌入式编码)

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

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

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

价值 描述
真正的

此值为默认值。

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

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

代码生成器不生成支持非有限值的代码。金宝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主机没有在中指定的工具链cfg。工具链属性时,此参数将恢复为其默认值。默认值为“自动定位安装的工具链”

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

价值 描述

此值为默认值。

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

真正的

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

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

价值 描述
“沉默”

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

显示警告和错误信息。

“信息”

此值为默认值。

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

  • 代码生成成功

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

“详细”

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

代码验证模式,指定为该表中的值之一。

价值 描述
“没有” 正常执行
“银” Software-in-the-loop (SIL)执行
“公益诉讼” Processor-in-the-loop(公益诉讼)执行

看到通过软件在环和处理器在环执行的代码验证(嵌入式编码)

例子

全部折叠

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

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

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

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

如果已安装Embedded Coder,coder.config创建一个编码器。EmbeddedCodeConfig对象。

更改不希望使用默认值的属性值。例如,将生成代码中的注释样式更改为一行注释//

cfg。CommentStyle =单行的

CommentStyle属性仅在嵌入式编码器配置对象中可用。

使用以下命令生成代码codegen.将配置对象传递给codegen通过使用配置选择。指定输入参数为标量双精度。

codegenmyadd配置cfgarg游戏{1}报告

选择功能

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

兼容性的考虑

全部展开

未来版本中的行为改变

未来版本中的行为改变

介绍了R2011a