How to convert a string to a symbol ?

Hello guys ,
I just wanted to convert this string :
'x & 1'
to a symbol ,i tried to use sym() function ,which seemed not to work ,obviously ,it doesn't seem to symbolize some characters ,like ampersands ,asterisks ,arithmetic operators , etc...
So any help how can i convert the above string to a symbol ?!
Much Regards

 Réponse acceptée

Ahmed A. Selman
Ahmed A. Selman le 26 Mar 2013
@Jacky (the actual expression is : (x>=1 & x<9)). This is the question!
This is a logical comparison statement. The meaning of (&) - Logical AND in Matlab in comparisons is
&&
So try this
if (x>=1 && x<9)
y=2*x+12;% here is what to do when the condition is fulfilled
else
y=0;% here is what to do when the condition is not fulfilled
end
There is a (symbolic) programming tools in Matlab, initialized with
sym
or
syms
e.g.,
syms x y z
whos
Name Size Bytes Class Attributes
x 1x1 58 sym
y 1x1 58 sym
z 1x1 58 sym
the same output we''ll get when using
syms ('x', 'y','z')
and x, y, z (or any other argument) must be variables name. Variables names must not contain special characters such as '&'.
After we defined the syms above, we can try this:
f=(cos(x)+sin(y))/z
fPrime=diff(f,x)
fPrime =
-sin(x)/z
where fPrime is the differentiation of f with respect to the variable x... and so on.
Converting (string to symbol in Matlab) is still not clear to me.
Regards :)

1 commentaire

Walter Roberson
Walter Roberson le 26 Mar 2013
Both & and && are logical comparisons in MATLAB. && is "shortcut and" which only works on scalars and does not evaluate the right-hand side if it already knows the answer from the left-hand side.
The difficulty being had is what I described above: the MuPAD, the symbolic language, does not use & or && at all: it uses "and"

Connectez-vous pour commenter.

Plus de réponses (3)

Ahmed A. Selman
Ahmed A. Selman le 25 Mar 2013
sym and syms are used to declare symbolic variables, see:
Please specify your idea about (converting a string to symbol in Matlab), do you mean (string to a variable), as in
x=1
y=-90
if so, Matlab variables must not contain special characters as (~!@#$%^&*)..etc. Or you mean text properties in figures? Then Refer to http://www.mathworks.com/help/matlab/ref/text_props.html.
If it was translating a string into an expression, see the functions
regexptranslate
regexp

5 commentaires

Jacky
Jacky le 25 Mar 2013
Sorry for not being specific in my question .
I mean if i have a string which contains one or more special character ,and i need to convert this string into a symbol ,what should i use in such case ?!
Walter Roberson
Walter Roberson le 25 Mar 2013
What result are you aiming for, and what are you getting instead?
Jacky
Jacky le 25 Mar 2013
What i want to do is ,simply i want to take from user a string containing a function to plot and store it in a variable ,and in another variable storing the limits of the function ( for example 1<x<=5 ) ,of course this won't be done on a single function ,instead it will be like constructing a piecewise function that plots multiple functions each with its limits . So i need to take the limits from user and symbolize it .
When you use
sym('x & 1')
what result are you seeing?
Question: would x&1 be the formula or the limit? Were you meaning
sym('x < 1')
?
Jacky
Jacky le 25 Mar 2013
sym('x&1') it doesn't accept the character '&' .
x & 1 is something like the limits i want to do ,the actual expression is : (x>=1 & x<9)

Connectez-vous pour commenter.

Jacky
Jacky le 28 Mar 2013

1 vote

Perfect ,found what i was looking for ,thx alot guys for the help :)

Community Treasure Hunt

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

Start Hunting!

Translated by