Substituting many symbolic variables with one vector to create function handle

Hello,
I am generating a symbolic function (which is very long) through multiple steps. To make my question easy, let's say i have:
syms B C
sym A(B,C)
A = B + C
for further computation I need to transform the symbolic function into a function handle of the form:
f = @(x) x(1)+x(2)
But I generally fail to do this. I tried different methods and I got as far as f = @(x1,x2) x1+x2
which is of course different.
How may I accomplish this task?
Thank you

 Respuesta aceptada

syms B C
f = matlabFunction(B + C,'vars',{[B C]});

Más respuestas (1)

Use an auxiliary function
function r = spreadargs(x, fhandle)
t = num2cell(x);
r = fhandle(t{:});
end
then when
f = matlabFunction(EXPRESSION, 'vars', {ListOfVariables});
invoke (e.g.)
fmincon( @(x) spreadargs(x, f), ....)

Preguntada:

el 13 de Abr. de 2013

Comentada:

el 12 de Oct. de 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by