subsref

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

Синтаксис

Описание

Для классов, созданных в R2021b и позже, рекомендуемый процесс для настройки индексации должен наследоваться некоторой комбинации matlab.mixin.indexing.RedefinesParen, matlab.mixin.indexing.RedefinesDot, и matlab.mixin.indexing.RedefinesBrace. Для получения дополнительной информации смотрите, Настраивают Индексирование объектов.

пример

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)- 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