Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

subsref

下标引用

说明

类重载 subsref 以实现该类对象的自定义索引行为。有关详细信息,请参阅对象索引

示例

A 是对象时,MATLAB® 对语法 A(i)A{i}A.i 调用 B = subsref(A,S)

示例

全部折叠

此示例说明对于以下索引表达式,MATLAB® 如何调用 subsref

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

    17    24     1     8    15
    23     5     7    14    16

语法 A(1:2,:) 会执行调用 B = subsref(A,S),其中 S 是 1×1 结构体,且 S.type 是 '()',S.subs 是 {1:2,':'}。冒号字符指示冒号用作下标。

此示例说明对于使用花括号的索引表达式, MATLAB® 如何调用 subsref

C = {"one", 2, 'three'};
C{1:2}
ans = 
"one"
ans = 2

语法 C{1:2} 会调用 [c1,c2] = subsref(C,S),其中 S.type'{}'S.subs{[1 2]}

此示例说明对于使用圆点表示法的索引表达式, MATLAB® 如何调用 subsref

A = struct('number',10);
A.number
ans = 10

语法 A.number 会执行调用 B = subsref(A,S),其中 S.Type'.'S.subs'number'

输入参数

全部折叠

索引对象数组,由 MATLAB 传递的作为索引表达式一部分的对象数组。

索引结构体,MATLAB 将其作为索引表达式的索引 substruct 传递,以调用 subsref。该结构体具有以下字段:

  • type - 包含 (){}. 的字符向量或字符串标量,用于指定下标类型。

  • subs - 包含实际下标的元胞数组、字符向量或字符串标量。

索引表达式可以使用多个级别来构成更复杂的表达式。例如,A{1}.field(3:5) 有三个索引级别。对于此表达式,S 是 3×1 结构体数组,包含以下字段:

disp(S(1))
    type: '{}'
    subs: {[1]}
disp(S(2))
    type: '.'
    subs: 'field'
disp(S(3))
    type: '()'
    subs: {[3 4 5]}

数据类型: struct

输出参数

全部折叠

索引表达式的结果。

详细信息

全部折叠

了解索引表达式

A(I) 是由下标向量 I 指定的 A 中的元素组成的数组。生成的数组的大小与 I 相同,但 AI 均为向量的特殊情况除外。在这种情况下,A(I) 的元素数与 I 相同,但具有 A 的方向。

A(I,J) 是由 A 的矩形子矩阵的元素组成的数组,该矩形子矩阵由下标向量 IJ 指定。生成的数组包含 length(I) 个行和 length(J) 个列。冒号作为下标时表示该维度中的所有元素。例如,A(I,:) 表示向量 I 指定的行的所有列。同样,A(:,J) 表示 J 指定的列的所有行。

A(I,J,K,...) 是下标指定的数组。结果是 length(I)×length(J)×length(K)...

A{I}(其中 A 是元胞数组,I 是标量)构成 A 的指定元胞中数组的一个副本。如果 I 有多个元素,此表达式是以逗号分隔的列表。您也可以使用多个下标来指定标量元素,如 A{3,4} 中所示。

A(I).field(其中 A 是结构体数组,I 是标量)构成名为 field 的字段中数组的一个副本。如果 I 有多个元素,此表达式是以逗号分隔的列表。如果 A 是 1×1 结构体数组,则下标可以丢弃。在本例中,A.fieldA(1).field 的大小相同。

扩展功能

在 R2006a 之前推出