Substituting many symbolic variables with one vector to create function handle
Mostrar comentarios más antiguos
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
Más respuestas (1)
Walter Roberson
el 13 de Abr. de 2013
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), ....)
Categorías
Más información sobre Assumptions en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!