主要内容

subsref

使用函数调用的索引引用

说明

B = subsref(A,S) 返回对数组 A 执行的圆括号、花括号或点索引表达式(或这些类型表达式的一个或多个组合)得出的结果。结构体 S 包含要执行的索引表达式的详细信息。

注意

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

示例

示例

全部折叠

创建一个 5×5 数组,并使用标准索引语法显示前两行。

A = magic(5);
B = A(1:2,:)
B = 2×5

    17    24     1     8    15
    23     5     7    14    16

调用 subsref 以执行相同的操作。使用 substruct 函数创建描述索引表达式的结构体。

C = subsref(A,substruct('()',{1:2,':'}))
C = 2×5

    17    24     1     8    15
    23     5     7    14    16

创建一个 1×3 元胞数组,并使用标准索引语法显示前两个元素。

C = {"one",2,'three'};
[c1,c2] = C{1:2}
c1 = 
"one"
c2 = 
2

调用 subsref 以执行相同的操作。使用 substruct 函数创建描述索引表达式的结构体。

[d1,d2] = subsref(C,substruct('{}',{1:2}))
d1 = 
"one"
d2 = 
2

创建一个包含单个字段的结构体,该字段具有向量值。使用标准索引语法显示向量的第二个元素。

A.data = [5 10 15];
A.data(2)
ans = 
10

调用 subsref 以执行相同的操作。使用 substruct 函数创建描述索引表达式的结构体。复合索引表达式包括圆点引用和圆括号引用。

subsref(A,substruct(".","data","()",{2}))
ans = 
10

输入参数

全部折叠

索引表达式的目标,指定为任何数据类型的数组。

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

  • 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]}

数据类型: struct

提示

扩展功能

全部展开

版本历史记录

在 R2006a 之前推出