我正在尝试使用matlab将矩阵之间的标头写入.txt文件。
示例代码:
filename = 'sampleXLS.dat';
datfile = fopen(filename,'w');
header = 'Header \n';
mat1 = [1,2,3;4,5,6];
mat2 = [7,8;9,10];
mat3 = [11;12;13];
mats = {mat1,mat2,mat3};
for iter = 1:length(mats)
data = mats{iter}
fprintf(datfile, header);
dlmwrite(filename, data,'-append','delimiter',' ','precision', '%f');
end
我想要
Header
1 2 3
4 5 6
Header
7 8
9 10
Header
11
12
13
我正在
Header
Header
Header
3
4 5 6
7 8
9 10
11
12
13
请注意缺少的1和2,当我在调试模式中逐步执行文件时,它会插入并用标题替换数字。
有没有办法告诉fprintf追加?
答案 0 :(得分:0)
打开文件句柄时,此句柄的状态包含当前位置。查看fopen(fileID)
了解详情。
您必须使用fseek(datfile, 0, 'eof');
将文件句柄设置为在文件末尾写入,否则您将继续写入之前停止的位置。
filename = 'sampleXLS.dat';
datfile = fopen(filename,'w');
header = 'Header \n';
mat1 = [1,2,3;4,5,6];
mat2 = [7,8;9,10];
mat3 = [11;12;13];
mats = {mat1,mat2,mat3};
for iter = 1:length(mats)
data = mats{iter};
fseek(datfile, 0, 'eof');
fprintf(datfile, header);
dlmwrite(filename, data,'-append','delimiter',' ','precision', '%f');
end
或者,您可以使用a
代替w
打开文件,而filename = 'sampleXLS.dat';
datfile = fopen(filename,'a');
header = 'Header \n';
mat1 = [1,2,3;4,5,6];
mat2 = [7,8;9,10];
mat3 = [11;12;13];
mats = {mat1,mat2,mat3};
for iter = 1:length(mats)
data = mats{iter};
fprintf(datfile, header);
dlmwrite(filename, data,'-append','delimiter',' ','precision', '%f');
end
只允许在最后添加。
{{1}}
答案 1 :(得分:0)