使用 matlabFunction,我如何指定哪些是变量,哪些是常量?

Using matlabFunction, how can I specify which is the variable and which are constants?

我有一个函数,我想将其作为一个积分来求值(使用函数 'integral',它在参数中接受一个函数句柄),它使用符号变量,但我想创建一个 matlabFunction(一个匿名函数) ) 仅根据这些符号变量之一,并将其​​他变量视为常量。

s =  (g^2*t^2 + 2*sin(a)*g*t*v + v^2)^(1/2)    

S = matlabFunction(s)

S = 

@(a,g,t,v)sqrt(v.^2+g.^2.*t.^2+g.*t.*v.*sin(a).*2.0)

但我想看到的是

@(t)sqrt(v.^2+g.^2.*t.^2+g.*t.*v.*sin(a).*2.0)

这里有一个解决方法。

函数integral对函数进行数值积分。因此要使用它,你需要一个数值表达式,因此你需要给 agv.

赋值

如果您不想这样做,您可以对方程 s 进行符号积分,因此:

s =  (g^2*t^2 + 2*sin(a)*g*t*v + v^2)^(1/2)    
int(s,'t')
ans=
(t/2 + (v*sin(a))/(2*g))*(g^2*t^2 + 2*sin(a)*g*t*v + v^2)^(1/2) + (log((g^2*t^2 + 2*sin(a)*g*t*v + v^2)^(1/2) + (t*g^2 + v*sin(a)*g)/(g^2)^(1/2))*(g^2*v^2 - g^2*v^2*sin(a)^2))/(2*(g^2)^(3/2))

然后你可以使用微积分基本定理计算积分。