评价函数

问题描述:

我想学习MATLAB自己。在这本书中,我使用有涉及eval脚本例子如下:评价函数

t = [0:0.1:2] 
for k = 1:10 
    outputfile = ['result',int2str(k)]; 
    theta = k*pi*t; 
    x = sin(theta); 
    y = cos(theta); 
    z = x.*y.^2; 
    eval(['save ',outputfile,' x y z']) 
end 

我的问题是 - 为什么它需要包括' x y z'eval命令的结尾?我试图运行这个脚本而不包括这个,并且,据我所知,脚本看起来行为完全一样(至少我找不到任何区别)。

如果有人能向我解释为什么包括这个,我将不胜感激!

+0

这是一个可怕的例子!人们不应该被教导使用'eval',当然当没有完美的'eval'-free语法可用的时候并不是这样。 – Jonas 2012-04-14 22:09:46

+0

是的,我想知道“eval”自己的目的。为什么不使用“保存”?我认为这个例子的目的只是为了展示如何使用“eval”,但并不意味着这本书实际上鼓励在保存脚本/函数时使用它。 – Kristian 2012-04-15 10:35:37

'x y zsave函数/命令的参数。他们告诉save哪些变量要保存到文件outputfile。有关save命令的更多信息,请参见MATLAB documentation

注意:根据MATLAB文档,可以用函数save的函数替换该行。例如,你可以只使用

save(outputfile, 'x', 'y', 'z') 
+0

非常感谢!评价它。 – Kristian 2012-04-14 21:01:15

如果没有x y z,您的输出文件(.mat文件)将包含工作区中的所有变量(即x y z theta t k ...)。如果您只想存储x y z,则请在致电save时指定它。

+0

非常感谢!感谢帮助。 – Kristian 2012-04-14 21:01:47

之所以使用功能“EVAL”是,通过使用eval你可以保存命名为result_1 result_2 ......在一次名单的结果。 即,将数据保存到增量编号的ASCII文件。 您可以在此网站开通找到更多的细节:

https://www3.nd.edu/~dtl/cheg258/notes/doc/tec1.3.html

注意:有一个在EVAL一个空格([,OUTPUTFILE, 'X Y Z' '保存'])字母x前。