Objects in Index Expressions
Objects as Indexes
MATLAB® can use objects as indices in indexed expressions. The rules of array indexing apply — indices must be positive integers. Therefore, MATLAB must be able to derive a value from the object that is a positive integer for use in the indexed expression.
Indexed expressions like
A is an
object, cause MATLAB to call the
subsindex function. However, if an
indexing expression results in a call to an overloaded method from
matlab.mixin.indexing.RedefinesBrace defined by class
then MATLAB does not call
Ways to Implement Objects as Indices
There are several ways to implement indexing of one object by another object,
subsindexmethod in the class of
Ato an integer. MATLAB calls
subsindexmethod to perform indexing operations when the class of
Xdoes not overload methods from
If the class of
Xoverloads methods from
RedefinesBracethese methods can call the
Aexplicitly. The class of
Amust implement a
subsindexmethod that returns an appropriate value.
subsindex must return the value of the object as a zero-based integer index value in the range
Suppose that you want to use object
A to index into object
B can be a single object or an array, depending on the class designs.
C = B(A);
Here are two examples of
subsindex methods. The first assumes you can convert class
A to a
uint8. The second assumes class
A stores an index value in a property.
subsindexmethod implemented by class
Acan convert the object to numeric format to be used as an index:
function ind = subsindex(obj) ind = uint8(obj); end
The class of
uint8method to provide the conversion from the object to an integer value.
subsindexto return a numeric value that is stored in a property:
function ind = subsindex(obj) ind = obj.ElementIndex; end
subsindex values are 0-based, not 1-based.