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
subsasgn method defined by the class of
MATLAB does not call
There are several ways to implement indexing of one object by another object,
subsindex method in the class of
A that converts
A to an integer.
subsindex method to
perform indexing operations when the class of
X does not
If the class of
subsasgn, these methods can call the
subsindex method of
A explicitly. The
A must implement a
that returns an appropriate value.
If the class of
subsasgn, these methods can contain code that determines an
integer index value. In this case, the class of
A does not
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.
subsindex method implemented by class
A can convert the object to numeric format to be used as an
function ind = subsindex(obj) ind = uint8(obj); end
The class of
obj implements a
method to provide the conversion from the object to an integer value.
subsindex to 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.