生成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})
生成的函数返回name1
和name2
结果:
函数[name1 name2] = new_function (x, y, z)…