coder.typeof
创建 coder.Type 对象来表示入口函数输入的类型
语法
说明
注意
您还可以使用代码生成器生成类型编辑器以交互方式创建和编辑 coder.Type 对象。请参阅Create and Edit Input Types by Using the Coder Type Editor。
创建一个从 type_obj = coder.typeof(v)coder.Type 派生的对象,以表示用于代码生成的 v 的类型。使用 coder.typeof 仅指定输入参数类型。当您通过提供示例代码来定义输入类型时,将它与 codegen 函数 -args 选项结合使用,或用在 MATLAB® Coder™ 工程中。不要在您打算从中生成代码的 MATLAB 代码中使用它。
返回 type_obj = coder.typeof(v,sz,variable_dims)type_obj = coder.typeof(v) 的修改副本,其上界大小由 sz 指定,可变维度由 variable_dims 指定。
示例
输入参数
输出参量
限制
对于稀疏矩阵,
coder.typeof会删除可变大小维度的上界。不支持标量 GPU 数组、结构体、元胞数组、类、枚举类型、字符、半精度和定点数据类型。
当使用
coder.typeof表示 GPU 数组时,GPU 代码配置对象的内存分配 (malloc) 模式属性必须设置为'discrete'。您无法将未配置的字典传递给
coder.typeof。
提示
coder.typeof会固定单一维度的大小,除非variable_dims参量显式指定单一维度的大小可变。例如,以下代码指定一个 1×:10 的双精度数组。第一个维度(单一维度)具有固定大小。第二个维度具有可变大小。
而以下代码指定一个 :1×:10 双精度数组。两个维度都具有可变大小。t = coder.typeof(5,[1 10],1)
t = coder.typeof(5,[1 10],[1 1])
注意
对于 MATLAB Function 模块,输入或输出信号的单一维度不能有可变大小。
如果您已使用类型函数指定输入变量的类型,请不要使用
coder.typeof,除非您还想指定大小。例如,使用语法single(0),而不是coder.typeof(single(0))。对于元胞数组类型,
coder.typeof确定元胞数组类型是同构还是异构。如果元胞数组元素具有相同的类和大小,
coder.typeof将返回同构元胞数组类型。如果元素具有不同的类,
coder.typeof将返回异构元胞数组类型。对于一些元胞数组,同构或异构的分类具有多义性。例如,{1 [2 3]} 的类型可以是 1×2 异构类型,其中第一个元素是双精度值,第二个元素是 1×2 双精度数组。该类型也可以是 1×3 同构类型,其中元素的类为双精度,大小为 1×:2。对于这些具有多义性的情况,
coder.typeof使用启发式方法将类型分类为同构或异构。如果您需要不同分类,请使用 coder.CellTypemakeHomogeneous或makeHeterogeneous方法来创建具有所需分类的类型。makeHomogeneous方法创建类型的同构副本。makeHeterogeneous方法创建类型的异构副本。makeHomogeneous和makeHeterogeneous方法永久性地将分类指定为同构和异构。您不能在后面使用这些方法之一来创建具有不同分类的副本。您可以使用
coder.typeof创建一个无界 GPU 数组输入,并将其传递给入口函数。例如,使用coder.typeof(int32(1),[inf,1],'Gpu',true)创建一个 GPU 输入。在使用 GPU 数组类型生成代码的过程中,如果入口函数的一个输入是 GPU 数组类型,则输出变量均为 GPU 数组类型,前提是它们支持 GPU 代码生成。例如,如果入口函数返回
struct,并且由于不支持struct,则生成的代码会返回 CPU 输出。但是,如果返回了支持的矩阵类型,则生成的代码将返回 GPU 输出。