主要内容gydF4y2Ba

matlabFunctiongydF4y2Ba

符号表达式转换为函数处理或文件gydF4y2Ba

描述gydF4y2Ba

例子gydF4y2Ba

ggydF4y2Ba= matlabFunction (gydF4y2BafgydF4y2Ba)gydF4y2Ba转换符号表达式或函数gydF4y2BafgydF4y2Ba一个MATLABgydF4y2Ba®gydF4y2Ba函数处理gydF4y2BaggydF4y2Ba。如果有一个等价的MATLAB函数操作gydF4y2Ba双gydF4y2Ba符号表达式的数据类型或函数,那么可以使用转换函数没有符号数学工具箱™。gydF4y2Ba

例子gydF4y2Ba

ggydF4y2Ba= matlabFunction (gydF4y2Baf1,…, fNgydF4y2Ba)gydF4y2Ba转换gydF4y2Baf1,…, fNgydF4y2BaMATLAB函数gydF4y2BaNgydF4y2Ba输出。函数句柄gydF4y2BaggydF4y2Ba。的每个元素gydF4y2Baf1,…, fNgydF4y2Ba可以是一个符号表达式、函数或一个向量符号表达式或功能。gydF4y2Ba

例子gydF4y2Ba

ggydF4y2Ba= matlabFunction (gydF4y2Ba___gydF4y2Ba,gydF4y2Ba名称,值gydF4y2Ba)gydF4y2Ba使用指定的一个或多个额外的选项gydF4y2Ba名称,值gydF4y2Ba对参数。您可以指定gydF4y2Ba名称,值gydF4y2Ba后在前面的语法使用的输入参数。gydF4y2Ba

例子gydF4y2Ba

全部折叠gydF4y2Ba

把符号表达式gydF4y2BargydF4y2BaMATLAB函数处理gydF4y2BahtgydF4y2Ba。转换函数可以使用无符号数学工具箱。gydF4y2Ba

信谊x y r =√x ^ 2 + y ^ 2);ht = matlabFunction(右)gydF4y2Ba
ht与价值= function_handle: @ (x, y) sqrt (x ^ 2 + y ^ 2)。gydF4y2Ba

使用逗号分隔输入转换多个符号表达式。gydF4y2Ba

ht = matlabFunction (r, r ^ 2)gydF4y2Ba
ht与价值= function_handle: @ (x, y) (√6 (x ^ 2 + y ^ 2), x ^ 2 + y ^ 2)。gydF4y2Ba

创建一个符号函数,将其转化为一个MATLAB函数处理gydF4y2BahtgydF4y2Ba。gydF4y2Ba

信谊x y f (x, y) = x ^ 3 + y ^ 3;ht = matlabFunction (f)gydF4y2Ba
ht与价值= function_handle: @ (x, y) x ^ 3 ^ 3 + ygydF4y2Ba

编写MATLAB函数生成到一个文件中指定gydF4y2Ba文件gydF4y2Ba选择。覆盖现有的文件。当写入一个文件,gydF4y2BamatlabFunctiongydF4y2Ba优化代码使用中间变量命名gydF4y2Bat0gydF4y2Ba,gydF4y2Bat1gydF4y2Ba,…。包括注释在文件中使用gydF4y2Ba评论gydF4y2Ba选择。gydF4y2Ba

编写MATLAB函数生成gydF4y2BafgydF4y2Ba到文件gydF4y2BamyfilegydF4y2Ba。gydF4y2Ba

信谊f = x ^ 2 +日志(x ^ 2);matlabFunction (f,“文件”,“myfile”);gydF4y2Ba
函数f = myfile (x) % myfile % f = myfile (x) %这个函数生成的符号数学工具箱8.4版。% 1 - 9 - 2019就是t2 = x ^ 2;f = t2 +日志(t2);gydF4y2Ba

包括发表评论gydF4y2Ba版本:1.1gydF4y2Ba在文件中。gydF4y2Ba

matlabFunction (f,‘文件’,‘myfile’,‘评论’,版本:1.1)gydF4y2Ba
函数f = myfile (x)……%版本:1.1 t2 = x ^ 2;…gydF4y2Ba

当你符号表达式转换为MATLAB函数生成的函数和写一个文件,gydF4y2BamatlabFunctiongydF4y2Ba优化代码默认情况下。这种方法可以帮助简化和加快进一步计算,使用该文件。然而,从一些象征性的表达式和函数生成优化的代码可以耗时。使用gydF4y2Ba优化gydF4y2Ba禁用代码优化。gydF4y2Ba

创建一个符号表达式。gydF4y2Ba

信谊x r = x ^ 2 * (x ^ 2 + 1);gydF4y2Ba

转换gydF4y2BargydF4y2BaMATLAB函数和写文件的函数gydF4y2BamyfilegydF4y2Ba。默认情况下,gydF4y2BamatlabFunctiongydF4y2Ba创建一个文件包含优化代码。gydF4y2Ba

f = matlabFunction (r,“文件”,“myfile”);gydF4y2Ba
函数r = myfile (x) % myfile % r = t2 myfile (x) = x ^ 2;r = t2。* (t2 + 1.0);gydF4y2Ba

禁用优化的代码设置的值gydF4y2Ba优化gydF4y2Ba来gydF4y2Ba假gydF4y2Ba。gydF4y2Ba

f = matlabFunction (r,“文件”,“myfile”,“优化”,假);gydF4y2Ba
函数r = myfile (x) % myfile % r = myfile (x) r = x ^ 2。* (x ^ 2 + 1.0);gydF4y2Ba

当你符号矩阵转换为MATLAB函数,gydF4y2BamatlabFunctiongydF4y2Ba代表它的默认稠密矩阵。如果大多数输入符号矩阵的元素是0,更有效的方法是稀疏矩阵来表示它。gydF4y2Ba

创建一个3×3象征性的对角矩阵。gydF4y2Ba

信谊x =诊断接头(x *的(1、3))gydF4y2Ba
A = [x, 0,0] [0, x, 0] [0, 0, x]gydF4y2Ba

转换gydF4y2Ba一个gydF4y2BaMATLAB函数代表一个数字矩阵,并将结果写入文件gydF4y2Bamyfile1gydF4y2Ba。默认情况下,生成的MATLAB函数创建密集的数字矩阵指定矩阵的每个元素,包括所有零元素。gydF4y2Ba

f1 = matlabFunction(“文件”,“myfile1”);gydF4y2Ba
函数= myfile1 (x) % myfile1 % = myfile1 (x) =重塑([x, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, x], [3 3]);gydF4y2Ba

转换gydF4y2Ba一个gydF4y2Ba通过设置一个MATLAB函数gydF4y2Ba稀疏的gydF4y2Ba来gydF4y2Ba真正的gydF4y2Ba。现在,生成的MATLAB函数创建稀疏矩阵数值只指定非零元素和零假设所有其他元素。gydF4y2Ba

f2 = matlabFunction(‘文件’,‘myfile2’,‘稀疏’,真的);gydF4y2Ba
函数= myfile2 (x) % myfile2 % = myfile2 (x) =稀疏([1,2,3],[1,2,3],[x, x, x], 3, 3);gydF4y2Ba

将表达式转换为一个MATLAB函数时,您可以指定的顺序输入参数的函数。您还可以指定一些输入参数向量,而不是单一的变量。gydF4y2Ba

创建一个符号表达式。gydF4y2Ba

信谊x y z r = x + y / 2 + z / 3;gydF4y2Ba

转换gydF4y2BargydF4y2BaMATLAB函数和写这个函数文件gydF4y2BamyfilegydF4y2Ba。默认情况下,gydF4y2BamatlabFunctiongydF4y2Ba使用字母顺序输入参数的转换符号表达式只包含小写字母的变量名。gydF4y2Ba

matlabFunction (r,“文件”,“myfile”);gydF4y2Ba
函数r = myfile (x, y, z) % myfile % r = myfile (x, y, z) r = x + y / 2.0 + z / 3.0;gydF4y2Ba

使用gydF4y2BavargydF4y2Ba参数指定的顺序输入参数生成的MATLAB函数。gydF4y2Ba

matlabFunction (r,‘文件’,‘myfile’,“var”, [y z x]);gydF4y2Ba
函数r = myfile (y, z、x) % myfile % r = myfile (y, z, x) r = x + y / 2.0 + z / 3.0;gydF4y2Ba

现在,将一个表达式gydF4y2BargydF4y2BaMATLAB函数的输入参数是一个矢量。gydF4y2Ba

信谊x y z t r = (x + y / 2 + z / 3) * exp (- t);matlabFunction (r,‘文件’,‘myfile’,“var”{t [x y z]});gydF4y2Ba
函数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);gydF4y2Ba

当将一个符号表达式转换为一个MATLAB函数,您可以指定输出变量的名称。请注意,gydF4y2BamatlabFunctiongydF4y2Ba没有gydF4y2Ba文件gydF4y2Ba参数(或指定文件路径由一个空字符向量)创建一个函数处理,而忽略了gydF4y2Ba输出gydF4y2Ba国旗。gydF4y2Ba

创建符号表情gydF4y2BargydF4y2Ba和gydF4y2Ba问gydF4y2Ba。gydF4y2Ba

信谊x y z r = x ^ 2 + y ^ 2 + z ^ 2;q = x ^ 2 - y ^ 2 - z ^ 2;gydF4y2Ba

转换gydF4y2BargydF4y2Ba和gydF4y2Ba问gydF4y2BaMATLAB函数生成的函数和写一个文件gydF4y2BamyfilegydF4y2Ba两个元素,它返回一个向量,gydF4y2Baname1gydF4y2Ba和gydF4y2Baname2gydF4y2Ba。gydF4y2Ba

f = matlabFunction (r, q,‘文件’,‘myfile’,……“输出”,{‘name1’,‘name2});gydF4y2Ba
函数[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;如果nargout > 1 name2 = t2-t3-t4;结束gydF4y2Ba

可以加快象征性的评价函数在给定的坐标转换符号函数一个匿名的MATLAB函数。使用gydF4y2BamatlabFunctiongydF4y2Ba执行转换。评价一个象征性的函数返回象征性的数字是精确的,而评价的MATLAB函数返回双精度数字。gydF4y2Ba

创建一个符号函数gydF4y2Baf (x, y, z)gydF4y2Ba这是一个函数的gydF4y2BaxgydF4y2Ba,gydF4y2BaygydF4y2Ba,gydF4y2BazgydF4y2Ba。gydF4y2Ba

信谊gydF4y2Baf (x, y, z)gydF4y2Baf (x, y, z) = y * z * sin (x) + x * sin (z) * cos (y) - z ^ 3;gydF4y2Ba

在指定的时间间隔创建3 d网格坐标。gydF4y2Ba

[xDouble, yDouble zDouble] = meshgrid (1:20, 1:50, 1:20);gydF4y2Ba

对符号函数在这些坐标。使用一对测量运行时间gydF4y2Ba抽搐gydF4y2Ba和gydF4y2BatocgydF4y2Ba调用。gydF4y2Ba

抽搐fResult = f (xDouble、yDouble zDouble);tocgydF4y2Ba
运行时间是2.709857秒。gydF4y2Ba

评价是缓慢的,但它返回象征性的数字是精确的。显示结果的示例。gydF4y2Ba

fResult (1:2, 1:2, 20)gydF4y2Ba
ans =gydF4y2Ba

(gydF4y2Ba 20.gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba +gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba 20.gydF4y2Ba )gydF4y2Ba - - - - - -gydF4y2Ba 8000年gydF4y2Ba 20.gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba 2gydF4y2Ba )gydF4y2Ba +gydF4y2Ba 2gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba 20.gydF4y2Ba )gydF4y2Ba - - - - - -gydF4y2Ba 8000年gydF4y2Ba 40gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba +gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba 2gydF4y2Ba )gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba 20.gydF4y2Ba )gydF4y2Ba - - - - - -gydF4y2Ba 8000年gydF4y2Ba 40gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba 2gydF4y2Ba )gydF4y2Ba +gydF4y2Ba 2gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba 2gydF4y2Ba )gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba 20.gydF4y2Ba )gydF4y2Ba - - - - - -gydF4y2Ba 8000年gydF4y2Ba )gydF4y2Ba

加快评估函数,将符号函数转换成使用MATLAB函数gydF4y2BamatlabFunctiongydF4y2Ba。评估在同一坐标的MATLAB函数。gydF4y2Ba

f1 = matlabFunction (f);抽搐fResult = f1 (xDouble、yDouble zDouble);tocgydF4y2Ba
运行时间是0.021283秒。gydF4y2Ba

评价是更快。评估MATLAB函数返回双精度数字。显示结果的示例。gydF4y2Ba

fResult (1:2, 1:2, 20)gydF4y2Ba
ans =gydF4y2Ba2×2gydF4y2Ba10gydF4y2Ba3gydF4y2Ba×-7.9827 -7.9808 -7.9667 -7.9644gydF4y2Ba

输入参数gydF4y2Ba

全部折叠gydF4y2Ba

符号输入转换为一个MATLAB函数,指定的符号表达式,函数向量或矩阵。当转换稀疏符号向量或矩阵,使用名称-值对的论点gydF4y2Ba‘稀疏’,真的gydF4y2Ba。gydF4y2Ba

符号输入转换为MATLAB函数gydF4y2BaNgydF4y2Ba输出,指定为几个符号表达式、函数、向量或矩阵,由逗号隔开。gydF4y2Ba

matlabFunctiongydF4y2Ba不创建一个单独的输出参数符号向量或矩阵的每个元素。例如,gydF4y2Bag = matlabFunction ([x + 1, y + 1])gydF4y2Ba创建一个MATLAB函数和一个输出参数,gydF4y2Bag = matlabFunction (x + 1, + 1)gydF4y2Ba创建一个MATLAB函数有两个输出参数。gydF4y2Ba

名称-值参数gydF4y2Ba

指定可选的逗号分隔条gydF4y2Ba名称,值gydF4y2Ba参数。gydF4y2Ba的名字gydF4y2Ba参数名称和吗gydF4y2Ba价值gydF4y2Ba相应的价值。gydF4y2Ba的名字gydF4y2Ba必须出现在引号。您可以指定几个名称和值对参数在任何顺序gydF4y2BaName1, Value1,…,的家gydF4y2Ba。gydF4y2Ba

例子:gydF4y2BamatlabFunction (f,“文件”,“myfile”,“优化”,假)gydF4y2Ba

评论中包含文件头,指定为一个特征向量,单元阵列的特征向量,或字符串向量。gydF4y2Ba

文件路径包含生成的MATLAB函数,指定为一个特征向量。生成的函数接受参数的类型gydF4y2Ba双gydF4y2Ba没有符号数学工具箱,可以使用。如果gydF4y2Ba文件gydF4y2Ba是空的,gydF4y2BamatlabFunctiongydF4y2Ba生成一个匿名函数。如果gydF4y2Ba文件gydF4y2Ba不结束gydF4y2Ba。m,函数附加gydF4y2Ba。m。gydF4y2Ba

当写入一个文件,gydF4y2BamatlabFunctiongydF4y2Ba优化代码使用中间变量命名gydF4y2Bat0gydF4y2Ba,gydF4y2Bat1gydF4y2Ba,....禁用代码优化,使用gydF4y2Ba优化gydF4y2Ba论点。gydF4y2Ba

看到gydF4y2Ba编写MATLAB函数文件与评论gydF4y2Ba。gydF4y2Ba

国旗防止优化函数编写的代码文件,指定为gydF4y2Ba假gydF4y2Ba或gydF4y2Ba真正的gydF4y2Ba。gydF4y2Ba

当写入一个文件,gydF4y2BaccodegydF4y2Ba优化代码使用中间变量命名gydF4y2Bat0gydF4y2Ba,gydF4y2Bat1gydF4y2Ba,....gydF4y2Ba

matlabFunctiongydF4y2Ba没有gydF4y2Ba文件gydF4y2Ba参数(或指定文件路径由一个空字符向量)创建一个函数处理。在这种情况下,代码没有优化。如果您试图执行代码优化设置gydF4y2Ba优化gydF4y2Ba来gydF4y2Ba真正的gydF4y2Ba,然后gydF4y2BamatlabFunctiongydF4y2Ba抛出一个错误。gydF4y2Ba

看到gydF4y2Ba禁用代码优化gydF4y2Ba。gydF4y2Ba

国旗稀疏和稠密矩阵生成之间的切换,指定为gydF4y2Ba真正的gydF4y2Ba或gydF4y2Ba假gydF4y2Ba。当你指定gydF4y2Ba‘稀疏’,真的gydF4y2Ba,生成的MATLAB函数符号矩阵的稀疏表示数值矩阵。使用gydF4y2Ba‘稀疏’,真的gydF4y2Ba当你转换符号矩阵包含许多零元素。通常,稀疏矩阵的操作的效率比相同的密度矩阵的操作。gydF4y2Ba

看到gydF4y2Ba生成稀疏矩阵gydF4y2Ba。gydF4y2Ba

的顺序输入变量或向量生成的MATLAB函数,指定为一个特征向量,向量符号变量,或一维单元阵列的特征向量,向量符号变量或符号变量。gydF4y2Ba

指定的输入变量的数量必须等于或超过自由变量的数量gydF4y2BafgydF4y2Ba。不要使用相同的名称所指定的输入变量gydF4y2BavargydF4y2Ba和指定的输出变量gydF4y2Ba输出gydF4y2Ba。gydF4y2Ba

默认情况下,当你转换符号表达式,为变量名只包含小写字母,字母的顺序。当你转换符号函数,输入参数出现在前面的其他变量,和所有其他变量按字母顺序排序。gydF4y2Ba

看到gydF4y2Ba指定输入参数生成功能gydF4y2Ba。gydF4y2Ba

输出变量的名字,指定为一维单元阵列的特征向量。gydF4y2Ba

如果你不指定输出变量名,然后他们配合你调用时使用的名字gydF4y2BamatlabFunctiongydF4y2Ba。如果你叫gydF4y2BamatlabFunctiongydF4y2Ba使用一个表达式而不是单个变量,输出变量的默认名称的词gydF4y2Ba出gydF4y2Ba紧随其后的是一个数字,例如,gydF4y2Baout3gydF4y2Ba。gydF4y2Ba

不要使用相同的名称所指定的输入变量gydF4y2BavargydF4y2Ba和指定的输出变量gydF4y2Ba输出gydF4y2Ba。gydF4y2Ba

matlabFunctiongydF4y2Ba没有gydF4y2Ba文件gydF4y2Ba参数(或指定文件路径由一个空字符向量)创建一个函数处理。在这种情况下,gydF4y2BamatlabFunctiongydF4y2Ba忽略了gydF4y2Ba输出gydF4y2Ba国旗。gydF4y2Ba

看到gydF4y2Ba指定输出变量gydF4y2Ba。gydF4y2Ba

输出参数gydF4y2Ba

全部折叠gydF4y2Ba

函数处理,可以作为一个输入参数数值的功能,作为一个MATLAB函数返回句柄。gydF4y2Ba

限制gydF4y2Ba

  • 一些具有象征意义的功能,没有相应的MATLAB函数操作gydF4y2Ba双gydF4y2Ba数据类型,例如gydF4y2Ba简化gydF4y2Ba和gydF4y2Ba解决gydF4y2Ba,作为符号函数转换的MATLAB函数处理或文件。转换后的文件,由这些功能不能使用部署gydF4y2BaMATLAB编码器™gydF4y2Ba或gydF4y2BaMATLAB编译器™gydF4y2Ba。你需要创建自己的函数gydF4y2Ba双gydF4y2Ba数据类型来代替这些符号函数。如果你感兴趣的一个象征性的函数不能被部署,请联系gydF4y2BaMathWorksgydF4y2Ba技术支持金宝appgydF4y2Ba。gydF4y2Ba

提示gydF4y2Ba

  • 当你使用gydF4y2Ba文件gydF4y2Ba参数,使用gydF4y2Ba重新处理gydF4y2Ba立即提供生成的函数。gydF4y2Ba重新处理gydF4y2Ba更新MATLAB已知文件的目录列表搜索路径。gydF4y2Ba

  • 如果gydF4y2Ba文件gydF4y2Ba选项是空的,然后返回一个匿名函数。gydF4y2Ba

  • 使用gydF4y2BamatlabFunctiongydF4y2Ba将一个或多个符号表达式转换成一个MATLAB函数生成的函数和写一个m文件。然后您可以使用生成的m文件创建独立的应用程序和web应用程序使用gydF4y2BaMATLAB编译器gydF4y2Ba。例如,请参见gydF4y2Ba部署生成的MATLAB函数与MATLAB编译器符号表达式gydF4y2Ba。gydF4y2Ba

  • 使用gydF4y2BamatlabFunctiongydF4y2Ba将一个或多个符号表达式转换成一个MATLAB函数生成的函数和写一个m文件。然后您可以使用生成的m文件创建使用C或c++代码gydF4y2BaMATLAB编码器gydF4y2Ba应用。例如,明白了gydF4y2Ba从符号表达式生成C代码使用MATLAB编码器应用gydF4y2Ba。gydF4y2Ba

介绍了R2008bgydF4y2Ba