Objects in Index Expressions - MATLAB & Simulink (original) (raw)

Main Content

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 X(A), where 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.RedefinesParen, matlab.mixin.indexing.RedefinesDot, or matlab.mixin.indexing.RedefinesBrace defined by class X, then MATLAB does not call subsindex.

Ways to Implement Objects as Indices

There are several ways to implement indexing of one object by another object, X(A):

subsindex Implementation

subsindex must return the value of the object as a zero-based integer index value in the range 0 to prod(size(X))-1.

Suppose that you want to use object A to index into object B. B can be a single object or an array, depending on the class designs.

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.

Note

subsindex values are 0-based, not 1-based.

See Also

matlab.mixin.indexing.RedefinesParen | matlab.mixin.indexing.RedefinesDot | matlab.mixin.indexing.RedefinesBrace

Topics