exponenta event banner

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

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

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

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

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

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

  • Определение subsindex метод в классе A который преобразует A в целое число. Вызовы MATLAB A subsindex способ выполнения операций индексации при классе 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 в uint8. Второй предполагает класс A сохраняет значение индекса в свойстве.

  • 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.

См. также

| |

Связанные примеры

Подробнее