主要内容

coder.typeof

创造编码器.类型对象,以表示入口点函数输入的类型

描述

例子

请注意

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

类型_obj= coder.typeof (v创建派生的对象编码器.类型表示v代码生成。使用coder.typeof仅指定输入参数类型。把它和编码基因作用arg游戏期权或MATLAB®编码器™项目时,您将通过提供示例代码定义输入类型。不要在你想要生成代码的MATLAB代码中使用它。

例子

类型_obj= coder.typeof (v深圳variable_dims的修改副本类型_obj= coder.typeof (v),其上限大小由深圳可变尺寸由variable_dims

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

例子

类型_obj= coder.typeof (类型_obj返回类型_obj它本身

例子

全部折叠

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

coder.typeof(的(5、6)
ans=编码器。原语类型5×6双精度

coder.typeof(0,[5 6])
ans=编码器。原语类型5×6双精度

为双精度浮点数的可变大小矩阵创建类型。

编码器类型(一(3,3),[],1)
ans=coder.PrimitiveType:3×:3 double%':'表示可变大小的维度

为具有固定尺寸和可变尺寸的矩阵创建类型。

编码者的类型(0,[2,3,4],[10-1])
ans =编码器。PrimitiveType: 2×3×4双

coder.typeof(10,[1 5],1)
ans =编码器。PrimitiveType 1×:5 double % ':'表示可变尺寸

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

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

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

编码器类型(10[inf,3],[01])
ans =编码器。PrimitiveType: inf×3双

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

编码器类型(一(5,5),[],1)
ans=coder.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 =结构(“a”、双(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 =结构(“a”、双(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=coder.CellType 1×2同质单元基::3×:5双精度“:”表示可变大小的维度

为异构单元阵列创建类型。

一个= coder.typeof (“a”); b=编码器类型(1);编码器.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.创建这个值类:

classdef迈斯夸尔性质一面;结束方法作用obj = mySquare (val)如果Nargin > 0 obj。一边= val;结束结束作用a=距(obj)a=obj侧*obj侧;结束结束结束

2.创建一个对象迈斯夸尔

sq_obj = coder.typeof (mySquare (4))
sq_obj=编码器。类别类型1×1 mySquare侧:1×1双

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

t = coder.typeof (sq_obj)
t=coder.ClassType 1×1 mySquare侧:1×1双

或者,您可以从类定义创建类型:

t=编码器类型(mySquare(4))
t=coder.ClassType 1×1 mySquare侧:1×1双

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

s =“就是”

从创建类型年代

t=编码器类型;

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

t.Properties.Value = coder.typeof (“a”,[1 10],[0 1]);

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

t.Properties.Value = coder.typeof (“a”[1正]);

将类型传递给编码基因通过使用arg游戏选择。

编码基因myFunctionarg游戏{t}

输入参数

全部折叠

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

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

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

数据类型:一半|仅有一个的|双重的|int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑|字符|一串|结构体|表格|细胞|function_handle|分类|日期时间|持续时间|日历持续时间|fi
复数的支持:金宝app

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

如果深圳指定对于尺寸标注,则尺寸标注的大小是无界的,并且尺寸标注的大小是可变的。什么时候深圳[]的上界v不要改变。

如果未指定大小,深圳的默认维度v

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

数据类型:仅有一个的|双重的|int8|int16|int32|int64|uint8|uint16|uint32|uint64

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

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

标量variable_dims适用于所有尺寸。然而,如果variable_dims1,则单个维度的大小保持不变。

例子:编码者类型(0[2,3,4],[10-1]);

数据类型:逻辑

编码器.类型对象来表示对象的类型v代码生成。

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

数据类型:仅有一个的|双重的|int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑|字符|一串|结构体|表格|细胞|function_handle|分类|日期时间|持续时间|日历持续时间|fi
复数的支持:金宝app

输出参数

全部折叠

编码器.类型对象来表示对象的类型v代码生成。

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

数据类型:仅有一个的|双重的|int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑|字符|一串|结构体|表格|细胞|function_handle|分类|日期时间|持续时间|日历持续时间|fi
复数的支持:金宝app

局限性

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

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

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

提示

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

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

    t =编码器。typeof(5,[1 10],1)
    相比之下,该代码指定了一个:1-by-:10 double。两个维度的大小都是可变的。
    t=编码器类型(5、[110]、[11])

    请注意

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

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

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

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

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

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

    makeHomogeneous使异质方法总是把分类划分为异质和同质。以后不能使用这些方法之一来创建具有不同分类的副本。

  • 在使用GPU阵列类型生成代码时,如果入口点函数有一个输入是GPU阵列类型,则输出变量为所有GPU阵列类型,前提是支持GPU代码生成。金宝app为例。如果入口点函数返回a结构体因为结构体时,生成的代码金宝app将返回一个CPU输出。但是,如果返回支持的矩阵类型金宝app,则生成的代码将返回GPU输出。

介绍了R2011a