How to use str2func to replace eval command?
古いコメントを表示
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);
採用された回答
その他の回答 (1 件)
Andrei Bobrov
2013 年 12 月 4 日
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 件のコメント
Walter Roberson
2013 年 12 月 4 日
編集済み: Walter Roberson
2013 年 12 月 4 日
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
2013 年 12 月 4 日
カテゴリ
ヘルプ センター および File Exchange で Functional Programming についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!