generate
:: MATLAB
Сгенерируйте отформатированную строку MATLAB
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
generate::MATLAB(e
, <NoWarning>)
generate::MATLAB(e)
генерирует код MATLAB® для выражения MuPAD® e
.
generate::MATLAB
возвращает отформатированную строку MATLAB, представляющую выражение, уравнение, список уравнений или матрицы.
generate::MATLAB
принимает, что типом конвертированных данных является double
. Смотрите Пример 1.
Уравнение представляет присвоение в коде MATLAB. Смотрите Пример 4.
При генерации кода MATLAB для матрицы генератор производит матрицу нулей, и затем это заменяет ненулевыми элементами. Смотрите Пример 2.
Используйте функцию generate::optimize
, чтобы оптимизировать код MuPAD прежде, чем преобразовать его в синтаксис MATLAB. Смотрите Пример 5.
Чтобы отобразить сгенерированный код MATLAB по экрану, используйте функцию print
. Используйте параметр печати Unquoted
, чтобы удалить кавычки и расширить специальные символы как разрывы строки и вкладки. Если строка сгенерированного кода более длинна, чем установка TEXTWIDTH
, print
функционирует пропуски что строка в несколько более коротких строк. Вставленный символ продолжения строки (\
) не допустим в MATLAB. Чтобы постараться не вставлять символы продолжения строки, увеличьте установку TEXTWIDTH
или используйте функцию fprint
, чтобы записать сгенерированный код в файл.
generate::MATLAB
не создает функцию MATLAB. Можно распечатать выводимую строку к файлу с помощью функции fprint
с опцией Unquoted
. Смотрите Пример 6.
При Работе от рабочего пространства MATLAB можно создать функцию MATLAB, содержащую выражение. Чтобы вызвать выражение MuPAD от рабочего пространства MATLAB, используйте функции feval
или evalin
. Смотрите Создают функции MATLAB из Выражений MuPAD.
Если вы работаете с продуктами Simulink®, можно скопировать сгенерированный код и вставить его в блок Simulink. Кроме того, можно вызвать выражение MuPAD от рабочего пространства MATLAB с помощью функций feval
или evalin
. При Работе от рабочего пространства MATLAB можно автоматически создать блок Simulink, содержащий выражение. Смотрите Создают блоки MATLAB function из Выражений MuPAD.
Опция NoWarning
позволяет вам отключить предупреждения. Смотрите Пример 7.
По умолчанию MATLAB хранит все числовые значения как с двойной точностью с плавающей точкой. В соответствии с типом данных MATLAB по умолчанию, generate::MATLAB
преобразовывает элементы выражений, уравнений и матриц к формату double
:
print(Unquoted, generate::MATLAB(x^2 + y/3 + 1/6))
t0 = y/3.0+x^2+1.0/6.0;
Генератор производит матрицу нулей, и затем он заменяет ненулевые элементы:
A:= matrix([[1, 0, 0],[0, 0, 1]]): print(Unquoted, generate::MATLAB(A))
A = reshape([1.0,0.0,0.0,0.0,0.0,1.0],[2,3]);
Если первый индекс массива не 1, функция generate::MATLAB
выдает предупреждение:
A:= array(1..2, 2..3, [[1,2],[3,4]]): print(Unquoted, generate::MATLAB(A))
Warning: Array index 'A[1..2, 2..3]' out of range 1..n.
A = reshape([1.0,3.0,2.0,4.0],[2,2]);
При генерации кода MATLAB от уравнений вы получаете присвоения вместо уравнений. Например, сгенерируйте код MATLAB для следующего списка уравнений:
f := generate::MATLAB([x = exp(t*s), y = sin(t)*cos(s)]): print(Unquoted, f)
x = exp(s*t); y = cos(s)*sin(t);
Функция generate::MATLAB
не оптимизирует ваш код:
print(Unquoted, generate::MATLAB([x = a + b, y = (a + b)^2])):
x = a+b; y = (a+b)^2;
Можно использовать функцию generate::optimize
прежде, чем преобразовать код MuPAD в синтаксис MATLAB. Например, эта функция может сократить количество операций путем нахождения общих подвыражений:
f := generate::optimize([x = a + b, y = (a + b)^2]): print(Unquoted, generate::MATLAB(f)):
x = a+b; y = x^2;
Чтобы создать файл с отформатированной строкой MATLAB, представляющей символьное выражение, используйте функцию fprint
:
A:= matrix([[1, 0, 0],[0, 0, 1]]): fprint(Unquoted, Text, "matrixA.m", generate::MATLAB(A))
Если файл matrixA.m уже существует, fprint
заменяет существующий код MATLAB на конвертированное символьное выражение. Можно открыть и отредактировать получившийся файл.
По умолчанию функция generate::MATLAB
может предупреждения о проблемах:
print(Unquoted, generate::MATLAB(g(x)))
Warning: Function 'g' not verified to be a valid MATLAB function.
t0 = g(x);
Если вы начали использовать generate::MATLAB
недавно, предупреждения могут помочь вам идентифицировать потенциальные проблемы в конвертированном коде. Если вы хотите отключить предупреждения, используйте опцию NoWarning
:
print(Unquoted, generate::MATLAB(g(x), NoWarning))
t0 = g(x);
|
Выражение, уравнение, список уравнений или матрица |
|
Отключить предупреждения. |
generate::MATLAB
возвращает строку, содержащую код MATLAB.