2

関数の結果をテキスト ファイルに保存したいと考えています。これは、malab で次の方法を使用して実行できます。

  1. Printf の使用

          fileID = fopen('testdata.txt', 'w');
          fprintf(fileID, '%d %d %d\n', v);
          fclose(fileID);
    
  2. 保存の使用

          save('testdata.txt', 'v', '-ascii');
    

しかし、問題は、関数が繰り返されるとファイルが上書きされるという2つの方法を使用していることです。それを修正する方法は? 10回の実行からのすべての出力が必要です。

以下にいくつかの例を示します。 A% USING PRINTF v = [3 6 9];

    >> fileID = fopen('testdata.txt', 'w');
       fprintf(fileID, '%d %d %d\n', v);
       fclose(fileID);

ファイルの出力 (1 行目): 3 6 9

       >> v= [1 2 3];
       >> fileID = fopen('testdata.txt', 'w');
          fprintf(fileID, '%d %d %d\n', v);
          fclose(fileID);

ファイルの出力 (1 行目) : 1 2 3 (ファイルは上書きされます)

B %USING SAVE

       >> save('testdata.txt', 'v', '-ascii');

ファイルの出力 (1 行目): 1.0000000e+000 2.0000000e+000 3.0000000e+000

       >> v = [3 6 9];
       >> save('testdata.txt', 'v', '-ascii');

ファイルの出力 (1 行目): 3.0000000e+000 6.0000000e+000 9.0000000e+000


                            **Printing N values**

上記の例の V は 3 つのエントリです。N 個のエントリが存在する場合、それらを正しく表示する方法はありますか?

4

2 に答える 2

2

ファイルを開くときは、

fileID = fopen('testdata.txt', 'a');

「w」の代わりに「a」を使用します。これはそのファイルに追加されます。参照: fopen

于 2012-04-07T12:48:49.597 に答える
0

コードは次のとおりです。

                for i= 1:4;
                fileID = fopen('testdata.txt', 'at');
                fprintf(fileID, 'this is answer %d\n',i);
                fprintf(fileID, '%5.3e\n', v{i});
                fclose(fileID);
                end

メモ帳で答える:

       this is answer 1
       1.000e+000
       1.000e+000
       1.000e+000
       1.000e+000
       1.000e+000
       1.000e+000
       0.000e+000
       1.000e+000
       1.000e+000
       1.000e+000
       this is answer 2
       1.000e+000
       0.000e+000
       1.000e+000
       1.000e+000
       1.000e+000
       1.000e+000
       1.000e+000
       1.000e+000
       1.000e+000
       1.000e+000
       this is answer 3
       1.000e+000
       1.000e+000
       1.000e+000
       1.000e+000
       1.000e+000
       1.000e+000
       1.000e+000
       0.000e+000
       1.000e+000
       1.000e+000
       this is answer 4
       1.000e+000
       1.000e+000
       1.000e+000
       1.000e+000
       0.000e+000
       1.000e+000
       1.000e+000
       1.000e+000
       1.000e+000
       1.000e+000
于 2012-04-08T11:31:09.820 に答える