Преобразуйте символьное выражение в блок MATLAB function
matlabFunctionBlock(___,
преобразует символьное выражение, функцию или вектор символьных выражений или функций в блок MATLAB function с помощью дополнительных опций, заданных одной или несколькими Name,Value
)Name,Value
аргументы в виде пар. Можно задать Name,Value
после входных параметров, используемых в предыдущих синтаксисах.
Создайте новую модель и преобразуйте символьное выражение в блок MATLAB function. Включите комментарии в блок путем определения Comments
опция.
Создайте новую модель и откройте ее.
new_system('my_system') open_system('my_system')
Создайте символическое выражение.
syms x y z f = x^2 + y^2 + z^2;
Использование matlabFunctionBlock
чтобы создать блок my_block
содержащее символическое выражение. matlabFunctionBlock
перезаписывает существующие блоки. Дважды кликните сгенерированный блок, чтобы открыть и отредактировать функцию, определяющую блок.
matlabFunctionBlock('my_system/my_block',f)
function f = my_block(x,y,z) %#codegen % This function was generated by the Symbolic Math Toolbox version 7.3. % 01-Jan-2017 00:00:00 f = x.^2+y.^2+z.^2;
Включите комментарий Version 1.1
в блоке.
matlabFunctionBlock('my_system/my_block',f,'Comments','Version: 1.1')
function f = my_block(x,y,z) ... %Version: 1.1 f = x.^2+y.^2+z.^2;
Сохраните и закройте my_system
.
save_system('my_system') close_system('my_system')
Создайте новую модель и преобразуйте символьную функцию в блок MATLAB function.
Создайте новую пустую модель и откройте ее.
new_system('my_system') open_system('my_system')
Создайте символическую функцию.
syms x y z f(x, y, z) = x^2 + y^2 + z^2;
Преобразование f
в блок MATLAB function. Дважды кликните блок, чтобы увидеть функцию.
matlabFunctionBlock('my_system/my_block',f)
function f = my_block(x,y,z) %#codegen f = x.^2+y.^2+z.^2;
Преобразуйте несколько символьных выражений в блок MATLAB function с несколькими выходными портами.
Создайте новую пустую модель и откройте ее.
new_system('my_system') open_system('my_system')
Создайте три символических выражения.
syms x y z f = x^2; g = y^2; h = z^2;
Преобразуйте их в блок MATLAB function. matlabFunctionBlock
создает блок с тремя выходными портами. Дважды кликните блок, чтобы увидеть функцию.
matlabFunctionBlock('my_system/my_block',f,g,h)
function [f,g,h] = my_block(x,y,z) %#codegen f = x.^2; if nargout > 1 g = y.^2; end if nargout > 2 h = z.^2; end
Определение имени функции, определяющей сгенерированный блок MATLAB function.
Создайте новую пустую модель и откройте ее.
new_system('my_system') open_system('my_system')
Создайте символическое выражение.
syms x y z f = x^2 + y^2 + z^2;
Сгенерируйте блок и установите имя функции на my_function
. Дважды кликните блок, чтобы увидеть функцию.
matlabFunctionBlock('my_system/my_block',f,... 'FunctionName', 'my_function')
function f = my_function(x,y,z) %#codegen f = x.^2+y.^2+z.^2;
Когда вы преобразовываете символическое выражение в блок MATLAB function, matlabFunctionBlock
оптимизирует код по умолчанию. Этот подход может помочь упростить и ускорить дальнейшие расчеты, которые используют файл. Тем не менее, сгенерирование оптимизированного кода из некоторых символьных выражений и функций может быть очень длительным. Использование Optimize
отключить оптимизацию кода.
Создайте новую пустую модель и откройте ее.
new_system('my_system') open_system('my_system')
Создайте символическое выражение.
syms x
r = x^2*(x^2 + 1);
Использование matlabFunctionBlock
чтобы создать блок my_block
содержащее символическое выражение. Дважды кликните блок, чтобы увидеть функцию, определяющую блок. По умолчанию, matlabFunctionBlock
создает файл, содержащий оптимизированный код.
matlabFunctionBlock('my_system/my_block',r)
function r = my_block(x) %#codegen t2 = x.^2; r = t2.*(t2+1.0);
Отключите оптимизацию кода, задав значение Optimize
на false
.
matlabFunctionBlock('my_system/my_block',r,... 'Optimize',false)
function r = my_block(x) %#codegen r = x.^2.*(x.^2+1.0);
Задайте порядок входных переменных, которые образуют входные порты в сгенерированном блоке.
Создайте новую пустую модель и откройте ее.
new_system('my_system') open_system('my_system')
Создайте символическое выражение.
syms x y z f = x^2 + y^2 + z^2;
Преобразуйте выражение в блок MATLAB function. По умолчанию, matlabFunctionBlock
использует алфавитный порядок входных параметров при преобразовании символьных выражений.
matlabFunctionBlock('my_system/my_block',f)
function f = my_block(x,y,z) %#codegen f = x.^2+y.^2+z.^2;
Используйте Vars
аргумент для определения порядка входных портов.
matlabFunctionBlock('my_system/my_block',f,... 'Vars', [y z x])
function f = my_block(y,z,x) %#codegen f = x.^2+y.^2+z.^2;
При генерации блока переименуйте выходные переменные и соответствующие порты.
Создайте новую пустую модель и откройте ее.
new_system('my_system') open_system('my_system')
Создайте символическое выражение.
syms x y z f = x^2 + y^2 + z^2;
Преобразуйте выражение в блок MATLAB function и задайте имена выходных переменных и портов. Дважды кликните блок, чтобы увидеть функцию, определяющую блок.
matlabFunctionBlock('my_system/my_block',f,f + 1,f + 2,... 'Outputs', {'name1','name2','name3'})
function [name1,name2,name3] = my_block(x,y,z) %#codegen t2 = x.^2; t3 = y.^2; t4 = z.^2; name1 = t2+t3+t4; if nargout > 1 name2 = t2+t3+t4+1.0; end if nargout > 2 name3 = t2+t3+t4+2.0; end
Функции matlabFunctionBlock
использование нескольких аргументов пары "имя-значение" одновременно.
Создайте новую пустую модель и откройте ее.
new_system('my_system') open_system('my_system')
Создайте символическое выражение.
syms x y z f = x^2 + y^2 + z^2;
Функции matlabFunctionBlock
используя аргументы пары "имя-значение", чтобы задать имя функции, порядок входных портов и имена выходных портов. Дважды кликните блок, чтобы увидеть функцию, определяющую блок.
matlabFunctionBlock('my_system/my_block',f,f + 1,f + 2,... 'FunctionName', 'my_function','Vars',[y z x],... 'Outputs',{'name1','name2','name3'})
function [name1,name2,name3] = my_function(y,z,x) %#codegen t2 = x.^2; t3 = y.^2; t4 = z.^2; name1 = t2+t3+t4; if nargout > 1 name2 = t2+t3+t4+1.0; end if nargout > 2 name3 = t2+t3+t4+2.0; end
block
- Блок для создания измененийБлок для создания модификации, заданный как вектор символов.
f
- Символьный вход, который будет преобразован в блок MATLAB functionСимвольный вход для преобразования в блок MATLAB function, заданный как символьное выражение, функция, вектор или матрица
f1,...,fN
- Символьный вход, который будет преобразован в блок MATLAB function с N
выходыСимвольный вход, который будет преобразован в блок MATLAB function с N
выходы, заданные как несколько символьных выражений, функций, векторов или матриц, разделенных запятыми.
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
matlabFunctionBlock('my_system/my_block',f,'FunctionName','myfun')
'Comments'
- Комментарии для включения в заголовок файлаКомментарии для включения в заголовок файла, заданные как вектор символов, массив ячеек из векторов символов или строковый вектор.
'FunctionName'
- Имя функцииblock
(по умолчанию) | вектор символовИмя функции, заданное как вектор символов. По умолчанию matlabFunction(block,…)
использует block
как имя функции.
'Optimize'
- Флаг, препятствующий оптимизации кодаtrue
(по умолчанию) | false
Флаг, препятствующий оптимизации кода, задается как false
или true
.
При записи в файл, matlabFunctionBlock
оптимизирует код с помощью промежуточных переменных с именем t0
, t1
, ....
См. «Отключить оптимизацию кода».
'Vars'
- Порядок входных переменных и соответствующих входных портов сгенерированного блокаПорядок входа переменных и соответствующих входов портов сгенерированного блока, заданный как вектор символов, вектор символьных переменных или одномерный массив ячеек векторов символов, символьных переменных или векторов символьных переменных.
Количество заданных входных портов должно равняться или превышать количество свободных переменных в f
. Не используйте те же имена для входных портов, заданных Vars
и выходные порты, заданные как Outputs
.
По умолчанию при преобразовании символьных выражений порядок является алфавитным. При преобразовании символьных функций их входные параметры появляются перед другими переменными, а все другие переменные сортируются по алфавиту.
'Outputs'
- Имена выходных портовout
далее указываются выходы портов (по умолчанию) | одномерный массив ячеек из векторов символовИмена выхода портов, заданные как одномерный массив векторов символов. Если вы не задаете имена выхода портов, matlabFunctionBlock
использует имена, которые состоят из слова out
далее указываются выходы портов, например out3
.
Не используйте те же имена для входных портов, заданных Vars
и выходные порты, заданные как Outputs
. См. «Задание выходных портов».
ccode
| fortran
| matlabFunction
| simscapeEquation
| subs
| sym2poly
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.