主要内容

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双

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

为可变大小的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双

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双

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

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 =结构(“一个”、双(0)“b”单(0));管理员。x = coder.typeof(年代);管理员。y =单(0);coder.typeof(管理员)
ans =编码器。StructType1×1结构体x: 1×1 struct a: 1×1 double b: 1×1 single y: 1×1 single

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

S =结构(“一个”、双(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

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

一个= coder.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

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

一个= coder.typeof (“一个”);b = coder.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。一边= val;结束结束函数A = calcarea(obj) A = obj。* obj.side;结束结束结束

2.创建对象mySquare

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

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

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

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

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

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

s =“就是”

从创建类型年代

t = coder.typeof(年代);

分配StringLength属性的字符串长度和集合的上界VariableStringLength真正的.指定类型对象t是可变大小的,上限为10。

t.StringLength = 10;t.VariableStringLength = true;

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

t.StringLength =正;
这将自动设置VariableStringLength财产真正的

将类型传递给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
复数的支持:是的

指定类型对象的每个维度的大小向量。

如果深圳指定对于一个维度,则该维度的大小是无界的,并且该维度是可变大小的。当深圳[]的上界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 = coder.typeof((5、6));

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

输出参数

全部折叠

编码器。类型的类型v代码生成。

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

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

限制

  • 为稀疏矩阵,coder.typeof删除可变尺寸尺寸的上界。

  • 为了表示GPU阵列,只支持有限的数字和逻辑基类型。不支持标量GPU数组、结构、单元格数组、类、枚举类型、字符、半精度和定点数据类型。

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

提示

  • coder.typeof修复单例维度的大小,除非variable_dims参数显式指定单例维度具有可变大小。

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

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

    请注意

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

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

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

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

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

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

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

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

版本历史

介绍了R2011a

Baidu
map