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 Assumptions 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!