subsref

Преобразованная в нижний индекс ссылка

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

Синтаксис

B = subsref(A,S)

Описание

пример

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. Эта структура имеет эти поля:

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

  • 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