MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by Kavan on 7 Mar 2013

Let's say I have x=linspace(0,10), and y='x.^2', as a string. How do I tell MatLab to apply y to x? What I am asking is, in the command window, I can type yy=x.^2 to get the desired result. But, I am writing a script and I need to be able to take the string 'x.^2' and tell MatLab yy=x.^2, so I get a yy double that I can plot in the linspace I created. However, simply typing yy=y just creates another string yy='x.^2'.

*No products are associated with this question.*

Answer by Jing on 7 Mar 2013

You can do that by using 'eval'. When y is the string, try the following command.

yy=eval(y);

Answer by Andrei Bobrov on 7 Mar 2013

Edited by Andrei Bobrov on 7 Mar 2013

eg:

str = 'x.^2'; yy = str2func(['@(',char(symvar(str)),')',str]);

use

x = 0:10; out = yy(x);

ADD

str = 'x^2 - y^2'

k = strcat(symvar(str),','); k = [k{:}]; yy = str2func(['@(',k(1:end-1),')',vectorize(str)]);

use

x = 1:10; y = linspace(5,20,10);

out = yy(x,y);

## 0 Comments