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.
Следующий вызов составляет таблицу с двумя записями:
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:
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})
Ниже, новая таблица составлена неявно индексируемым присвоением с помощью идентификатора T
без значения:
delete T: T[4] := 7: T
delete T:
Используйте delete
удалить записи:
T := table(a = 1, b = 2, (a, b) = (1, 2))
delete T[b], T[a, b]: T
delete T:
Одно из использования таблиц должно считать количество случаев некоторых объектов. В этой ситуации должна была бы выглядеть так реализация, не используя значения по умолчанию:
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
|
Индексы: произвольные объекты MuPAD |
|
Соответствующие записи: произвольные объекты MuPAD |
|
Список уравнений |
|
Набор уравнений |
|
Таблица |
|
Значение по умолчанию: объект MuPAD, который не является уравнением, списком, набором, ни таблицей |
Объект типа DOM_TABLE
.