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
.