2012-04-14 89 views
1

我想學習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

回答

4

'x y zsave函數/命令的參數。他們告訴save哪些變量要保存到文件outputfile。有關save命令的更多信息,請參見MATLAB documentation

注意:根據MATLAB文檔,可以用函數save的函數替換該行。例如,你可以只使用

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

非常感謝!評價它。 – Kristian 2012-04-14 21:01:15

2

如果沒有x y z,您的輸出文件(.mat文件)將包含工作區中的所有變量(即x y z theta t k ...)。如果您只想存儲x y z,則請在致電save時指定它。

+0

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

0

之所以使用功能「EVAL」是,通過使用eval你可以保存命名爲result_1 result_2 ......在一次名單的結果。 即,將數據保存到增量編號的ASCII文件。 您可以在此網站開通找到更多的細節:

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

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