我试图在Matlab中构建一个符号函数,如下所示:
syms theta
Rx(theta) = cos(theta) + sin(theta);
当我输入Rx(0.1)
时,Matlab会返回cos(1/10) + sin(1/10)
但我想要做的就是让Matlab用数字来评估它。我可以使用double(Rx(0.1))
来实现这一点,但是当在循环中对更复杂的函数执行相同的操作时,每次转换为double会导致它运行得非常慢。有没有办法改变Rx
本身以提供数字输出?
答案 0 :(得分:1)
您可以从符号函数创建标准(非符号)匿名函数。为此,您使用matlabFunction
syms theta
Rx(theta) = cos(theta) + sin(theta);
Rxd = matlabFunction(Rx);
然后
>> Rxd(0.1)
ans =
1.094837581924854
请注意,你可能会失去精确度,因为计算是从头开始以数字方式完成的,而不是象征性的,只在最后转换为double
。