将输出保存到文本文件而不覆盖&在矩阵中打印N个条目[matlab]

时间:2012-04-07 12:22:27

标签: matlab save

我想将我的函数结果保存在文本文件中。可以在malab中使用以下方法完成:

  1. 使用Printf

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

          save('testdata.txt', 'v', '-ascii');
    
  3. 但问题是使用两种方法,如果重复该功能,文件正在覆盖如何修复? 我需要10次运行的所有输出

    以下是一些例子: A%使用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%使用保存

           >> 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个条目,有办法正确显示它们吗?

2 个答案:

答案 0 :(得分:2)

打开文件时,请使用

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

用'a'代替'w'。这将附加到该文件。请参阅:fopen

答案 1 :(得分: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