Coder.typeof.

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

描述

例子

笔记

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

type_obj.= coder.typeof(V.创建派生的对象编码器.Type.表示类型V.用于代码生成。采用Coder.typeof.仅指定输入参数类型。用它Codegen.功能- args.选项或在一个马铃薯®编码器™通过提供示例代码定义输入类型时项目。请勿在MATLAB代码中使用它,您打算从中生成代码。

例子

type_obj.= coder.typeof(V.SZ.变量_dims.返回修改后的副本type_obj.= coder.typeof(V.)具有上限尺寸指定SZ.和可变尺寸指定变量_dims.

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

例子

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

例子

全部收缩

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

Coder.typeof((5,6))
ans = coder.primitivetype 5×6双倍

Coder.typeof(0,[5 6])
ans = coder.primitivetype 5×6双倍

为变量大小的双打矩阵创建类型。

Coder.typeof((3,3),[],1)
ans = coder.primiteType:3×:3 double%':'表示可变尺寸尺寸

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

Coder.typeof(0,[2,3,4],[1 0 1])
ans = coder.primitiveType:2×3×:4双倍

Coder.typeof(10,[1 5],1)
ans = coder.primitiveType 1×:5 double%':'表示可变尺寸的尺寸

为双打矩阵创建一个类型,第一维无界,第二尺寸,具有固定大小。

Coder.typeof(10,[INF,3])
ans = coder.primitiveType:inf×3 double%':'表示可变尺寸的尺寸

为双打矩阵创建一种类型,第一维无界,具有具有3个上限的变量大小的第二维度。

Coder.typeof(10,[INF,3],[0 1])
ANS = Coder.primitiveType:INF×:3双倍

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

Coder.typeof(1/5),[],1)
ans = coder.primiteType:5×:5 double%':'表示可变尺寸尺寸

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

x.a = coder.typeof(0,[3 5],1);X.B =魔术(3);coder.typeof(x)
ANS = Coder.StructType 1×1结构A :: 3×:5双B:3×3双%':'表示可变尺寸尺寸

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

s = struct('一种',双(0),'B',单(0));supers.x = coder.typeof;Supers.y =单(0);Coder.typeof(超级)
ANS = Coder.StructType 1×1结构x:1×1结构A:1×1双B:1×1单y:1×1单

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

s = struct('一种',双(0),'B',单(0));supers.x = coder.typeof(s,[1 inf],[0 1]);Supers.y =单(0);Coder.typeof(超级)
ANS =编码器。结构型1×1结构x:1×:INF STRUCT A:1×1双B:1×1单y:1×1单个%':'表示可变尺寸尺寸

为具有变量大小字段的同类单元阵列创建类型。

a = coder.typeof(0,[3 5],1);B =魔术(3);Coder.typeof({a b})
ANS = Coder.celttype 1×2同质细胞基数:3×:5 double%':'表示可变尺寸尺寸

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

a = coder.typeof('一种');b = coder.typeof(1);Coder.typeof({a b})
ANS = Coder.celltype 1×2异质电池F1:1×1炭F2:1×1双

从具有相同类但不同尺寸的单元格数组创建一个变量大小的同类单元阵列类型。

1.为单元格数组创建一个类型,其中包含具有不同大小的两个字符向量。电池阵列类型是异质的。

coder.typeof({'aa''BBB'})
ANS = Coder.celltype 1×2异构电池F1:1×2 CHAR F2:1×3炭

2.使用相同的单元格阵列输入创建类型。这次,指定单元格数组类型具有可变大小的维度。细胞阵列类型是均匀的。

coder.typeof({'aa''BBB'},[1,10],[0,1])
ANS = Coder.celltype 1×:10锁定的同质细胞基数:1×:3 CHAR%':'表示可变尺寸尺寸

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

为值类对象创建一种类型。

1.创建此值类:

Classdef.MySquare.特性边;结尾方法功能obj = mysquare(val)如果nargin> 0 obj.side = val;结尾结尾功能a = calcarea(obj)a = obj.side * obj.side;结尾结尾结尾

2.创建一个对象MySquare.

sq_obj = coder.typeof(mysquare(4))
sq_obj = coder.classtype 1×1 mysquare侧:1×1双

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

t = coder.typeof(sq_obj)
t =编码器.Classtype 1×1 MySquare侧:1×1双

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

t = coder.typeof(MySquare(4))
t =编码器.Classtype 1×1 MySquare侧:1×1双

定义字符串标量。例如:

S =“mystring”;

创建一种类型S.

t = coder.typeof;

制作T.可变大小,分配价值财产T.对于具有所需的上限的可变大小字符向量的类型。例如,指定该类型T.可变尺寸,上限为10。

t.properties.value = coder.typeof('一种',[110],[0 1]);

指明T.是可变的大小,没有上限:

t.properties.value = coder.typeof('一种',[1款]);

通过类型Codegen.通过使用- args.选项。

Codegen.myfunction.-  args.{t}

输入参数

全部收缩

V.可以是matlab数字,逻辑,char,枚举或固定点数组。V.也可以是包含先前类型的单元数组,结构或值类。

什么时候V.是一个单元数组,其元素具有相同的类但不同尺寸,如果指定可变大小维度,Coder.typeof.创建一个均匀的单元阵列类型。如果元素有不同的类,Coder.typeof.报告错误。

例子:Coder.typeof((5,6));

数据类型:一半|单身的|双倍的|INT8.|int16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64|逻辑|char|细绳|塑造|桌子|细胞|function_handle.|分类|约会时间|期间|日历|FI.
复数支持:万博1manbetx是的

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

如果SZ.指定INF.对于尺寸,那么尺寸的大小是无界的,尺寸是可变的大小。什么时候SZ.[],上限V.不要换。

如果未指定大小,则SZ.采取默认维度V.

例子:Coder.typeof(0,[5,6]);

数据类型:单身的|双倍的|INT8.|int16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64

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

如果您没有指定变量_dims.输入参数,类型的界限尺寸是固定的。

一个标量变量_dims.适用于所有尺寸。但是,如果变量_dims.1,单身尺寸的尺寸仍然是固定的。

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

数据类型:逻辑

编码器.Type.对象表示类型V.用于代码生成。

例子:type_obj = coder.typeof(1,6));

数据类型:单身的|双倍的|INT8.|int16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64|逻辑|char|细绳|塑造|桌子|细胞|function_handle.|分类|约会时间|期间|日历|FI.
复数支持:万博1manbetx是的

输出参数

全部收缩

编码器.Type.对象表示类型V.用于代码生成。

例子:type_obj = coder.typeof(1,6));

数据类型:单身的|双倍的|INT8.|int16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64|逻辑|char|细绳|塑造|桌子|细胞|function_handle.|分类|约会时间|期间|日历|FI.
复数支持:万博1manbetx是的

限制

  • 对于稀疏矩阵,Coder.typeof.丢弃可变尺寸尺寸的上限。

  • 对于代表GPU阵列,仅支持界限数字和逻辑基础类型。万博1manbetx不支持SCOLAR GPU阵列,结构,单元格,类,枚举类型,字符,半精度和定点数据类型。万博1manbetx

  • 使用时Coder.typeof.要代表GPU阵列,必须将GPU代码配置对象的内存分配(Malloc)模式属性设置为'离散的'

提示

  • Coder.typeof.修复单例维度的大小,除非变量_dims.参数明确指定单例维度具有变量大小。

    例如,以下代码指定一个1-of -: 10 double。第一尺寸(单身尺寸)具有固定尺寸。第二维具有可变大小。

    t = coder.typeof(5,[1 10],1)
    相比之下,此代码指定A:1-BY - :10 DOUBLE。这两个尺寸都具有变量尺寸。
    t = coder.typeof(5,[1 10],[1 1])

    笔记

    为一个Matlab功能块,输入或输出信号的单例尺寸不能具有变量大小。

  • 如果您已经通过使用类型功能指定输入变量的类型,请不要使用Coder.typeof.除非您还想要指定大小。例如,而不是Coder.typeof(单(0)),使用语法单(0)

  • 对于单元格阵列类型,Coder.typeof.确定单元阵列类型是否是均匀的或异质的。

    如果小区数组元素具有相同的类和大小,Coder.typeof.返回一个同质的单元阵列类型。

    如果元素有不同的类,Coder.typeof.返回异构单元阵列类型。

    对于一些细胞阵列,分类为均匀或异质是模糊的。例如,{1 [2 3]}的类型可以是1×2异构类型,其中第一元件是双,第二元件是1×2双元件。该类型也可以是1x3均匀类型,其中元件具有类双倍和1x:2。对于这些暧昧的案件,Coder.typeof.使用启发式来将类型分类为均匀或异质。如果您想要不同的分类,请使用coder.celltypemakehomeneous要么makesheternoyous使用您想要的分类进行类型的方法。这makehomeneous方法制作类型的同质副本。这makesheternoyous方法是一种类型的异构拷贝。

    makehomeneousmakesheternoyous方法将分类永久性分配为异质和均匀。您不能稍后使用其中一种方法来创建具有不同分类的副本。

  • 在使用GPU数组类型的代码生成期间,如果对入口点函数的一个输入是GPU阵列类型,则输出变量是所有GPU数组类型,只要它们被支持GPU代码生成。万博1manbetx例如。如果入口点函数返回a塑造而且是因为塑造不支持生成的代万博1manbetx码返回CPU输出。但是,如果返回支持的矩阵类型万博1manbetx,则生成的代码返回GPU输出。

在R2011A介绍