我正在尝试使用单个向量来评估MatlabFunction,这意味着该向量将为该MatlabFunction中的每个变量保存一个值。
举一个简单的例子,我可以这样定义一个MatlabFunction:
syms x [3 1];
f1 = matlabFunction((x1 + x2)*x3, 'var', sym2cell(x));
这定义了一个符号变量x
,该变量包含三个符号变量:x1 x2 x3
和一个MatlabFunction等于@(x1,x2,x3)x3.*(x1+x2)
我能够使用以下公式计算f1
在点a
上的梯度:
a = [1; 0; 0];
gradf = gradient(mf, x);
gradiant_of_a = double(subs(graf, x, a));
让我困扰的是,我无法对:p做同样的事情
f1_of_a = double(subs(f1, x, a));
我已经看到subs
在函数句柄上不起作用。但是它适用于符号对象,例如gradf
。
这个问题有解决方案吗?
我找到了与f1_of_a = f1(1, 0, 0);
搭配使用的答案,但这并不适合我,因为我使用的MatlabFunctions变量数量未知。 (x
和a
的大小可以是(1、3)或(1、10),并且仍然可以使用,例如,我不会在第二个中手动键入10个参数情况)
谢谢您的帮助!