How to use str2func to replace eval command?
Mostrar comentarios más antiguos
I want user to enter a parametrized function in terms of t. Is there a way that I can have an input function instead of using '' and eval?
t = linspace(0.001,2,1000);
T = t;
x_e = 't.^3';
y_e = 'exp(t)';
z_e = 'cos(10*t)';
x = eval(x_e);
y = eval(y_e);
z = eval(z_e);
Respuesta aceptada
Más respuestas (1)
Andrei Bobrov
el 4 de Dic. de 2013
t = linspace(0.001,2,1000);
x_e = 't^3';
y_e = 'exp(t)';
z_e = 'cos(10*t)';
funs = arrayfun(@matlabFunction,sym({x_e,y_e,z_e}),'un',0);
rez = cellfun(@(q)q(t),funs,'un',0);
[x,y,z] = rez{:};
2 comentarios
Walter Roberson
el 4 de Dic. de 2013
Editada: Walter Roberson
el 4 de Dic. de 2013
Notice here that Andrei had to change
x_e = 't.^3';
to
x_e = 't^3';
This is because sym() interprets strings as being in MuPAD language, which is slightly different than MATLAB itself. str2func() uses MATLAB language. matlabFunction() knows to convert MuPAD symbols into MATLAB language.
Matthew
el 4 de Dic. de 2013
Categorías
Más información sobre Functional Programming 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!