2012-04-14 21 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 

私の質問です - なぜそれがevalコマンドの最後に' x y z'を含める必要がありますか?私はこれを含めずにこのスクリプトを実行しようとしましたが、わかる限り、スクリプトはまったく同じように見えます(少なくとも私は違いは見つかりません)。

これがなぜ私に説明できるのであれば、私は非常に感謝しています!

+0

これは恐ろしい例です!人々は 'eval'を使うよう教えるべきではありません。もちろん、' eval'のない完全な構文があるときはそうではありません。 – Jonas

+0

はい、私は自分自身の "eval"の目的について疑問を抱いていました。単に「保存」を使用しないのはなぜですか?私は、この例の目的は "eval"の使用方法を示すことにすぎないと思いますが、スクリプト/関数を保存する際に実際に使用することを奨励するものではありません。 – Kristian

答えて

4

'x y zは、関数/コマンドsaveの引数です。彼らはファイルoutputfileにどの変数を保存するかをsaveに伝えています。 saveコマンドの詳細については、MATLAB documentationを参照してください。

注:MATLABのドキュメントに従って、その行をsave関数の呼び出しで置き換えることができます。たとえば、あなただけの機能を使用して、なぜ

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

ありがとう!それを理解する。 – Kristian

2

x y zを指定しないと、出力ファイル(.matファイル)にはワークスペース内のすべての変数(つまりx y z theta t k ...)が含まれます。 x y zのみ保存する場合は、saveを呼び出すときに指定します。

+0

ありがとう!ヘルプをよろしくお願いいたします。 – Kristian

0

理由を使用「evalの」がevalを使って、一度にresult_1 result_2 ...という名前のリストの結果を保存することができるということです。可能性 つまり、番号の付いたASCIIファイルにデータを保存します。あなたはこのwebsitで詳細を見つけることができ :

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

お知らせ:evalの中の空白は文字xの前に([ 'のxのy Z'、OUTPUTFILE、 '保存'])があります。

関連する問題