主要内容

coder.StructType 类

命名空间: coder
超类: coder.ArrayType

表示输入设定可接受的一组 MATLAB 结构体数组

描述

coder.StructType 的对象指定生成的代码应接受的结构体数组。此类的对象仅可与 codegen 命令的 -args 选项结合使用。不可作为生成的 MEX 函数的输入传递。

创建对象

t = coder.typeof(structV) 为与标量结构体 struct_v 具有相同字段的结构体创建 coder.StructType 对象。

t = coder.typeof(structV,sz,variableDims) 创建一个 coder.StructType,其上界大小由 sz 指定,可变维度由 variableDims 指示。如果 sz 为一个维度指定 Inf,则该维度的大小无界且具有可变大小。当 sz[] 时,structV 的上界大小保持不变。如果不指定 variableDims,则该类型的有界维度为固定大小。当 variableDims 是标量时,此函数将此值应用于不是 10 的有界维度,它们具有固定大小。

t = coder.newtype('struct',structV,sz,variableDims) 为一个结构体数组创建一个 coder.StructType 对象,该结构体数组具有与标量结构体 structV 相同的字段,并且具有上界大小 sz 以及 variableDims 中指示的可变维度。如果 sz 为一个维度指定 Inf,则假定该维度的大小为无界并且具有可变大小。如果不指定 variableDims,则该类型的有界维度为固定大小。当 variableDims 是标量时,此函数将此值应用于不是 10 的有界维度,它们具有固定大小。

注意

您可以使用代码生成器生成类型编辑器以交互方式创建和编辑 coder.Type 对象。请参阅Create and Edit Input Types by Using the Coder Type Editor

输入参量

全部展开

输入结构体变量(用于指定新结构体类型中的字段),指定为标量结构体。

类型对象维度的大小,指定为整数向量。

指定每个维度是否具有可变大小的选项,指定为布尔向量。如果将此向量的一个元素指定为 1,则对应的维度具有可变大小。否则,该维度具有固定大小。

属性

全部展开

此类型的结构体的运行时内存对齐方式,以字节为单位。您只能将此属性用于外部定义的结构体。

如果您有 Embedded Coder® 许可证并使用代码替换库 (CRL),则可以将指定为替换函数输入的数据对象与指定的边界对齐。使用此功能可以利用要求对齐数据的目标特定函数实现。默认情况下,类不会将结构体与特定边界对齐,这意味着要求对齐的 CRL 函数与默认结构体不匹配。

值类名称,以字符串标量形式返回。

指示结构体是否在外部定义,以 10 形式返回。值 1 表示该结构体在外部定义。值 0 表示该结构体在内部定义。

结构体中字段的类型,指定为结构体。

外部头文件名,以非空字符向量或字符串标量形式返回。如果结构体类型在外部定义,则为包含结构体外部定义的头文件的名称,例如 "mystruct.h"使用 codegen -I 选项或在 MATLAB® Coder™ 工程设置的自定义代码选项卡中的其他包括目录参数指定文件的路径。

默认情况下,生成的代码在标准头文件后包含自定义头文件的 #include 语句。如果标准头文件引用自定义结构体类型,则编译会失败。通过指定 HeaderFile 属性,MATLAB Coder 将头文件包含在所需的位置。

类型对象的上界,指定为整数向量或整数标量。

指定数组的每个维度具有固定大小还是可变大小的选项。值 1 表示对应的元素具有可变大小。值 0 表示对应的元素具有固定大小。

示例

全部折叠

此示例说明如何为具有可变大小字段的结构体创建一个类型。

使用 coder.typeof 创建一个类型对象。

x.a = coder.typeof(0,[3 5],1);
x.b = magic(3);
t = coder.typeof(x)
t = 
coder.StructType
   1×1 struct
      a: :3×:5 double
      b: 3×3 double

    Edit Type Object

创建外部定义的结构体类型

创建一个外部定义的结构体类型。

S.a = coder.typeof(double(0));
S.b = coder.typeof(single(0));
T = coder.typeof(S);
T = coder.cstructname(T,'mytype','extern',HeaderFile='myheader.h');

查看结构体字段的类型。

T.Fields
ans = struct with fields:
    a: [1×1 coder.PrimitiveType]
    b: [1×1 coder.PrimitiveType]

创建一个结构体类型。

ta = coder.newtype('int8',[1 1]);
tb = coder.newtype('double',[1 2],[1 1]);
z = coder.newtype('struct',struct('a',ta,'b',tb))
coder.StructType
   1x1 struct
      a: 1x1 int8 
      b: :1x:2 double  

为具有此类型的一个输入参数的 MATLAB 函数 fcn.m 生成 C 库。

codegen -config:lib fcn -args {z}

版本历史记录

在 R2011a 中推出