主要内容

substruct

创建索引结构体参量

说明

S = substruct(type,subs) 创建一个结构体,其中包含 subsrefsubsasgn 函数所需的信息。type 参量指示索引表达式是圆括号、点还是花括号。对应的 subs 参量对于点索引是字段名称,对于圆括号或花括号索引是包含索引向量的元胞数组。

注意

通过显式调用 subsrefsubsasgn 函数执行索引的速度始终比执行等效的索引语句慢。

示例

S = substruct(type1,subs1,type2,subs2,...) 为复合索引表达式创建一个结构体数组,每个 typesubs 对组表示一个索引表达式。

示例

示例

全部折叠

创建一个 2×2 数组,并使用标准索引语法显示在 (1,2) 处的元素。

A = magic(2);
A(1,2)
ans =

     3

使用 substruct 函数创建一个描述该索引操作的结构体。

S = substruct("()",{1,2})
S = 

  struct with fields:

    type: "()"
    subs: {[1]  [2]}

使用来自 substruct 的结果调用 subsref,以执行等效于 A(1,2) 的运算。

subsref(A,S)
ans =

     3

创建一个 1×2 结构体数组 x,其中包含字段 namenumbers。显示在 x(2) 处的条目的数据 numbers(3:4)

x.name = "Clara";
x.numbers = [1 3 5 7];
x(2).name = "Jorge";
x(2).numbers = [2 4 6 8];
x(2).numbers(3:4)
ans =

     6     8

x(2).numbers(3:4) 具有三个索引表达式:一个圆括号表达式、一个点表达式和另一个圆括号表达式。使用 substruct 函数创建一个描述该索引表达式的结构体数组。

 S = substruct("()",{2},".","numbers","()",{3:4});

使用来自 substruct 的结果调用 subsref,以执行等效于 x(2).numbers(3:4) 的运算。

subsref(x,S)
ans =

     6     8

输入参数

全部折叠

索引表达式的类型,指定为 "()"".""{}",分别表示圆括号索引、点索引或花括号索引。该值可以是字符向量或字符串标量。

下标值,指定为字符向量或字符串标量(对于点索引),或者指定为索引向量元胞数组(对于圆括号索引或花括号索引)。

输出参量

全部折叠

索引参量结构体(也称为子结构体),指定为结构体数组。每个结构体有两个字段:

  • type - 索引表达式的类型,指定为 "()"".""{}",分别表示圆括号索引、点索引或花括号索引。该值可以是字符向量或字符串标量。

  • subs - 下标值,指定为字符向量或字符串(对于点索引),或者指定为索引向量元胞数组(对于圆括号索引或花括号索引)。

S 是标量结构体(对于单个索引表达式,如 A{1})或者结构体数组(对于复合索引表达式)。例如,A{1}.field(3:5) 有三个索引级别。对于此表达式,S 是 1×3 结构体数组:

S(1)

type: '{}'

subs: {[1]}

S(2)

type: '.'

subs: 'field'

S(3)

type: '()'

subs: {[3 4 5]}

提示

扩展功能

全部展开

版本历史记录

在 R2006a 之前推出