Создайте функции MATLAB из выражений MuPAD

Примечание

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

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

Symbolic Math Toolbox™ позволяет вам создать функцию MATLAB из символьного выражения. Функция MATLAB, созданная из символьного выражения, принимает числовые аргументы и выполняет выражение, применился к аргументам. Можно сгенерировать указатель на функцию или файл, который содержит функцию MATLAB. Сгенерированный файл доступен для использования в любом вычислении MATLAB, независим от лицензии на функции Symbolic Math Toolbox.

Если вы работаете в Live Editor MATLAB, смотрите, Генерируют функции MATLAB от Символьных выражений.

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

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

  • Сгенерируйте код MATLAB от выражения MuPAD в блокноте. Этот подход ограничивает ваши опции созданием файла. Можно пропустить создание указателя на блокнот.

Сгенерированная функция MATLAB может зависеть от подхода, который вы выбрали. Например, код может быть оптимизирован по-другому или не оптимизирован вообще.

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

notebook_handle = mupad;

В этом блокноте создайте символьный матричный S, который преобразовывает сферические координаты в Декартовы координаты:

x := r*sin(a)*cos(b):
y := r*sin(a)*sin(b):
z := r*cos(b):
S := matrix([x, y, z]):

Теперь преобразуйте матричный S в язык MATLAB. Выберите лучший подход для своей задачи.

Скопируйте переменные MuPAD в рабочее пространство MATLAB

Если ваш блокнот имеет указатель, как notebook_handle в этом примере, можно скопировать переменные от того блокнота до рабочего пространства MATLAB с функцией getVar, и затем создать функцию MATLAB. Например, чтобы преобразовать символьный матричный S в функцию MATLAB:

  1. Скопируйте переменную S в рабочее пространство MATLAB:

    S = getVar(notebook_handle,'S')
    

    Переменный S и его значение (символьная матрица) появляются в рабочем пространстве MATLAB и в Live Editor MATLAB:

    S =
     r*cos(b)*sin(a)
     r*sin(a)*sin(b)
            r*cos(b)
  2. Используйте matlabFunction, чтобы создать функцию MATLAB из символьной матрицы. Чтобы сгенерировать указатель функции MATLAB, используйте matlabFunction без дополнительных параметров:

    h = matlabFunction(S)
    h = 
        @(a,b,r)[r.*cos(b).*sin(a);r.*sin(a).*sin(b);r.*cos(b)]

    Чтобы сгенерировать файл, содержащий функцию MATLAB, используйте параметр file и задайте путь к файлу и его имени. Например, сохраните функцию MATLAB в файл cartesian.m в текущей папке:

    S = matlabFunction(S,'file', 'cartesian.m');

Можно открыть и отредактировать cartesian.m в редакторе MATLAB.

Сгенерируйте код MATLAB в MuPAD Notebook

Чтобы сгенерировать код MATLAB от выражения MuPAD в блокноте MuPAD, используйте функцию generate::MATLAB. Затем можно создать новый файл, который содержит пустую функцию MATLAB, скопируйте код и вставьте его там. Также можно создать файл с отформатированным вектором символов MATLAB, представляющим выражение MuPAD, и затем добавлять соответствующий синтаксис, чтобы создать допустимую функцию MATLAB.

  1. В приложении MuPAD Notebook используйте функцию generate::MATLAB, чтобы сгенерировать код MATLAB от выражения MuPAD. Вместо того, чтобы распечатать результат на экране, используйте функцию fprint, чтобы создать файл и записать сгенерированный код в тот файл:

    fprint(Unquoted, Text, "cartesian.m", generate::MATLAB(S)):

    Примечание

    Если файл с этим именем уже существует, fprint заменяет содержимое этого файла с конвертированным выражением.

  2. Открытый cartesian.m. Это содержит отформатированный вектор символов MATLAB, представляющий матричный S:

      S = zeros(3,1);
      S(1,1) = r*cos(b)*sin(a);
      S(2,1) = r*sin(a)*sin(b);
      S(3,1) = r*cos(b);
  3. Чтобы преобразовать этот файл в допустимую функцию MATLAB, добавьте ключевые слова function и end, имя функции (должен совпадать с именем файла), аргументы ввода и вывода и комментарии: