Matlab-使用单个向量评估多输入匿名函数

时间:2019-12-18 17:03:54

标签: matlab symbolic-math

我正在尝试使用单个向量来评估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变量数量未知。 (xa的大小可以是(1、3)或(1、10),并且仍然可以使用,例如,我不会在第二个中手动键入10个参数情况)

谢谢您的帮助!

0 个答案:

没有答案