Подстрочная ссылка
Перегрузка классов subsref для реализации пользовательского поведения индексирования для объектов класса. Дополнительные сведения см. в разделе Индексирование объектов.
В этом примере показано, как 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.numberans = 10
Синтаксис A.number приводит к вызову B = subsref(A,S) где S.Type является '.' и S.subs является 'number'.
A - Массив индексированных объектовМассив индексированных объектов, переданный MATLAB как массив объектов, являющийся частью выражения индексирования.
S - Структура индексацииСтруктура индексирования, передаваемая 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
B - Результат индексирования выраженияРезультат индексирования выражения.
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.
Массивы Tall поддерживают ограниченное подмножество операций индексирования. Дополнительные сведения см. в разделе Элементы верхнего массива индекса и просмотра.
Примечания и ограничения по использованию:
Индексация фигурных скобок для массивов ячеек и индексация точек для структур не поддерживаются (массивы GPU не поддерживают массивы или структуры ячеек).
Дополнительные сведения см. в разделе Запуск функций MATLAB на графическом процессоре (панель инструментов параллельных вычислений).
Примечания и ограничения по использованию:
При использовании схемы coddistributor2dbc подстрочные индексы должны быть скалярными положительными целыми числами или ':'.
Индексирование фигурных скобок для массивов ячеек и точечное индексирование для структур не поддерживаются.
Дополнительные сведения см. в разделе Запуск функций MATLAB с распределенными массивами (панель инструментов параллельных вычислений).
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.