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 1 ≤ n 1, m 2 ≤ n 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 1 ≤ i 1 ≤ n 1, m 2 ≤ i 2 ≤ n 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
:
Создайте неинициализированный одномерный массив с индексами в пределах от 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"])
Границы массива могут быть заданы отрицательными целыми числами:
A := array(-1..1, [2, sin(x), FAIL])
A[-1], A[0], A[1]
delete A:
Если размерность и размер 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]
Можно использовать $
оператор, чтобы создать последовательность уравнений инициализации:
array(1..8, i = i^2 $ i = 1..8)
Эквивалентно, можно использовать $
оператор, чтобы создать список инициализаций:
array(1..8, [i^2 $ i = 1..8])
Создайте 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)
Задайте 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
Можно использовать вложенный список, чтобы инициализировать двумерный массив. Внутренние списки являются строками созданной матрицы:
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] ] ])
Если массив оценен, он только возвращен. Оценка не сопоставляет рекурсивно на записях массива. Здесь, записи a
и b
не оценены:
A := array(1..2, [a, b]): a := 1: b := 2: A, eval(A)
Из-за специальной оценки массивов оператор индекса оценивает записи массива после извлечения их от массива:
A[1], A[2]
Полностью оценивать его записи, map
функциональный eval
явным образом на массиве:
map(A, eval)
Двумерный массив обычно распечатывается в матричной форме:
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
|
Контуры индекса: целые числа |
|
Последовательность целых чисел, задающих допустимый индекс массива |
|
Произвольные объекты |
|
Простой список записей для инициализации массива |
|
Вложенный список (списков списков …) записей для инициализации массива |
Объект типа DOM_ARRAY
.