Using a string as a command?

조회 수: 48 (최근 30일)
Kavan
Kavan 2013년 3월 7일
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'.

답변 (3개)

Jing
Jing 2013년 3월 7일
You can do that by using 'eval'. When y is the string, try the following command.
yy=eval(y);
  댓글 수: 2
Walter Roberson
Walter Roberson 2013년 3월 7일
This is not recommended.
Jing
Jing 2013년 3월 8일
Why not?

댓글을 달려면 로그인하십시오.


Andrei Bobrov
Andrei Bobrov 2013년 3월 7일
편집: Andrei Bobrov 2013년 3월 7일
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);

Walter Roberson
Walter Roberson 2013년 3월 7일
f = str2func( ['@(x) ' TheString] );
yy = f(x);

카테고리

Help CenterFile Exchange에서 Shifting and Sorting Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by