我的符号功能有问题。我正在创建自己的函数,其第一个参数是一个字符串。然后我将该字符串转换为符号函数:
f = syms(func)
让我们说我的字符串是sin(x)
。所以现在我想用subs
来计算它。
a = subs(f, 1)
结果是sin(1)
而不是数字。
对于0
,它可以正常工作和计算。我应该怎么做才能获得实际结果,不仅仅是sin(1)
或sin(2)
等?
答案 0 :(得分:7)
您也可以使用eval()
评估subs()
功能获得的功能
f=sin(x);
a=eval(subs(f,1));
disp(a);
a =
0.8415
答案 1 :(得分:4)
syms x
f = sin(x) ;
然后,如果您要为x
分配值,例如pi/2
您可以执行以下操作:
subs(f,x,pi/2)
ans =
1
答案 2 :(得分:2)
您可以使用matlabFunction有效地评估函数。 syms s t x = [2-5 * t - 2 * s,9 * s + 12 * t - 5,7 * s + 2 * t - 1]; X = matlabFunction(X); 然后您可以在命令窗口中键入x并确保显示以下内容:
X
x =
@(s,t)[s.*-2.0-t.*5.0+2.0,s.*9.0+t.*1.2e1-5.0,s.*7.0+t.*2.0-1.0]
你可以看到你的函数现在由s和t定义。您可以通过写入x(1,2)来调用此函数,其中s = 1且t = 1。它应该为你生成一个值。
以下是需要考虑的一些事项:我不知道这种方法与潜艇之间哪个更准确。不同方法的精度可以变化。如果你试图产生巨大的矩阵,我不知道哪个会运行得更快。如果你没有进行认真的研究或编码速度,那么这些事情可能并不重要。