Filter löschen
Filter löschen

How to calculate the syms with variable has the same name?

2 Ansichten (letzte 30 Tage)
wei zhang
wei zhang am 10 Jun. 2020
Beantwortet: Stephen23 am 10 Jun. 2020
Hello,
I am writing a function with an augument to receive some expression, like ' a>0', ' b<0' and 'a>0&b<0'. There are variables named as "a" and "b" in the function's workspace. The augument to receive the expression is char class. How could I to calculate this expression in the function? Must I use "eval"? I have got a suggestion that I should not use "eval". I thought I could turn the char expression to syms with "str2sym". What should I do next? Thank you.
function myfun(exp,a,b)
% e.g. exp= 'a>0';
% 1st way : eval(exp)
% 2nd way(I prefer):
% exp1 = str2sym(exp);
% I don't know what to do next
end

Antworten (1)

Stephen23
Stephen23 am 10 Jun. 2020
function out = myfun(exp,a,b)
fun = str2func(sprintf('@(a,b)%s;',exp));
out = fun(a,b);
end
Tested:
>> myfun('a>0',3,2)
ans = 1
>> myfun('a>0&&b<0',3,2)
ans = 0

Produkte


Version

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by