Converts a string into a function to plot

7 visualizaciones (últimos 30 días)
iseinas
iseinas el 4 de Sept. de 2020
Comentada: iseinas el 4 de Sept. de 2020
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 comentarios
Stephen23
Stephen23 el 4 de Sept. de 2020
Editada: Stephen23 el 4 de Sept. de 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.
iseinas
iseinas el 4 de Sept. de 2020
Sorry, it seems like I missed out on '' when I changed my code to make it simple here.

Iniciar sesión para comentar.

Respuesta aceptada

Stephen23
Stephen23 el 4 de Sept. de 2020
Editada: Stephen23 el 4 de Sept. de 2020
>> equ = 'sin(x)';
>> fun = str2func(sprintf('@(x)%s',equ));
>> fun(pi/2)
ans =
1
  6 comentarios
Stephen23
Stephen23 el 4 de Sept. de 2020
Editada: Stephen23 el 4 de Sept. de 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)
iseinas
iseinas el 4 de Sept. de 2020
I found out I can't directly plot fun, but gotta go through fun(x). Thanks a lot! You really helped me a lot there :)

Iniciar sesión para comentar.

Más respuestas (1)

KSSV
KSSV el 4 de Sept. de 2020
equ=sin(x);
f= @(x) equ;
x = linspace(0,2*pi) ;
plot(x,f(x))
  1 comentario
iseinas
iseinas el 4 de Sept. de 2020
Forgot to include that sin(x) is a string-
equ = 'sin(x)'

Iniciar sesión para comentar.

Categorías

Más información sobre Title en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by