Подписанная ссылка
Перегрузка классов 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.number
ans = 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.