主要内容

生成MATLAB函数从符号表情

您可以使用matlabFunction生成一个MATLAB®函数处理,计算数值,如果你是用数字代替变量符号表达式。同时,matlabFunction可以创建一个文件,接受数字参数和评估符号表达式应用于参数。生成的文件在任何使用MATLAB计算,计算机运行该文件是否有许可证的符号数学工具箱™函数。

生成一个函数处理

matlabFunction可以生成一个函数处理任何符号表达式。例如:

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

您可以使用这个函数处理数值计算:

5 ht (5)
ans = 0.6089

你可以通过通常的MATLAB双精度数字或矩阵函数处理。例如:

cc = (5、3);dd =(闲置,5);ht (cc、dd)
ans = 0.6089 - 0.9954

提示

一些符号表达式不能使用MATLAB函数表示。matlabFunction不能把这些符号表达式,但发出警告。因为这些表达式可能导致未定义的函数调用,总是检查转换结果,验证结果通过执行生成的功能。

控制变量的顺序

matlabFunction生成输入变量符号表达式按字母顺序排列。这就是为什么这个函数处理生成一个函数处理x之前y:

ht = @ (x, y)双曲正切(x。^ 2 + y ^ 2) ^ (1. / 2))

您可以指定的顺序输入变量在函数处理使用var选择。您指定的顺序通过特征向量的单元阵列或符号数组,或一个向量符号变量。例如:

信谊x y z r =√x ^ 2 + 3 * y ^ 2 + 5 * z ^ 2);ht1 = matlabFunction(双曲正切(r)、“var”[y x z])
ht1 = function_handle价值:@ (y、x, z)双曲正切(sqrt (x ^ 2 + y ^ 2。* 3.0 + z ^ 2 * 5.0)。)
ht2 = matlabFunction(双曲正切(r)、“var”{' x ', ' y ', ' z '})
ht2 = function_handle价值:@ (x, y, z)双曲正切(sqrt (x ^ 2 + y ^ 2。* 3.0 + z ^ 2 * 5.0)。)
ht3 = matlabFunction(双曲正切(r)、“var”{“x”, [y z]})
ht3 = function_handle价值:@ (x, in2)双曲正切(sqrt (x ^ 2 + in2 (: 1)。^ 2。* 3.0 + in2 (:, 2) ^ 2 * 5.0))

生成一个文件

你可以生成一个文件从一个象征性的表达,除了一个处理函数。使用指定的文件名称文件选择。通过特征向量包含文件名或文件路径。如果你不指定文件路径,matlabFunction创建这个文件在当前文件夹。

这个示例中生成一个文件,计算符号矩阵的值F双精度的输入t,x,y:

信谊x y t z = (x ^ 3 - tan (y)) / (x ^ 3 +棕褐色(y));w = z / (1 + t ^ 2);F = [w t ^ (1 + 2) * x / y;(1 + t ^ 2) * x / y, 3 * z - 1];matlabFunction (F,“文件”,“testMatrix.m”)

该文件testMatrix.m包含以下代码:

函数F = testMatrix (t, x, y) % testMatrix % F = testMatrix (t, x, y) t2 = x ^ 2;t3 = tan (y);t4 = t2。* x;t5 = t ^ 2;t6 = t5 + 1;t7 = 1. / y;t8 = t6。* t7。* x;t9 = t3 + t4;t10 = 1. / t9;F = [(t10。*(t3 - t4))./t6,t8; t8,- t10.*(3.*t3 - 3.*t2.*x) - 1];

matlabFunction产生许多中间变量。这就是所谓的优化代码。MATLAB生成中间变量作为一个小写字母t例如,紧随其后的是一个自动生成的数字t32。中间变量可以使生成的代码更有效(如通过重用中间表达式t4,t6,t8,t9,t10计算的F)。使用中间变量可以使代码更容易阅读使用短的表达式。

如果你不希望默认输入变量的字母顺序排列,使用var选择的顺序控制。继续这个示例,

matlabFunction (F,“文件”,“testMatrix.m”,“var”,[x y t])

生成一个文件相当于上次不同的顺序的输入:

函数F = testMatrix (x, y, t)……

输出变量名称

默认情况下,输出变量的名称与您所使用的名称调用matlabFunction。例如,如果您的电话matlabFunction与变量F

信谊x y t z = (x ^ 3 - tan (y)) / (x ^ 3 +棕褐色(y));w = z / (1 + t ^ 2);F = [w t ^ (1 + 2) * x / y;(1 + t ^ 2) * x / y, 3 * z - 1];matlabFunction (F,‘文件’,‘testMatrix。米”、“var”, [x y t])

生成的输出变量的名字是也F:

函数F = testMatrix (x, y, t)……

如果你叫matlabFunction使用一个表达式而不是单个变量

信谊x y t z = (x ^ 3 - tan (y)) / (x ^ 3 +棕褐色(y));w = z / (1 + t ^ 2);F = [w t ^ (1 + 2) * x / y;(1 + t ^ 2) * x / y, 3 * z - 1];matlabFunction (w + z + F,‘文件’,‘testMatrix.m’,……“var”, [x y t])
默认的输出变量的名字由这个词其次是数量,例如:
函数着干活= testMatrix (x, y, t)……
自定义输出变量的名称,使用输出选择:

信谊x y z r = x ^ 2 + y ^ 2 + z ^ 2;q = x ^ 2 - y ^ 2 - z ^ 2;f = matlabFunction (r, q,‘文件’,‘new_function’,……“输出”,{‘name1’,‘name2})

生成的函数返回name1name2结果:

函数[name1 name2] = new_function (x, y, z)…