Matlab中如何不用符号函数求导数

Matlab中如何不用符号函数求导数,matlab,derivative,Matlab,Derivative,我想求这个函数的导数: function [f] = f4(x) f=0.5*(x(1)^2+10*x(2)^2); end 我用符号来寻找雅可比矩阵: x = sym('x', [2 1]); f=0.5*(x(1)^2+10*x(2)^2); grad=jacobian(f,x) 返回 grad = [ x1, 10*x2] 然后我手动将其更改为如下所示,以便可以使用feval: grad = [ x(1,1), 10*x(2,1)]; 我发现使用feval比使用subs更

我想求这个函数的导数:

function [f] = f4(x) 
    f=0.5*(x(1)^2+10*x(2)^2);
end
我用符号来寻找雅可比矩阵:

x = sym('x', [2 1]);
f=0.5*(x(1)^2+10*x(2)^2);
grad=jacobian(f,x)
返回

grad = [ x1, 10*x2]
然后我手动将其更改为如下所示,以便可以使用
feval

grad = [ x(1,1), 10*x(2,1)];

我发现使用
feval
比使用
subs
更快。我想找到我可以使用
feval
计算的任何函数的导数,并避免手动执行任何操作。

你想不使用通常我们在matlab中通过sym函数定义的符号进行导数吗?只要导数的最终函数不是符号函数,我不必手动编辑它。那么,您希望如何获得没有符号的函数呢?以哪种形式
feval
用于内置函数或
.m
-文件定义的函数。没有为您编写m文件的内置功能。但是您可以使用符号工具箱实现一个。但这对我来说太尴尬了。可能的重复——特别是五月的第三个选项,复杂的阶跃微分。另请参见此问题:。的可能重复项。