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.