Преобразование типов данных

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

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

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

Чтобы преобразовать объект в различный доменный тип, используйте одну из следующих альтернатив. Некоторые альтернативы не работают на преобразования между конкретными областями.

  • Используйте принуждать Функцию. Вызовите coerce функционируйте, чтобы преобразовать объект в элемент заданной области. coerce функция может вызвать convert, convert_to, и coerce доменные методы. Если преобразование не возможно или если ни один из этих методов не реализован для областей, участвующих в преобразовании, coerce функция возвращает FAIL.

  • Используйте Функцию expr. Вызовите expr функционируйте, чтобы преобразовать объект в элемент основной области. expr вызовы функции expr метод. Если преобразование не возможно или если expr метод не реализован для заданных областей, expr функция возвращает FAIL.

  • Используйте Конструкторов. Вызовите доменного конструктора области, в которую вы хотите преобразовать объект. Этот подход обычно работает, но он может перестать работать в некоторых случаях.

  • Вызов методов преобразования области непосредственно. Чтобы использовать этот подход, необходимо знать, какие методы преобразования реализованы для участвующих областей. Эта альтернатива не рекомендуется. Используйте coerce или expr функцию вместо этого.

Примечание

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

Используйте принуждать Функцию

Чтобы преобразовать объект MuPAD в элемент заданной области, используйте coerce функция. Например, преобразуйте следующий элемент доменного DOM_LIST к элементу доменного DOM_SET:

L := [1, 2, 3, 4, 5, 6];
S := coerce(L, DOM_SET)

domtype(L), domtype(S)

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

M := matrix(2, 3, [1, 2, 3, 4, 5, 6]);
A := array(1..2, 1..3, [1, 2, 3, 4, 5, 6])

Проверьте тот матричный M принадлежит доменному Dom::Matrix(), и массив A принадлежит доменному DOM_ARRAY:

domtype(M), domtype(A)

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

LM := coerce(M, DOM_LIST);
LA := coerce(A, DOM_LIST)

Оба новых объекта принадлежат основной области списков DOM_LIST:

domtype(LM), domtype(LA)

Для дальнейших расчетов удалите идентификаторы LSMA, LM, и LA:

delete L, S, M, A, LM, LA

Используйте Функцию expr

Чтобы преобразовать элемент области библиотеки к элементу области простого ядра, используйте expr функция. Эта функция не позволяет вам выбирать основную область, в которую она преобразует объект. Если преобразование в основные области не возможно, функция возвращает FAIL.

expr функционируйте пытается найти самую простую основную область, в которую это может преобразовать данный объект. Функция также может преобразовать элемент более сложной основной области к более простой основной области. Например, это преобразует полином, представленный одной переменной x к идентификатору x:

y := poly(x);
expr(y)

Исходный объект y принадлежит области полиномов. Результат преобразования принадлежит области идентификаторов DOM_IDENT:

domtype(y), domtype(expr(y))

Если вы вызываете expr функция для более сложного полинома, функция преобразует тот полином в выражение:

p := poly(x^2 + x + 2);
expr(p)

Снова, исходный полином принадлежит области полиномов. На этот раз результат преобразования принадлежит области выражений:

domtype(p), domtype(expr(p))

MuPAD может применить expr функционируйте к объекту рекурсивно. Если объект содержит условия, которые принадлежат областям библиотеки или усложнили основные области, expr также попытки преобразовать те элементы условий более простых основных областей. Например, если полиномиальный p элемент списка, применяя expr функция к списку преобразует полиномиальный p к выражению:

matrix(2, 2, [p, 0, 0, 1]);
expr(matrix(2, 2, [p, 0, 0, 1]))

expr функция преобразует матрицу области библиотеки Dom::Matrix() к массиву области простого ядра DOM_ARRAY:

M := matrix(2, 3, [1, 2, 3, 4, 5, 6])

domtype(M), domtype(expr(M))

expr функция преобразует элемент серийной области к выражению основного доменного DOM_EXPR. Как правило, порядок условий в получившихся изменениях выражения:

s := series(exp(x), x);
expr(s)

domtype(s), domtype(expr(s))

Для дальнейших расчетов удалите идентификаторы yPM, и s:

delete y, p, M, s

Используйте конструкторов

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

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

L := [1, 2, 3, 4, 5, 6]

Чтобы преобразовать список в матрицу, вызовите матричного конструктора matrix. Используйте аргументы матричного конструктора, чтобы задать размерности необходимой матрицы и списка L из элементов матрицы. Полученный объект 2×3 матрица доменного Dom::Matrix():

matrix(2, 3, L);
domtype(%)

В качестве альтернативы можно преобразовать список в матрицу при помощи Dom::Matrix():

Dom::Matrix()(2, 3, L);
domtype(%)

Для дальнейших расчетов удалите идентификатор L:

delete L