exponenta event banner

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 для выражения индексации, вызвавшего вызов вложенной ссылки. Эта структура имеет следующие поля:

  • 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)около-length(J)около-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