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

Posted

技术标签:

【中文标题】将输出保存到文本文件而不覆盖和打印矩阵中的 N 个条目 [matlab]【英文标题】:save output to text file without overwriting & Printing N entries in a matrix [matlab] 【发布时间】:2012-04-07 12:22:27 【问题描述】:

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

    使用 Printf

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

    使用保存

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

但问题是使用两种方法,如果重复该功能,文件正在蜂鸣overwriten如何解决? 我需要 10 次运行的所有输出

这里有一些例子: A% 使用打印 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 个条目,确定有办法显示它们吗?

【问题讨论】:

【参考方案1】:

当你打开一个文件时,使用

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

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

【讨论】:

对于 v=[3 6 9] 和 v=[13 16 19] 这是输出:3 6 913 16 19。如何在下一行显示 v2?以这种方式读取913 而不是 9 13...【参考方案2】:

代码如下:

                for i= 1:4;
                fileID = fopen('testdata.txt', 'at');
                fprintf(fileID, 'this is answer %d\n',i);
                fprintf(fileID, '%5.3e\n', vi);
                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

【讨论】:

感谢@Richante,但如果我有 N 个条目并想在一行中显示它们,我必须写 '%5.3e, (Ntimes)\n' !!!!!!

以上是关于将输出保存到文本文件而不覆盖和打印矩阵中的 N 个条目 [matlab]的主要内容,如果未能解决你的问题,请参考以下文章

时间循环 - 将矢量数据存储在文件中而不覆盖

C# 将“X”次保存到一个 .txt 文件中而不覆盖最后一个字符串

将 nmap 输出发送到文件而不将其打印到标准输出

将文件追加到不覆盖的文本文件中

写入文本文件而不覆盖它

matlab 多个矩阵保存问题