Converts a string into a function to plot
6 views (last 30 days)
Show older comments
So I have mathematic functions like sin(x), cos(x) etc. in a string format that I want to convert into a function so I would be able to plot it.
equ='sin(x)';
f= @(x) equ;
plot(x,f)
error message:
Error using plot
Invalid data argument.
2 Comments
Stephen23
on 4 Sep 2020
Edited: Stephen23
on 4 Sep 2020
"So I have mathematic functions like sin(x), cos(x) etc. in a string format that I want to convert into a function..."
Your example contains no strings or character arrays at all:
equ=sin(x);
f= @(x) equ;
This makes your question difficult to interpret. Do you actually have a character vector? E.g.:
str = 'sin';
Please show the actual definition of your input data.
Accepted Answer
Stephen23
on 4 Sep 2020
Edited: Stephen23
on 4 Sep 2020
>> equ = 'sin(x)';
>> fun = str2func(sprintf('@(x)%s',equ));
>> fun(pi/2)
ans =
1
6 Comments
Stephen23
on 4 Sep 2020
Edited: Stephen23
on 4 Sep 2020
"it does work when you only use it like you did fun(pi/2) but it somehow doesn't let me plot it."
I have no problems plotting it. As you did not show your code I have no way to debug what you tried.
"...but still cannot plot the graph. I still get the same error when try to plot it."
Not only is your code a secret, so is the error message that you get. No information -> no debugging help.
Well, it works for me. Lets try it together using two different plotting commands:
>> equ = 'sin(x)';
>> fun = str2func(sprintf('@(x)%s',equ));
>> X = linspace(-2*pi,2*pi,101);
>> Y = fun(X);
>> plot(X,Y)

>> ezplot(fun)

More Answers (1)
See Also
Categories
Find more on Title in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!