This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

Objects in Index Expressions

Objects 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 subsref or subsasgn method defined by the class of 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):

  • Define a subsindex method in the class of A that converts A to an integer. MATLAB calls A's subsindex method to perform indexing operations when the class of X does not overload subsref or subsasgn.

  • If the class of X overloads subsref or subsasgn, these methods can call the subsindex method of A explicitly. The class of A must implement a subsindex method that returns an appropriate value.

  • If the class of X overloads subsref or subsasgn, these methods can contain code that determines an integer index value. In this case, the class of A does not implement a subsindex method.

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.

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.

  • The subsindex method implemented by class A can convert the object to numeric format to be used as an index:

    function ind = subsindex(obj)
       ind = uint8(obj);
    end

    The class of obj implements a uint8 method to provide the conversion from the object to an integer value.

  • Class A implements subsindex to return a numeric value that is stored in a property:

    function ind = subsindex(obj)
       ind = obj.ElementIndex;
    end

Note

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

See Also

| |

Related Examples

More About