MATLAB:如何在文件的开头插入一行文本?

时间:2009-10-28 17:56:32

标签: matlab file-io text-files

我有一个充满ascii数据的文件。如何将字符串附加到文件的第一行?我找不到使用fopen的那种功能(它似乎只在最后附加而没有别的。)

3 个答案:

答案 0 :(得分:10)

以下是纯MATLAB解决方案:

% write first line
dlmwrite('output.txt', 'string 1st line', 'delimiter', '')
% append rest of file
dlmwrite('output.txt', fileread('input.txt'), '-append', 'delimiter', '')
% overwrite on original file
movefile('output.txt', 'input.txt')

答案 1 :(得分:4)

选项1:

我建议calling some system commands from within MATLAB。 Windows上的一种可能性是将新的文本行写入其自己的文件,然后使用DOS for commandconcatenate the two files。以下是MATLAB中调用的内容:

!for %f in ("file1.txt", "file2.txt") do type "%f" >> "new.txt"

我使用! (bang) operator从MATLAB中调用命令。上面的命令依次将“file1.txt”和“file2.txt”的内容传送到文件“new.txt”。请记住,您可能必须使用换行符结束第一个文件才能正确追加。

上述命令的另一种替代方法是:

!for %f in ("file2.txt") do type "%f" >> "file1.txt"

将“file2.txt”的内容附加到“file1.txt”,从而生成包含连接文本的“file1.txt”,而不是创建新文件。

如果您的文件名是字符串,则可以将该命令创建为字符串,并使用SYSTEM命令而不是!运算符。例如:

a = 'file1.txt';
b = 'file2.txt';
system(['for %f in ("' b '") do type "%f" >> "' a '"']);

选项2:

Amro's之外,仅有一个MATLAB解决方案是:

dlmwrite('file.txt',['first line' 13 10 fileread('file.txt')],'delimiter','');

这使用FILEREAD将文本文件内容读入字符串,连接要添加的新行(以及用于回车符和换行符/新行的ASCII codes),然后使用DLMWRITE覆盖原始文件。

我觉得选项#1可能比这个纯文本文件的纯MATLAB解决方案执行得更快,但我不确定。 ;)

答案 2 :(得分:0)

如何使用frewind(fid)函数将指针指向文件的开头?

我有类似的要求并尝试了frewind(),然后是必要的fprintf()声明。

但是,警告:它将覆盖第1行中的任何一行。因为在我的情况下,我是写文件的人,我在文件的开头放了一个虚拟数据,然后在结束时,让它在上面指定的操作之后被覆盖。

顺便说一下,即使我遇到这个解决方案的一个问题,根据虚拟数据和实际数据的长度(/大小),程序要么将部分虚拟数据留在同一行,要么带上我的新数据到第二行.. 在这方面的任何提示都非常感谢。

相关问题