dlmwrite追加到最后

时间:2013-02-14 17:34:49

标签: matlab

我在文本文件中写了几行,其中有一个矩阵。我决定使用fprintf作为普通文本消息,并使用dlmwrite将矩阵写入文件。但是,此操作在while循环中完成。这是大纲:

 k=0;

 while (k<10):

     fprintf(file,'%s', 'Hello');

     dlmwrite(file,M ,'-append', 'newline', 'pc');

     fprintf(file, '%s' , 'Goodbye');

     k= K+1;

然而,当我打开文件时,所有矩阵都附加到文本文件的最末端,而不是每个都在hello和goodbye之间。有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:4)

使用它:

k=0;

file = fopen('exp.txt','a');
 while (k<10)

     fprintf(file,'%s', 'Hello');

     dlmwrite('exp.txt',A ,'-append', 'roffset', 1, 'delimiter', ' ')

     fprintf(file, '%s\n' , 'Goodbye');

     k= k+1;
 end

答案 1 :(得分:3)

它可能与-append选项有关,根据帮助将结果附加到文件的末尾。

您使用fprintfdlmwrite两个函数访问同一个文件。

这可能效率不高,但在每次fprintf写入后关闭文件都可以正常工作:

clear all
close all

file_name = 'aa.txt';
file = fopen(file_name, 'w');
fclose(file);
file = fopen(file_name, 'a');
M = randn(5);

for kk = 1:10
    file = fopen(file_name, 'a');
    fprintf(file, 'Hi\n');
    fclose(file);
    dlmwrite(file_name, M ,'-append', 'newline', 'pc');
    file = fopen(file_name, 'a');
    fprintf(file, 'Bye\n');
end

如果没有,只需尝试使用您创建的其他功能打印矩阵,并使用与fprintf相同的文件处理程序。