索引引用
索引引用是如何工作的
对象索引引用三种形式——括号,括号,并且name:
{我}A.name (I)
这些语句在一个由MATLAB调用结果®到subsref
类的一个
,或者调用内置的subsasgn
如果类的函数一个
不实现subsasgn
方法。
MATLAB传递两个参数subsref
并要求subsref
返回索引引用的结果:
B = subsref (A, S)
第一个参数是被引用的对象,一个
。第二个参数,年代
,是一个substruct
两个字段:
S.type
是一个字符
向量包含“()”
,“{}”
,或“。”
指定使用的索引类型。S.subs
是细胞数组或字符
向量包含实际的索引或名称。冒号作为索引单元阵列中传递冒号“:”
。范围使用冒号(例如,指定2:5
)扩展到2 3 4 5
。
例如,表达式:
:一个(1:4)
使MATLAB调用subsref (A, S)
,在那里年代
是一个1×1双元素单元阵列结构。单元阵列包含数字1、2、3、4,冒号:
。
S.type=“()”S.subs= {1:4,“:”}
返回的每个单元格的内容S.subs
给出了第一个维度和索引值字符
向量“:”
第二维度:
S.subs {:}
= 1 2 3 4岁=:
默认的subsref
返回所有行1到4中数组元素,数组中的所有列。
同样,这个表达式:
一个{1:4}
使用一个单元阵列包含数字1,2,3,4。
S.type=“{}”S.subs= {1:4}
默认的subsref
返回所有单元阵列元素的内容行1到4和数组中的所有列。
这个表达式:
A.Name
调用subsref (A, S)
,那里的结构体
年代
这些值:
S.type=“。”S.subs=“名字”
复合索引的引用
这些简单的组合呼吁更复杂的索引表达式。在这种情况下,长度(年代)
是索引的数量水平。例如,
(1、2).PropertyName (1:4)
调用subsref (A, S)
,在那里年代
是一系列3×1的结构体
值:
(1)。类型=“()”(2)。类型=“。”(3)。类型=“()”(1)。潜艇= {1,2}(2)。潜艇=“PropertyName”(3)。潜艇= {1:4}