Substituting many symbolic variables with one vector to create function handle
Show older comments
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
Accepted Answer
More Answers (1)
Walter Roberson
on 13 Apr 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), ....)
Categories
Find more on Symbolic Math Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!