subsref

Подписанная ссылка

Синтаксис

Описание

Перегрузка классов subsref для реализации пользовательского поведения индексации для объектов класса. Дополнительные сведения см. в разделе Индексировании объектов.

пример

B = subsref(A,S) вызывается MATLAB® для синтаксиса A(i), A{i}, или A.i когда A является объектом.

Примеры

свернуть все

В этом примере показано, как MATLAB ® вызывает subsref для следующего выражения индексации.

A = magic(5);
A(1:2,:)
ans = 2×5

    17    24     1     8    15
    23     5     7    14    16

Синтаксис, A(1:2,:), приводит к вызову B = subsref(A,S) где S - структура 1 на 1, где S.type is '()' и S.subs is {1:2,':'}. Символ двоеточия указывает двоеточие, используемое в качестве индекса.

В этом примере показано, как MATLAB ® вызывает subsref для выражения индексации, использующего скобки.

C = {"one", 2, 'three'};
C{1:2}
ans = 
"one"
ans = 2

Синтаксис C {1:2} приводит к вызову [c1,c2] = subsref(C,S) где S.type является '{}' и S.subs является {[1 2]}.

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

A = struct('number',10);
A.number
ans = 10

Синтаксис A.number приводит к вызову B = subsref(A,S) где S.Type является '.' и S.subs является 'number'.

Входные параметры

свернуть все

Индексированный объектный массив, переданный MATLAB как объектный массив, который является частью выражения индексации.

Структура индексации, переданная MATLAB как индексация substruct для выражения индексации, которое вызвало subsref вызова. Эта структура имеет следующие поля:

  • type - Вектор символов или строковый скаляр, содержащий (), {}, или ., задающий тип индекса.

  • subs - массив ячеек, вектор символов или строковый скаляр, содержащий фактические индексы.

Выражения индекса могут использовать несколько уровней для формирования более сложных выражений. Для примера A{1}.field(3:5) имеет три уровня индексации. Для этого выражения S массив структур 3 на 1 с этими полями:

disp(S(1))
    type: '{}'
    subs: {[1]}
disp(S(2))
    type: '.'
    subs: 'field'
disp(S(3))
    type: '()'
    subs: {[3 4 5]}

Типы данных: struct

Выходные аргументы

свернуть все

Результат выражения индексации.

Подробнее о

свернуть все

Общие сведения о выражениях индексации

A(I) - массив, образованный из элементов A задается индексным вектором I. Получившийся массив имеет тот же размер I за исключением особого случая, когда A и I являются обоими векторами. В этом случае A(I) имеет то же количество элементов, что и I но имеет ориентацию A.

A(I,J) - массив, образованный из элементов прямоугольной подматрицы A, заданный нижним индексом векторов I и J. Получившийся массив имеет length(I) строки и length(J) столбцы. Двоеточие, используемое в качестве индекса, указывает на все элементы в этом измерении. Для примера, A(I,:) означает все столбцы тех строк, которые заданы вектором I. Точно так же A(:,J) означает все строки столбцов, заданные как J.

A(I,J,K,...) - массив, заданный нижними индексами. Результатом является length(I)-by- length(J)-by- length(K)....

A{I} где A является массивом ячеек и I является скаляром, образующим копию массива в указанной камере A. Если I имеет более одного элемента, это выражение является списком , разделенным запятыми. Можно также использовать несколько индексов, которые задают скалярный элемент, как в A{3,4}.

A(I).field когда A является массивом структур и I является скаляром, образующим копию массива в поле с именем field. Если I имеет более одного элемента, это выражение является списком , разделенным запятыми. Если A является массивом структур 1 на 1, тогда нижний индекс может быть отброшен. В этом случае A.field то же, что и A(1).field.

Расширенные возможности

Представлено до R2006a