matlabFunctionBlock
将符号表达式转换为MATLAB功能块
描述
例子
将符号表达式转换为MATLAB功能块
创建一个新模型并将符号表达式转换为MATLAB函数块。属性在块中包含注释评论
选择。
创建一个新模型并打开它。
new_system (my_system) open_system(“my_system”)
创造一个象征性的表达。
Syms x y z f = x²+ y²+ z²;
使用matlabFunctionBlock
要创建块my_block
包含象征性的表达。matlabFunctionBlock
覆盖现有的块。
matlabFunctionBlock (my_system / my_block, f)
双击生成的块,打开并编辑定义该块的函数。
这个函数是由符号数学工具箱7.3版生成的。f = x.^2+y.^2+z.^2;
包括注释版本1.1
在街区里。
matlabFunctionBlock (my_system / my_block, f,“评论”,“版本:1.1”)
函数f = my_block(x,y,z)…f = x.^2+y.^2+z.^2;
保存并关闭my_system
.
save_system (my_system) close_system(“my_system”)
将符号函数转换为MATLAB功能块
创建一个新模型并将符号函数转换为MATLAB函数块。
创建一个新的空模型并打开它。
new_system (“my_system”) open_system (“my_system”)
创建一个符号函数。
信谊xyzF (x, y, z) = x²+ y²+ z²;
转换f
到MATLAB函数块。双击块查看函数。
matlabFunctionBlock (“my_system / my_block”f)
函数f = my_block (x, y, z) % # codegen f = x ^ 2 + y ^ 2 + z。^ 2;
创建具有多个输出的块
将几个符号表达式转换为具有多个输出端口的MATLAB函数块。
创建一个新的空模型并打开它。
new_system (“my_system”) open_system (“my_system”)
创造三个象征性的表达。
信谊xyzF = x^2;G = y^2;H = z^2;
将它们转换为MATLAB函数块。matlabFunctionBlock
创建具有三个输出端口的块。双击块查看函数。
matlabFunctionBlock (“my_system / my_block”, f, g, h)
函数[f,g,h] = my_block(x,y,z) %#代码原f = x.^2;如果nargout > 1 g = y.^2;如果nargout > 2 h = z.^2;结束
为生成的函数指定函数名
指定定义生成的MATLAB函数块的函数的名称。
创建一个新的空模型并打开它。
new_system (“my_system”) open_system (“my_system”)
创造一个象征性的表达。
信谊xyzF = x²+ y²+ z²;
生成一个块,并将函数名称设置为my_function
.双击块查看函数。
matlabFunctionBlock (“my_system / my_block”f...“FunctionName”,“my_function”)
函数f = my_function(x,y,z) %#代码原f = x.^2+y.^2+z.^2;
禁用代码优化
当您将符号表达式转换为MATLAB函数块时,matlabFunctionBlock
默认情况下优化代码。这种方法可以帮助简化和加快使用该文件的进一步计算。然而,从一些符号表达式和函数生成优化的代码可能非常耗时。使用优化
禁用代码优化。
创建一个新的空模型并打开它。
new_system (“my_system”) open_system (“my_system”)
创造一个象征性的表达。
信谊xR = x²*(x²+ 1);
使用matlabFunctionBlock
要创建块my_block
包含象征性的表达。双击该块以查看定义该块的函数。默认情况下,matlabFunctionBlock
创建包含优化代码的文件。
matlabFunctionBlock (“my_system / my_block”右)
函数r = my_block(x) %#代码原t2 = x.^2;R = t2.*(t2+1.0);
的值禁用代码优化优化
来假
.
matlabFunctionBlock (“my_system / my_block”r...“优化”假)
函数r = my_block (x) % # codegen r = x ^ 2。* (x ^ 2 + 1.0);
为生成的块指定输入端口
指定在生成的块中形成输入端口的输入变量的顺序。
创建一个新的空模型并打开它。
new_system (“my_system”) open_system (“my_system”)
创造一个象征性的表达。
信谊xyzF = x²+ y²+ z²;
将表达式转换为MATLAB函数块。默认情况下,matlabFunctionBlock
转换符号表达式时使用输入参数的字母顺序。
matlabFunctionBlock (“my_system / my_block”f)
函数f = my_block (x, y, z) % # codegen f = x ^ 2 + y ^ 2 + z。^ 2;
使用var
参数指定输入端口的顺序。
matlabFunctionBlock (“my_system / my_block”f...“var”, [y z x])
函数f = my_block (y, z、x) % # codegen f = x ^ 2 + y ^ 2 + z。^ 2;
为自动生成的元素指定输入端口
为自动生成的元素显式指定输入变量。
创建一个新的空模型并打开它。
new_system (“my_system”) open_system (“my_system”)
创建一个符号变量u
还有一个3乘1的符号变量向量x
.下面的命令还会自动生成符号变量x1
,x2
,x3
在MATLAB工作空间中。
信谊u信谊x(3 - 1)谁
名称大小字节分类属性u 1x1 8 sym x 3x1 8 sym x1 1x1 8 sym x2 1x1 8 sym x3 1x1 8 sym
创建使用符号变量的符号表达式u
而且x
.
A = [0 10 0;0 0 1;-1 -2];B = [0;0;3);xdot = A*x+b*u
Xdot = x2 x3 3*u - x1 - x2 - 2*x3
转换xdot
表达式转换为MATLAB函数块。因为元素xdot
包含变量u
以及自动生成的变量x1
,x2
,x3
,指定var
参数,而不是使用u
而且x
.
matlabFunctionBlock (“my_system / my_block”xdot,“var”, {u (x1, x2, x3})
函数xdot = my_block(u,x1,x2,x3) %#codegen xdot = [x2;x3;u.*3.0-x1-x2-x3.*2.0];
指定输出端口
当生成一个块时,重命名输出变量和相应的端口。
创建一个新的空模型并打开它。
new_system (“my_system”) open_system (“my_system”)
创造一个象征性的表达。
信谊xyzF = x²+ y²+ z²;
将表达式转换为MATLAB函数块,并指定输出变量和端口的名称。双击该块以查看定义该块的函数。
matlabFunctionBlock (“my_system / my_block”f,f + 1,f + 2,...“输出”, {“name1”,“name2”,“name3”})
函数[name1,name2,name3] = my_block(x,y,z) %#代码原t2 = x.^2;T3 = y.^2;T4 = z.^2;Name1 = t2+t3+t4;nargout > 1 name2 = t2+t3+t4+1.0;如果name3 = t2+t3+t4+2.0;结束
指定功能名称,输入和输出端口
调用matlabFunctionBlock
同时使用多个名称-值对参数。
创建一个新的空模型并打开它。
new_system (“my_system”) open_system (“my_system”)
创造一个象征性的表达。
信谊xyzF = x²+ y²+ z²;
调用matlabFunctionBlock
使用名称-值对参数指定函数名、输入端口的顺序和输出端口的名称。双击该块以查看定义该块的函数。
matlabFunctionBlock (“my_system / my_block”f,f + 1,f + 2,...“FunctionName”,“my_function”,“var”,[y z x],...“输出”, {“name1”,“name2”,“name3”})
函数[name1,name2,name3] = my_function(y,z,x) %#代码原t2 = x.^2;T3 = y.^2;T4 = z.^2;Name1 = t2+t3+t4;nargout > 1 name2 = t2+t3+t4+1.0;如果name3 = t2+t3+t4+2.0;结束
输入参数
块
- - - - - -块,以创建或修改
特征向量
要创建或修改的块,指定为字符向量。
f
- - - - - -符号输入转换为MATLAB函数块
符号表达式|符号函数|象征性的向量|象征性的矩阵
要转换为MATLAB函数块的符号输入,指定为符号表达式、函数、向量或矩阵。
f1,…,fN
- - - - - -符号输入转换成MATLAB函数块用N
输出
几个象征性的表达|几个符号函数|几个符号向量|几个符号矩阵
符号输入要转换成MATLAB函数块用N
输出,指定为若干符号表达式、函数、向量或矩阵,用逗号分隔。
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:matlabFunctionBlock (my_system / my_block, f,‘FunctionName’,‘myfun’)
评论
- - - - - -要包含在文件头中的注释
特征向量|字符向量的单元格数组|字符串向量
要包含在文件头中的注释,指定为字符向量、字符向量的单元格数组或字符串向量。
FunctionName
- - - - - -函数名称
与输入参数一致块
(默认)|特征向量
函数的名称,指定为字符向量。默认情况下,matlabFunction(块,…)
使用块
作为函数名。
看到为生成的函数指定函数名.
优化
- - - - - -代码优化标志
真正的
(默认)|假
var
- - - - - -输入变量的顺序和生成块对应的输入端口
特征向量|符号变量向量|字符向量的一维单元数组|符号变量的一维单元格数组|符号变量向量的一维单元数组
所生成块的输入变量的顺序和相应的输入端口,指定为字符向量、符号变量向量或字符向量、符号变量向量或符号变量向量的一维单元格数组。
指定的输入端口的数量必须等于或超过中自由变量的数量f
.输入端口不使用相同的名称var
和指定的输出端口输出
.
默认情况下,转换符号表达式时,顺序是字母顺序。转换符号函数时,它们的输入参数出现在其他变量前面,所有其他变量都按字母顺序排序。
看到为生成的块指定输入端口.
输出
- - - - - -输出端口名称
出
后面是输出端口号(默认)|字符向量的一维单元数组
输出端口的名称,指定为字符向量的一维单元格数组。如果不指定输出端口名称,matlabFunctionBlock
使用由单词组成的名称出
后面跟着输出端口号,例如:out3
.
输入端口不使用相同的名称var
和指定的输出端口输出
.看到指定输出端口.
限制
一些符号函数没有对应的MATLAB函数操作
双
数据类型,例如简化
而且解决
,都作为符号函数保存在生成的MATLAB函数块中。由这些函数组成的转换函数块不能在Simulink模型中使用。金宝app方法创建自己的函数双
数据类型来替换这些符号函数。如果您对不能在Simulink模型中使用的符号函数感兴趣,请联系金宝appMathWorks技术支持金宝app.
版本历史
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。