table

Составление таблицы

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

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

Синтаксис

table()
table(index1 = entry1, index2 = entry2, …, <default>)
table(<list>, <set>, <tab>, …, <default>)

Описание

table() составляет новую пустую таблицу.

table(index1 = entry1, index2 = entry2, ...) составляет новую таблицу с данными индексами и записями.

В MuPAD® таблицы являются самыми гибкими объектами для того, чтобы хранить данные. В отличие от массивов или списков, произвольные объекты MuPAD могут использоваться в качестве индексов. Индексный доступ к записям таблицы быстр и почти независим от размера таблицы. Таким образом таблицы являются подходящими контейнерами для больших данных.

Для tableT, Скажем, индексируемый вызов T[index] возвращает соответствующую запись. Если никакая такая запись не существует, значение по умолчанию таблицы возвращено, если таблица имеет тот. Если никакое значение по умолчанию не было установлено и, индексируемое выражение T[index] возвращен символически.

Индексируемое присвоение формы T[index] := entry добавляет новая запись в существующую таблицу T или перезаписывает существующую запись, сопоставленную с индексом.

table может использоваться, чтобы составить таблицы из других таблиц, списков или систем уравнений. См. Пример 2.

table используется в явном создании таблицы. Также существует следующий механизм для того, чтобы составить таблицу неявно.

Если значение идентификатора T, Скажем, ни таблица, ни массив, ни hfarray, ни список, затем индексируемое присвоение T[index] := entry эквивалентно T := table(index = entry). Т.е. неявно, новая таблица с одной записью составлена. См. Пример 3.

Если значение T была или таблица или массив или hfarray или список, затем индексируемое присвоение только вставляет новую запись, не изменяя тип T неявно.

Записи таблицы могут быть удалены с функциональным delete. См. пример 4.

Примеры

Пример 1

Следующий вызов составляет таблицу с двумя записями:

T := table(a = 13, c = 42)

К данным можно получить доступ через индексируемые вызовы. Отметьте символьный результат индексом b который не имеет соответствующей записи в таблице:

T[a], T[b], T[c]

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

T[a] := T[a] + 10: T

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

T := table((a, b) = "hello", a + b = (50, 70))

T[a + b]

Индексный доступ не требует дополнительных скобок:

T[a, b] := T[a, b]." world": T

delete T:

Пример 2

table может быть создан из других таблиц, списков или наборов:

table(table(a = 1, b = 2),
      {a = 3, c = 4},
      [b = 5, e = 6])

Обратите внимание на то, что набор не имеет никакого порядка операндов. Когда набор содержит несколько значений под тем же индексом, запись таблицы выбрана “случайным образом”:

table({a = 3, a = 4});
table({a = 4, a = 3})

Пример 3

Ниже, новая таблица составлена неявно индексируемым присвоением с помощью идентификатора T без значения:

delete T: T[4] := 7: T

delete T:

Пример 4

Используйте delete удалить записи:

T := table(a = 1, b = 2, (a, b) = (1, 2))

delete T[b], T[a, b]: T

delete T:

Пример 5

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

T := table():
L := [1,2,3,a,b,c,a,b,a]:
for i in L do
  if contains(T, i) then
    T[i] := T[i] + 1;
  else
    T[i] := 1;
  end_if;
end_for:
T

Отметьте тест ли T[i] был уже установлен. Если бы это не имеет, мы не можем использовать его предыдущее значение, потому что это осталось бы символьным:

T := table():
T[a] := T[a] + 1:
T

Путем создания T как table(0) вместо table(), мы можем сказать MuPAD расценивать T[i] как 0 если этому не сказали ничто больше, и код сверху становится существенно короче и, намного более важный, намного легче читать:

T := table(0):
L := [1,2,3,a,b,c,a,b,a]:
for i in L do
  T[i] := T[i] + 1;
end_for:
T

Немного более сложная версия, считая все идентификаторы в выражении:

ex := sin(a*x+b)-cos(c+x):
cnt := table(0):
misc::maprec(ex,
  {DOM_IDENT} = (x -> (cnt[x] := cnt[x]+1; x))):
cnt

Параметры

index1, index2, …

Индексы: произвольные объекты MuPAD

entry1, entry2, …

Соответствующие записи: произвольные объекты MuPAD

list

Список уравнений

set

Набор уравнений

tab

Таблица

default

Значение по умолчанию: объект MuPAD, который не является уравнением, списком, набором, ни таблицей

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

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

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

Области MuPAD

Функции MuPAD