Подписанная ссылка
Перегрузка классов 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 для выражения индексации, которое вызвало 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
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)-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.
Длинные массивы поддерживают ограниченный подмножество операций индексации. Для получения дополнительной информации смотрите Индекс и Просмотр элементов Длинного Массива.
Указания и ограничения по применению:
Фигурная индексация скобок для массивов ячеек и точечная индексация для структур не поддерживаются (графические процессоры не поддерживают массивы ячеек или структуры).
Для получения дополнительной информации смотрите Запуск функций MATLAB на графическом процессоре (Parallel Computing Toolbox).
Указания и ограничения по применению:
При использовании схемы codistributor2dbc нижние индексы должны быть скалярными положительными целыми числами или ':'.
Индексация фигурной скобки для массивов ячеек и индексация точек для структур не поддерживаются.
Для получения дополнительной информации смотрите Запуск функций MATLAB с распределенными массивами (Parallel Computing Toolbox).
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.