matlabFunction

Преобразуйте символьное выражение в указатель на функцию или файл

Описание

пример

g = matlabFunction(f) преобразует символьное выражение или функциональный f к MATLAB® функционируют с указателем g. Конвертированная функция может использоваться без Symbolic Math Toolbox™.

пример

g = matlabFunction(f1,...,fN) преобразует f1,...,fN к функции MATLAB с N выходные параметры . Указателем на функцию является g. Каждый элемент f1,...,fN может быть символьное выражение, функция или вектор символьных выражений или функций.

пример

g = matlabFunction(___,Name,Value) дополнительные опции использования заданы одним или несколькими Name,Value парные аргументы. Можно задать Name,Value после того, как входные параметры используются в предыдущих синтаксисах.

Примеры

свернуть все

Преобразуйте символьное выражение r к функции MATLAB с указателем ht. Конвертированная функция может использоваться без Symbolic Math Toolbox.

syms x y
r = sqrt(x^2 + y^2);
ht = matlabFunction(r)
ht =
  function_handle with value:
    @(x,y)sqrt(x.^2+y.^2)

Преобразуйте несколько символьных выражений с помощью разделенного от запятой входа.

ht = matlabFunction(r, r^2)
ht =
  function_handle with value:
    @(x,y)deal(sqrt(x.^2+y.^2),x.^2+y.^2)

Создайте символьную функцию и преобразуйте ее в функцию MATLAB с указателем ht.

syms x y
f(x,y) = x^3 + y^3;
ht = matlabFunction(f)
ht = 
  function_handle with value:
    @(x,y)x.^3+y.^3

Запишите сгенерированную функцию MATLAB в файл путем определения File опция. Перезаписываются существующие файлы. При записи в файл, matlabFunction оптимизирует код с помощью промежуточных переменных под названием t0t1 , …. Включайте комментарии в файл при помощи Comments опция.

Запишите функцию MATLAB, сгенерированную из f к файлу myfile.

syms x
f = x^2 + log(x^2);
matlabFunction(f,'File','myfile');
function f = myfile(x)
%MYFILE
%    F = MYFILE(X)

%    This function was generated by the Symbolic Math Toolbox version 8.4.
%    01-Sep-2019 00:00:00

t2 = x.^2;
f = t2+log(t2);

Включайте комментарий Version: 1.1 в файле.

matlabFunction(f,'File','myfile','Comments','Version: 1.1')
function f = myfile(x)
...
%Version: 1.1
t2 = x.^2;
...

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

Создайте символьное выражение.

syms x
r = x^2*(x^2 + 1);

Преобразуйте r к функции MATLAB и записи функция к файлу myfile. По умолчанию, matlabFunction создает файл, содержащий оптимизированный код.

f =  matlabFunction(r,'File','myfile');
function r = myfile(x)
%MYFILE
%    R = MYFILE(X)
t2 = x.^2;
r = t2.*(t2+1.0);

Отключите оптимизацию кода путем устанавливания значения Optimize к false.

f =  matlabFunction(r,'File','myfile','Optimize',false);
function r = myfile(x)
%MYFILE
%    R = MYFILE(X)
r = x.^2.*(x.^2+1.0);

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

Создайте 3х3 символьную диагональную матрицу.

syms x
A = diag(x*ones(1,3))
A =
[ x, 0, 0]
[ 0, x, 0]
[ 0, 0, x]

Преобразуйте A к функции MATLAB, представляющей числовую матрицу и запись результат к файлу myfile1. По умолчанию сгенерированная функция MATLAB создает плотную числовую матрицу, указывающую каждый элемент матрицы, включая все нулевые элементы.

f1 = matlabFunction(A,'File','myfile1');
function A = myfile1(x)
%MYFILE1
%    A = MYFILE1(X)
A = reshape([x,0.0,0.0,0.0,x,0.0,0.0,0.0,x],[3,3]);

Преобразуйте A к функции MATLAB установкой Sparse к true. Теперь сгенерированная функция MATLAB создает разреженную числовую матрицу, задающую только ненулевые элементы и принимая, что все другие элементы являются нулями.

f2 = matlabFunction(A,'File','myfile2','Sparse',true);
function A = myfile2(x)
%MYFILE2
%    A = MYFILE2(X)
A = sparse([1,2,3],[1,2,3],[x,x,x],3,3);

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

Создайте символьное выражение.

syms x y z
r = x + y/2 + z/3;

Преобразуйте r к функции MATLAB и записи эта функция к файлу myfile. По умолчанию, matlabFunction алфавитный порядок использования входных параметров при преобразовании символьных выражений.

matlabFunction(r,'File','myfile');
function r = myfile(x,y,z)
%MYFILE
%    R = MYFILE(X,Y,Z)
r = x+y./2.0+z./3.0;

Используйте Vars аргумент, чтобы задать порядок входных параметров для сгенерированной функции MATLAB.

matlabFunction(r,'File','myfile','Vars',[y z x]);
function r = myfile(y,z,x)
%MYFILE
%    R = MYFILE(Y,Z,X)
r = x+y./2.0+z./3.0;

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

syms x y z t
r = (x + y/2 + z/3)*exp(-t);
matlabFunction(r,'File','myfile','Vars',{t,[x y z]});
function r = myfile(t,in2)
%MYFILE
%    R = MYFILE(T,IN2)
x = in2(:,1);
y = in2(:,2);
z = in2(:,3);
r = exp(-t).*(x+y./2.0+z./3.0);

При преобразовании символьного выражения в функцию MATLAB можно задать имена выходных переменных. Обратите внимание на то, что matlabFunction без File аргумент (или с путем к файлу, заданным пустым символьным вектором), создает указатель на функцию и игнорирует Outputs флаг.

Создайте символьные выражения r и q.

syms x y z
r = x^2 + y^2 + z^2;
q = x^2 - y^2 - z^2;

Преобразуйте r и q к функции MATLAB и записи получившаяся функция к файлу myfile, который возвращает вектор двух элементов, name1 и name2.

f = matlabFunction(r,q,'File','myfile',...
                   'Outputs',{'name1','name2'});
function [name1,name2] = myfile(x,y,z)
%MYFILE
%    [NAME1,NAME2] = MYFILE(X,Y,Z)
t2 = x.^2;
t3 = y.^2;
t4 = z.^2;
name1 = t2+t3+t4;
if nargout > 1
    name2 = t2-t3-t4;
end

Входные параметры

свернуть все

Символьный вход, который будет преобразован в функцию MATLAB, заданную как символьное выражение, функция, вектор или матрица. При преобразовании разреженных символьных векторов или матриц, используйте аргумент пары "имя-значение" 'Sparse',true.

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

matlabFunction не задает отдельный выходной аргумент для каждого элемента символьного вектора или матрицы. Например, g = matlabFunction([x + 1, y + 1]) создает функцию MATLAB с одним выходным аргументом, в то время как g = matlabFunction(x + 1, y + 1) создает функцию MATLAB с двумя выходными аргументами.

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: matlabFunction(f,'File','myfile','Optimize',false)

Комментарии, чтобы включать в заголовок файла, заданный как вектор символов, массив ячеек из символьных векторов или вектор строки.

Путь к файлу, содержащему сгенерированную функцию MATLAB, заданную как вектор символов. Сгенерированная функция принимает аргументы типа double, и может использоваться без Symbolic Math Toolbox. Если File пусто, matlabFunction генерирует анонимную функцию. Если File не заканчивается в .m, функция добавляет .m.

При записи в файл, matlabFunction оптимизирует код с помощью промежуточных переменных под названием t0t1 .... Чтобы отключить оптимизацию кода, используйте Optimize аргумент.

Смотрите функцию MATLAB записи к файлу с комментариями.

Отметьте предотвращение оптимизации кода, записанного в файл функции, заданный как false или true.

При записи в файл, ccode оптимизирует код с помощью промежуточных переменных под названием t0t1 , ....

matlabFunction без File аргумент (или с путем к файлу, заданным пустым символьным вектором), создает указатель на функцию. В этом случае код не оптимизирован. При попытке осуществить оптимизацию кода установкой Optimize к true, затем matlabFunction выдает ошибку.

Смотрите отключают оптимизацию кода.

Отметьте, который переключается между разреженной и плотной генерацией матрицы, заданной как true или false. Когда вы задаете 'Sparse',true, сгенерированная функция MATLAB представляет символьные матрицы разреженными числовыми матрицами. Используйте 'Sparse',true когда вы преобразуете символьные матрицы, содержащие много нулевых элементов. Часто, операции на разреженных матрицах более эффективны, чем те же операции на плотных матрицах.

Смотрите генерируют разреженные матрицы.

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

Количество заданных входных переменных должно равняться или превысить количество свободных переменных в f. Не используйте те же имена во входных переменных, заданных Vars и выходные переменные заданы Outputs.

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

Смотрите задают входные параметры для сгенерированной функции.

Имена выходных переменных, заданных как одномерный массив ячеек из символьных векторов.

Если вы не задаете имена выходной переменной, то они совпадают с именами, которые вы используете при вызове matlabFunction. Если вы вызываете matlabFunction с помощью выражения вместо отдельных переменных имена по умолчанию выходных переменных состоят из слова out сопровождаемый номером, например, out3.

Не используйте те же имена во входных переменных, заданных Vars и выходные переменные заданы Outputs.

matlabFunction без File аргумент (или с путем к файлу, заданным пустым символьным вектором), создает указатель на функцию. В этом случае, matlabFunction игнорирует Outputs флаг.

Смотрите задают выходные переменные.

Выходные аргументы

свернуть все

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

Советы

  • Когда вы используете File аргумент, используйте rehash сделать сгенерированную функцию доступной сразу. rehash обновляет список MATLAB известных файлов для директорий на пути поиска файлов.

  • Если File опция пуста, затем анонимная функция возвращена.

Представленный в R2008b