use of eval

2 次查看(过去 30 天)
Tor Fredrik Hove
Tor Fredrik Hove 2011-10-21
I am trying to use evalfunction but are having a hard time:
>> plots=[3 4 6 1]
plots =
3 4 6 1
>> whatplot=input('type type of graph: ','s')
type type of graph: bar
whatplot =
bar
>> eval(whatplot(plots))
??? Index exceeds matrix dimensions.
>>
why wont it evaluate it to a graph with bars?

采纳的回答

Wayne King
Wayne King 2011-10-21
Your call to input() returns the string bar in whatplot
but whatplot(plots) is not a string.
eval([whatplot '(plots)'])
  4 个评论
Tor Fredrik Hove
Tor Fredrik Hove 2011-10-21
thanks! I guess I am also a bit confussed about my book. It says:
>>x=[9 7 10 9];
whatplot=input('What type of plot?: ','s');
What type of plot?: bar
>>eval([whatplot '(x)'])
>>title(whatplot)
>>xlabel('Student#')
>>ylabel('Quiz Grade')
I guess the three last lines are just for naming graph and coordinates but thoose before don't return any graph for me
Jan
Jan 2011-10-22
Bad book. Evil EVAL.

请先登录,再进行评论。

更多回答(2 个)

Patrick Kalita
Patrick Kalita 2011-10-21
I think feval would be a better option here. It is a safer than eval, and it easily accommodates passing input arguments:
feval( whatplot, plots )
  3 个评论
Jan
Jan 2011-10-21
@Tor: Avoid EVAL. As you see, it causes troubles.
Tor Fredrik Hove
Tor Fredrik Hove 2011-10-21
it is part of curriculum unfortunately:) If not I would have:)

请先登录,再进行评论。


Wayne King
Wayne King 2011-10-21
plots=[3 4 6 1];
whatplot = 'bar';
eval([whatplot '(plots)'])
  1 个评论
Wayne King
Wayne King 2011-10-21
also, see the comments by other posters above.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Interactive Control and Callbacks 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by