How to use str2func to replace eval command?
Afficher commentaires plus anciens
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);
Réponse acceptée
Plus de réponses (1)
Andrei Bobrov
le 4 Déc 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 commentaires
Walter Roberson
le 4 Déc 2013
Modifié(e) : Walter Roberson
le 4 Déc 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
le 4 Déc 2013
Catégories
En savoir plus sur Functional Programming dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!