Преобразуйте символьное выражение в указатель на функцию или файл
g = matlabFunction(f)
g = matlabFunction(f1,...,fN)
g = matlabFunction(___,Name,Value)
преобразовывает символьные выражения, функции или векторы символьных выражений или функций к функции MATLAB с помощью дополнительных опций, заданных одним или несколькими аргументами пары 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
оптимизирует код с помощью промежуточных переменных под названием t0
, t1
, …. Включайте комментарии в файл при помощи опции 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 7.3. % 01-Jan-2017 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
в установку Sparse
функции MATLAB к 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.*(1.0./2.0)+z.*(1.0./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.*(1.0./2.0)+z.*(1.0./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.*(1.0./2.0)+z.*(1.0./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
f
— Symbolic, который будет преобразован в функцию MATLABСимвольный вход, который будет преобразован в функцию MATLAB, заданную как символьное выражение, функция, вектор или матрица. При преобразовании разреженных символьных векторов или матриц, используйте аргумент пары "имя-значение" 'Sparse',true
.
f1,...,fN
— Symbolic, который будет преобразован в функцию MATLAB с N
выходные параметрыСимвольный вход, который будет преобразован в функцию MATLAB с N
выходные параметры, заданные как несколько символьных выражений, функций, векторов или матриц, разделенных запятой.
matlabFunction
не задает отдельный выходной аргумент для каждого элемента символьного вектора или матрицы. Например, g = matlabFunction([x + 1, y + 1])
создает функцию MATLAB с одним выходным аргументом, в то время как g = matlabFunction(x + 1, y + 1)
создает функцию MATLAB с двумя выходными аргументами.
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
matlabFunction(f,'File','myfile','Optimize',false)
Комментарии
Комментарии, чтобы включать в заголовок файлаКомментарии, чтобы включать в заголовок файла, заданный как вектор символов, массив ячеек из символьных векторов или вектор строки.
'File'
— Путь к файлу, содержащему сгенерированную функцию MATLABПуть к файлу, содержащему сгенерированную функцию MATLAB, заданную как вектор символов. Сгенерированная функция принимает аргументы типа double
и может использоваться без Symbolic Math Toolbox. Если File
пуст, matlabFunction
генерирует анонимную функцию. Если File
не заканчивается в .m
, функция добавляет .m
.
При записи в файл matlabFunction
оптимизирует код с помощью промежуточных переменных под названием t0
, t1
.... Чтобы отключить оптимизацию кода, используйте аргумент Optimize
.
'Optimize'
— Отметьте предотвращение оптимизации кода, записанного в файл функцииtrue
(значение по умолчанию) | false
Отметьте предотвращение оптимизации кода, записанного в файл функции, заданный как false
или true
.
При записи в файл ccode
оптимизирует код с помощью промежуточных переменных под названием t0
, t1
....
matlabFunction
без аргумента File
(или с путем к файлу, заданным пустым символьным вектором), создает указатель на функцию. В этом случае код не оптимизирован. При попытке осуществить оптимизацию кода установкой Optimize
к true
, то matlabFunction
выдает ошибку.
Смотрите отключают оптимизацию кода.
разреженный
Отметьте, который переключается между разреженной и плотной генерацией матрицыfalse
(значение по умолчанию) | true
Отметьте, который переключается между разреженной и плотной генерацией матрицы, заданной как true
или false
. Когда вы задаете 'Sparse',true
, сгенерированная функция MATLAB представляет символьные матрицы разреженными числовыми матрицами. Используйте 'Sparse',true
, когда вы преобразуете символьные матрицы, содержащие много нулевых элементов. Часто, операции на разреженных матрицах более эффективны, чем те же операции на плотных матрицах.
Смотрите генерируют разреженные матрицы.
Вар
Порядок входных переменных или векторов в сгенерированной функции MATLABПорядок входных переменных или векторов в сгенерированной функции MATLAB, заданной как вектор символов, вектор символьных переменных или одномерный массив ячеек из символьных векторов, символьных переменных или векторов символьных переменных.
Количество заданных входных переменных должно равняться или превысить количество свободных переменных в f
. Не используйте те же имена для входных переменных, заданных Vars
и выходными переменными, заданными Outputs
.
По умолчанию, когда вы преобразовываете символьные выражения, порядок является алфавитным. Когда вы преобразовываете символьные функции, их входные параметры появляются перед другими переменными, и все другие переменные сортируются в алфавитном порядке.
Смотрите задают входные параметры для сгенерированной функции.
Выходные параметры
Имена выходных переменныхИмена выходных переменных, заданных как одномерный массив ячеек из символьных векторов.
Если вы не задаете имена выходной переменной, то они совпадают с именами, которые вы используете при вызове matlabFunction
. Если вы вызываете matlabFunction
с помощью выражения вместо отдельных переменных, имена по умолчанию выходных переменных состоят из слова out
, сопровождаемый номером, например, out3
.
Не используйте те же имена для входных переменных, заданных Vars
и выходными переменными, заданными Outputs
.
matlabFunction
без аргумента File
(или с путем к файлу, заданным пустым символьным вектором), создает указатель на функцию. В этом случае matlabFunction
игнорирует флаг Outputs
.
Смотрите задают выходные переменные.
g
Указатель на функцию, который может служить входным параметром к числовым функциямУказатель на функцию, который может служить входным параметром к числовым функциям, возвратился как указатель функции MATLAB.
ccode
| daeFunction
| fortran
| matlabFunctionBlock
| odeFunction
| rehash
| simscapeEquation
| subs
| sym2poly
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.