缺少变量时的Matlab梯度

Matlab gradient when missing variables

让函数f依赖于长度为5的符号变量向量,x。我想导出 f.

的符号梯度
c=1
d=2
x=sym('x',[1 5]);
f=-0.5*log(x(1))+x(1)*0.5*(x(2+d)/x(1)-c)^2
gradient(f)

它给出了一个长度为 2 的向量,因为 f 中缺少一些变量。当函数中缺少变量时,是否可以有一个长度为 5 和 0 的向量?

就像告诉 gradient 哪些是符号变量一样简单:

gradient(f,x)

ans =

 (x4/x1 - 1)^2/2 - 1/(2*x1) - (x4*(x4/x1 - 1))/x1
                                                0
                                                0
                                        x4/x1 - 1
                                                0