主要内容

coder.typeof

创建编码器。类型对象表示入口点函数输入的类型

描述

例子

请注意

您还可以创建和编辑编码器。类型对象交互使用编码器类型编辑器。看到使用编码器类型编辑器创建和编辑输入类型

type_obj= coder.typeof (v创建派生自的对象编码器。类型表示的类型v用于代码生成。使用coder.typeof仅指定输入参数类型。codegen函数arg游戏选项或在MATLAB®编码器™在通过提供示例代码定义输入类型时,项目。不要在您打算生成代码的MATLAB代码中使用它。

例子

type_obj= coder.typeof (v深圳variable_dims的修改副本type_obj= coder.typeof (v)所指定的上限大小深圳变量维数由variable_dims

type_obj= coder.typeof (v, Gpu,真的)创建派生自的对象编码器。类型代表v作为代码生成的GPU输入类型。此选项需要有效的GPU Coder™许可证。

例子

type_obj= coder.typeof (type_obj返回type_obj本身。

例子

全部折叠

为简单的固定大小创建一个类型5 x6双数矩阵。

coder.typeof(的(5、6)
Ans =编码器。PrimitiveType 5×6 double

coder.typeof(0,[5 6])
Ans =编码器。PrimitiveType 5×6 double

为可变大小的double类型矩阵创建一个类型。

coder.typeof(的(3、3)[],1)
Ans =编码器。PrimitiveType:3×:3 double % ':'表示可变大小的维度

为具有固定大小和可变大小维度的矩阵创建类型。

coder.typeof(0,[2,3,4],[1 0 1])
Ans =编码器。PrimitiveType:2×3×:4 double

coder.typeof(10,[1 5],1)
Ans =编码器。PrimitiveType 1×:5 double % ':'表示可变大小的维度

为一个双精度矩阵创建一个类型,第一维无界,第二维固定大小。

(正,3)coder.typeof(10日)
Ans =编码器。PrimitiveType:inf×3 double % ':'表示可变大小的维度

为一个双精度矩阵创建一个类型,第一维无界,第二维大小可变,上界为3。

coder.typeof(10,[inf,3],[0 1])
Ans =编码器。PrimitiveType:inf×:3 double

将固定大小的矩阵转换为可变大小的矩阵。

coder.typeof(的(5,5),[],1)
Ans =编码器。PrimitiveType:5×:5 double % ':'表示可变大小的维度

为具有可变大小字段的结构创建类型。

X.a =编码器。typeof(0,[3 5],1); x.b = magic(3); coder.typeof(x)
Ans =编码器。StructType1×1结构体a: :3×:5 double b: 3×3 double % ':' indicates variable-size dimensions

创建一个嵌套结构(一个结构作为另一个结构的字段)。

S = struct(“一个”、双(0)“b”单(0));管理员。x = code .typeof(S);管理员。Y =单(0);coder.typeof(管理员)
Ans =编码器。StructType1×1结构体x: 1×1 struct a: 1×1 double b: 1×1 single y: 1×1 single

创建包含可变大小结构数组的结构作为字段。

S = struct(“一个”、双(0)“b”单(0));管理员。X =编码器。typeof(S,[1 inf],[0 1]); SuperS.y = single(0); coder.typeof(SuperS)
Ans =编码器。StructType1×1结构体x: 1×:inf struct a: 1×1 double b: 1×1 single y: 1×1 single % ':' indicates variable-size dimensions

为具有可变大小字段的同构单元格数组创建类型。

A = code .typeof(0,[3 5],1); b = magic(3); coder.typeof({a b})
Ans =编码器。CellType1×2 homogeneous cell base: :3×:5 double % ':' indicates variable-size dimensions

为异构单元格数组创建类型。

A = code .typeof(“一个”);B = code .typeof(1);coder.typeof ({a b})
Ans =编码器。CellType1×2 heterogeneous cell f1: 1×1 char f2: 1×1 double

从具有相同类但大小不同的单元格数组创建可变大小的同构单元格数组类型。

1.为包含两个大小不同的字符向量的单元格数组创建类型。单元格数组类型是异构的。

coder.typeof ({“aa”“bbb”})
Ans =编码器。CellType1×2 heterogeneous cell f1: 1×2 char f2: 1×3 char

2.使用相同的单元格数组输入创建类型。这一次,指定单元格数组类型具有可变大小的维数。单元格数组类型是同构的。

coder.typeof ({“aa”“bbb”}, [1, 10], [0,1])
Ans =编码器。CellType1×:10 locked homogeneous cell base: 1×:3 char % ':' indicates variable-size dimensions

将固定大小的数组更改为有界的可变大小数组。

为值类对象创建类型。

1.创建这个值类:

classdefmySquare属性一面;结束方法函数obj = mySquare(val)如果Nargin > 0 obj。Side = val;结束结束函数A = calcarea(obj) A = obj。Side * obj.side;结束结束结束

2.创建的对象mySquare

sq_obj = code .typeof(mySquare(4))
Sq_obj =编码器。ClassType1×1mySquare年代ide: 1×1 double

3.为具有相同属性的对象创建类型sq_obj

T = code .typeof(sq_obj)
T =编码器。ClassType1×1mySquare年代ide: 1×1 double

或者,你也可以从类定义中创建类型:

t = code .typeof(mySquare(4))
T =编码器。ClassType1×1mySquare年代ide: 1×1 double

定义一个字符串标量。例如:

s =“就是”

创建类型年代

T = code .typeof(s);

为了使t变量大小,赋值价值的属性t到具有所需上限的可变大小字符向量的类型。例如,指定该类型t为可变大小,上限为10。

t.Properties.Value = code .typeof(“一个”,[1 10],[0 1]);

要指定t是可变大小的,没有上限:

t.Properties.Value = code .typeof(“一个”[1正]);

将类型传递给codegen通过使用arg游戏选择。

codegenmyFunctionarg游戏{t}

输入参数

全部折叠

v可以是MATLAB数字、逻辑、字符、枚举或定点数组。v也可以是包含上述类型的单元格数组、结构或值类。

v是单元格数组,其元素具有相同的类但大小不同,如果指定可变大小的维数,coder.typeof创建同构单元格数组类型。如果元素有不同的类,coder.typeof报告错误。

例子:coder.typeof((5、6));

数据类型:一半|||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑|字符|字符串|结构体|表格|细胞|function_handle|分类|datetime|持续时间|calendarDuration|fi
复数支持:金宝app是的

Size向量,指定类型对象的每个维度。

如果深圳指定对于维度,则维度的大小是无界的,并且维度大小是可变的。当深圳[]的上界v不要改变。

如果没有指定size,深圳的默认维度v

例子:coder.typeof(0,(5、6));

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

逻辑向量,指定每个维度是可变大小(true)还是固定大小(false)。对于单元格数组,如果元素具有不同的类,则不能指定可变大小的维数。

如果没有指定variable_dims输入参数时,类型的有界维度是固定的。

一个标量variable_dims适用于所有维度。然而,如果variable_dims1时,单个维度的大小保持固定。

例子:coder.typeof(0,[2,3,4],[1 0 1]);

数据类型:逻辑

编码器。类型对象来表示类型v用于代码生成。

例子:Type_obj = code .typeof(ones(5,6));

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑|字符|字符串|结构体|表格|细胞|function_handle|分类|datetime|持续时间|calendarDuration|fi
复数支持:金宝app是的

输出参数

全部折叠

编码器。类型对象来表示类型v用于代码生成。

例子:Type_obj = code .typeof(ones(5,6));

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑|字符|字符串|结构体|表格|细胞|function_handle|分类|datetime|持续时间|calendarDuration|fi
复数支持:金宝app是的

限制

  • 对于稀疏矩阵,coder.typeof删除可变大小维度的上界。

  • 对于表示GPU数组,只支持有界的数字和逻辑基类型。金宝app不支持标量GPU数组、结构、单元格数组、类、枚举类型、字符、半精度和定点数据类型。金宝app

  • 当使用coder.typeof为了表示GPU阵列,GPU代码配置对象的内存分配(malloc)模式属性必须设置为“离散”

提示

  • coder.typeof方法修复单个维度的大小variable_dims参数显式指定了单个维度具有可变大小。

    例如,下面的代码指定了一个1 ×:10的双精度。第一个维度(单体维度)具有固定的大小。第二个维度的大小是可变的。

    T =编码器。typeof(5,[1 10],1)
    相比之下,这段代码指定了一个:1 ×:10的双精度。这两个维度的大小都是可变的。
    T =编码器。typeof(5,[1 10],[1 1])

    请注意

    对于一个MATLAB函数输入或输出信号的块、单体尺寸不能有可变大小。

  • 如果已经使用类型函数指定了输入变量的类型,则不要使用coder.typeof除非您还想指定大小。例如,而不是coder.typeof(单(0)),使用语法单(0)

  • 对于单元格数组类型,coder.typeof确定单元格数组类型是同构的还是异构的。

    如果单元格数组元素具有相同的类和大小,coder.typeof返回同构单元格数组类型。

    如果元素有不同的类,coder.typeof返回异构单元格数组类型。

    对于一些细胞阵列,同质或异质的分类是不明确的。例如,{1[2 3]}的类型可以是1x2异构类型,其中第一个元素是double,第二个元素是1x2 double。该类型也可以是1x3同构类型,其中元素的类为double,大小为1x:2。对于这些模棱两可的情况,coder.typeof使用启发式将类型分类为同质或异质。如果您想要不同的分类,请使用编码器。CellTypemakeHomogeneousmakeHeterogeneous方法来创建具有所需分类的类型。的makeHomogeneous方法生成类型的同构副本。的makeHeterogeneous方法生成类型的异构副本。

    makeHomogeneous而且makeHeterogeneous方法永久地将分类指定为异质和同质。以后不能使用这些方法之一创建具有不同分类的副本。

  • 在GPU数组类型的代码生成过程中,如果入口点函数的一个输入是GPU数组类型,那么输出变量都是GPU数组类型,前提是它们支持GPU代码生成。金宝app为例。如果入口点函数返回a结构体因为结构体不支持,则生成金宝app的代码返回CPU输出。但是,如果返回支持的矩阵类型金宝app,则生成的代码将返回GPU输出。

在R2011a中引入