MATLAB® может использовать объекты в качестве индексов в индексируемых выражениях. Правила индексации массива применяются — индексы должны быть положительными целыми числами. Поэтому MATLAB должен смочь получить значение на объект, который является положительным целым числом для использования в индексируемом выражении.
Индексируемые выражения как X(A), где A объект, причина MATLAB, чтобы вызвать subsindex функция. Однако, если выражение индексации приводит к вызову перегруженного метода от matlab.mixin.indexing.RedefinesParen, matlab.mixin.indexing.RedefinesDot, или matlab.mixin.indexing.RedefinesBrace заданный классом X, затем MATLAB не вызывает subsindex.
Существует несколько способов реализовать индексацию одного объекта другим объектом, X(A):
Задайте subsindex метод в классе A это преобразует A до целого числа. MATLAB вызывает Asubsindex метод, чтобы выполнить операции индексации, когда класс X не перегружает методы от matlab.mixin.indexing.RedefinesParen, matlab.mixin.indexing.RedefinesDot, или matlab.mixin.indexing.RedefinesBrace.
Если класс X методы перегрузок от RedefinesParen, RedefinesDot, или RedefinesBrace эти методы могут вызвать subsindex метод A явным образом. Класс A должен реализовать subsindex метод, который возвращает соответствующее значение.
subsindex должен возвратить значение объекта как значение индекса нулевого числа с основанием в области значений 0 к prod(size(X))-1.
Предположим, что вы хотите использовать объект A индексировать в объект BB может быть отдельный объект или массив, в зависимости от проектов класса.
C = B(A);
Вот два примера subsindex методы. Первое принимает, что можно преобразовать класс A к 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.
matlab.mixin.indexing.RedefinesParen | matlab.mixin.indexing.RedefinesDot | matlab.mixin.indexing.RedefinesBrace