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