Объекты в индексных выражениях

Индексы объектов

MATLAB® можно использовать объекты как индексы в индексированных выражениях. Применяются правила индексации массивов - индексы должны быть положительными целыми числами. Поэтому MATLAB должен быть в состоянии вывести значение из объекта, который является положительным целым числом для использования в индексированном выражении.

Индексированные выражения, такие как X(A), где A является объектом, из-за чего MATLAB вызывает subsindex функция. Однако, если выражение индексации приводит к вызову перегруженного subsref или subsasgn метод, заданный классом XMATLAB не вызывает subsindex.

Способы реализации объектов как индексов

Существует несколько способов реализации индексации одного объекта другим объектом, X(A):

  • Задайте subsindex метод в классе A который преобразует A в целое число. MATLAB вызывает A<reservedrangesplaceholder0> метод для выполнения операций индексации, когда класс X не перегружает subsref или subsasgn.

  • Если класс X перегрузки subsref или subsasgn, эти методы могут вызывать subsindex метод A явно. Класс A необходимо реализовать subsindex метод, который возвращает соответствующее значение.

  • Если класс X перегрузки subsref или subsasgnэти методы могут содержать код, который определяет целочисленное значение индекса. В этом случае класс A не реализует subsindex способ.

Реализация субиндекса

subsindex необходимо вернуть значение объекта в виде базирующегося на нуле целого значения индекса в области значений 0 на prod(size(X))-1.

Предположим, что вы хотите использовать объект A для индекса в B объектов. B может быть отдельным объектом или массивом, в зависимости от проектов классов.

C = B(A);

Вот два примера subsindex методы. Первый предполагает, что вы можете преобразовать A классов в a uint8. Второй принимает класс A сохраняет значение индекса в свойстве.

  • The subsindex метод, реализованный по классам A можно преобразовать объект в числовой формат, который будет использоваться в качестве индекса:

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

    Класс obj реализует uint8 метод для обеспечения преобразования объекта в целое значение.

  • Классы A орудия subsindex чтобы вернуть числовое значение, которое сохранено в свойстве:

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

Примечание

subsindex значения основаны на 0, а не на 1.

См. также

| |

Похожие примеры

Подробнее о