MATLAB® можно использовать объекты как индексы в индексированных выражениях. Применяются правила индексации массивов - индексы должны быть положительными целыми числами. Поэтому MATLAB должен быть в состоянии вывести значение из объекта, который является положительным целым числом для использования в индексированном выражении.
Индексированные выражения, такие как X(A)
, где A
является объектом, из-за чего MATLAB вызывает subsindex
функция. Однако, если выражение индексации приводит к вызову перегруженного subsref
или subsasgn
метод, заданный классом X
MATLAB не вызывает 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.
numArgumentsFromSubscript
| subsasgn
| subsref