subsref
下标引用
说明
对于在 R2021b 及更高版本中创建的类,建议的自定义索引的方式是从 matlab.mixin.indexing.RedefinesParen
、matlab.mixin.indexing.RedefinesDot
和 matlab.mixin.indexing.RedefinesBrace
的某种组合中继承。有关详细信息,请参阅自定义对象索引。
示例
圆括号索引
此示例说明对于以下索引表达式,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 is '()'
,S.subs is {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'
。
输入参数
A
— 索引对象数组
任何对象
索引对象数组,由 MATLAB 传递的作为索引表达式一部分的对象数组。
S
— 索引结构体
专用索引结构体
索引结构体,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
输出参数
B
— 索引表达式的结果
任何类型的值
索引表达式的结果。
详细信息
了解索引表达式
A(I)
是由下标向量 I
指定的 A
中的元素组成的数组。生成的数组的大小与 I
相同,但 A
和 I
均为向量的特殊情况除外。在这种情况下,A(I)
的元素数与 I
相同,但具有 A
的方向。
A(I,J)
是由 A
的矩形子矩阵的元素组成的数组,该矩形子矩阵由下标向量 I
和 J
指定。生成的数组包含 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.field
与 A(1).field
的大小相同。
扩展功能
tall 数组
对行数太多而无法放入内存的数组进行计算。
tall 数组支持有限的索引操作子集。有关详细信息,请参阅Index and View Tall Array Elements。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
用法说明和限制:
不支持对元胞数组使用花括号索引和对结构体使用点索引(GPU 数组不支持元胞数组或结构体)。
有关详细信息,请参阅Run MATLAB Functions on a GPU (Parallel Computing Toolbox)。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
用法说明和限制:
不支持对元胞数组使用花括号索引和对结构体使用点索引。
有关详细信息,请参阅Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)