array

Создайте массив

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.

Для массивов в MATLAB® см. Матрицы и Массивы (MATLAB).

Синтаксис

array(m1 .. n1, <m2 .. n2, …>)
array(m1 .. n1, <m2 .. n2, …>, index1 = entry1, index2 = entry2, …)
array(m1 .. n1, <m2 .. n2, …>, List)
array(<m1 .. n1, m2 .. n2, …>, ListOfLists)

Описание

array(...) создает массив, который является n - размерная прямоугольная структура, содержащая произвольные данные.

array(m_1..n_1, m_2..n_2, ...) создает массив с неинициализированными записями, куда первый индекс запускается от m 1 к n 1, вторые индексные выполнения от m 2 к n 2, и так далее.

array( m_1..n_1, m_2..n_2 , ..., List) создает массив с записями, инициализированными от List.

array(ListOfLists) создает массив с записями, инициализированными от ListOfLists. Размерность массива совпадает с размерностью ListOfLists.

Массивы являются контейнерными объектами для того, чтобы хранить данные. В отличие от tables, индексы должны быть последовательностями целых чисел. В то время как tables может вырасти в размере динамически, количество записей в массиве, созданном массивом, фиксируется.

Массивы, созданные array, имеют доменный тип DOM_ARRAY. Они могут содержать произвольные объекты MuPAD® как записи.

Для массива A типа DOM_ARRAY или DOM_HFARRAY и последовательность целых чисел index, формирующий допустимый индекс массива, индексируемый вызов, A[index] возвращает соответствующую запись. Если запись массива типа, DOM_ARRAY является неинициализированным, то индексируемое выражение A[index] возвращено. Смотрите Пример 1 и Пример 5.

Индексируемое присвоение формы A[index] := entry инициализирует или перезаписывает запись, соответствующую index. Смотрите Пример 1 и Пример 5.

Индексные контуры должны удовлетворить m 1n 1, m 2n 2, и так далее. Размерность полученного массива является количеством данных аргументов области значений; по крайней мере один аргумент области значений должен быть задан. Общее количество записей полученного массива (n 1 - m 1 + 1)   (n 2 - m 2 + 1)   ….

Если только индексируют аргументы области значений, даны, то array создает массив с неинициализированными записями. Записи автоматически установлены в 0,0, если никакие значения не заданы. Смотрите Пример 1.

Если уравнения формы, index = entry присутствует, то запись массива, соответствующая index, инициализируется с entry. Это полезно для того, чтобы выборочно инициализировать некоторые конкретные записи массива.

Каждый индекс должен быть допустимым индексом массива формы i1 для одномерных массивов и (i1, i2, …) для более многомерных массивов, где i1, i2, … является целыми числами в допустимых контурах, удовлетворяя m 1i 1n 1, m 2i 2n 2, и так далее, и количество целых чисел в index совпадает с размерностью массива.

Если вы используете аргумент List, то полученный массив инициализируется с записями от List. Это полезно для инициализации всех записей массива целиком. List должен иметь (n 1 - m 1 + 1)   (n 2 - m 2 + 1)   … элементы, каждый становящийся операндом массива, который будет создан. В случае двумерных массивов, рассматриваемых как матрицы, список содержит строку записей после строки.

Аргумент ListOfLists должен быть вложенным списком, совпадающим со структурой массива точно. Глубина вложения списка должна быть больше или равной размерности массива. Количество записей списка в k-th уровень вложенности должно быть равно размеру k-th индексная область значений, то есть, n k - m k + 1. Смотрите Пример 7.

delete A[index] удаляет запись, соответствующую index, так, чтобы это стало неинициализированным. Смотрите Пример 5.

Примечание

Внутренне, неинициализированные записи массива доменного типа DOM_ARRAY имеют значение NIL. Таким образом присвоение NIL к записи массива имеет тот же эффект как удаление его через delete. Впоследствии, индексируемый вызов формы A[index] возвращает символьное выражение A[index], и не NIL. Смотрите Пример 5.

Одномерный массив распечатан как вектор - строка. Индекс соответствует номеру столбца.

Двумерный массив распечатан как матрица. Первый индекс соответствует номеру строки, и второй индекс соответствует номеру столбца.

Большие массивы, которые превышают максимальный вывод width TEXTWIDTH, распечатаны в форме array( m_1..n_1, m_2..n_2, dots, index_1 = entry_1, index_2 = entry_2, dots ). Смотрите Пример 6, Пример 7 и Пример 10.

Арифметические операции не заданы для массивов доменного типа DOM_ARRAY. Используйте matrix, чтобы создать одномерные векторы или двумерные матрицы в математическом смысле.

Отметьте следующую специальную функцию массивов доменного типа DOM_ARRAY:

Примечание

Если массив оценен, он только возвращен. Оценка не сопоставляет рекурсивно на записях массива! Это происходит из-за причин производительности. У вас есть к map функциональный eval явным образом на массиве по порядку, чтобы полностью оценить его записи. Смотрите Пример 8

Примеры

Пример 1

Создайте неинициализированный одномерный массив с индексами в пределах от 2 - 4:

A := array(2..4)

NIL s в выводе указывает, что записи массива не инициализируются. Установите среднюю запись в 5 и последнюю запись в "MuPAD":

A[3] := 5: A[4] := "MuPAD": A

Можно получить доступ к записям массива при помощи индексируемых вызовов. Поскольку запись, A[2] не инициализируется, символьное выражение A[2], возвращена:

A[2], A[3], A[4]

Можно уже инициализировать массив при создании его передающими уравнениями инициализации к array:

A := array(2..4, 3 = 5, 4 = "MuPAD")

Можно инициализировать все записи массива при создании его путем передачи списка начальных значений к array:

array(2..4, [PI, 5, "MuPAD"])

Пример 2

Границы массива могут быть заданы отрицательными целыми числами:

A := array(-1..1, [2, sin(x), FAIL])

A[-1], A[0], A[1]

delete A:

Пример 3

Если размерность и размер array не заданы явным образом, то оба значения приняты из данного списка:

array([[1,2],[3,4],[5,6]]) = array(1..3, 1..2, [[1,2],[3,4],[5,6]]);
bool(%)

Обратите внимание на то, что все подполя одной размерности должны иметь тот же размер и размерность. Поэтому следующий вход приводит к ошибке:

array([[1],[3,4],[5,6]])
Error: Invalid argument. [array]

Пример 4

Можно использовать оператор $, чтобы создать последовательность уравнений инициализации:

array(1..8, i = i^2 $ i = 1..8)

Эквивалентно, можно использовать оператор $, чтобы создать список инициализаций:

array(1..8, [i^2 $ i = 1..8])

Пример 5

Создайте 2×2 матрица как двумерный массив:

A := array(1..2, 1..2, (1, 2) = 42, (2, 1) = 1 + I)

Внутренне, записи массива хранятся в линеаризовавшей форме. К ним можно получить доступ в этой форме через op. Неинициализированные записи внутренне имеют значение NIL:

op(A, 1), op(A, 2), op(A, 3), op(A, 4)

Отметьте различие для индексного доступа:

A[1, 1], A[1, 2], A[2, 1], A[2, 2]

Измените запись массива индексируемым присвоением:

A[1, 1] := 0: A[1, 2] := 5:
A

Удалите значение записи массива через delete. Впоследствии, это является неинициализированным снова:

delete A[2, 1]: A[2, 1], op(A, 3)

Присвоение NIL к записи массива имеет тот же эффект как удаление его:

A[1, 2] := NIL: A[1, 2], op(A, 2)

Пример 6

Задайте 3D массив с индексными значениями между 1 и 8 в каждом из трех измерений. Инициализируйте две из записей через уравнения инициализации:

A := array(1..8, 1..8, 1..8, (1, 1, 1) = 111, (8, 8, 8) = 888)

A[1, 1, 1], A[1, 1, 2]

delete A

Пример 7

Можно использовать вложенный список, чтобы инициализировать двумерный массив. Внутренние списки являются строками созданной матрицы:

array(1..2, 1..3, [[1, 2, 3], [4, 5, 6]])

Создайте 3D массив и инициализируйте его из вложенного списка глубины три. Внешний список имеет две записи для первой размерности. Каждая из этих записей является списком с тремя записями для второго измерения. Наконец, самые внутренние списки у каждого есть одна запись для третьей размерности:

array(2..3, 1..3, 1..1,
      [
        [ [1], [2], [3] ],
        [ [4], [5], [6] ]
      ])

Пример 8

Если массив оценен, он только возвращен. Оценка не сопоставляет рекурсивно на записях массива. Здесь, записи a и b не оценены:

A := array(1..2, [a, b]):
a := 1:  b := 2:
A, eval(A)

Из-за специальной оценки массивов индексный оператор оценивает записи массива после извлечения их от массива:

A[1], A[2]

Полностью оценивать его записи, map функциональный eval явным образом на массиве:

map(A, eval)

Пример 10

Двумерный массив обычно распечатывается в матричной форме:

A := array(1..4, 1..4, (1, 1) = 11, (4, 4) = 44)

Если вывод не помещается в TEXTWIDTH, более компактный вывод используется в print:

PRETTYPRINT := FALSE:
TEXTWIDTH := 20:
print(Plain, A)
array(1..4, 1..4, (\
1, 1) = 11, (4, 4) \
= 44)
PRETTYPRINT := TRUE:
delete A, TEXTWIDTH

Параметры

m1, n1, m2, n2, …

Индексные контуры: целые числа

index1, index2, …

Последовательность целых чисел, задающих допустимый индекс массива

entry1, entry2, …

Произвольные объекты

List

Простой список записей для инициализации массива

ListOfLists

Вложенный список (списков списков …) записей для инициализации массива

Возвращаемые значения

Объект типа DOM_ARRAY.

Смотрите также

Области MuPAD

Функции MuPAD