【matlab】在程序运行结果中保存数据到txt文档
(2018-03-30 08:56:18)分类: matlab |
文件写入方法
问题提出:现在要保存程序的输出结果,包括运行时间,运行结果和中间变量。其中运行时间和运行结果只是一个数字,中间变量结果时一个n*n的矩阵和一个2*n的矩阵。想把这些量保存在txt文件中。
save 函数
将工作空间中的变量写入文件,导出mat文件中。
dlmwrite(filename,M)
dlmwrite(filename,M,’D’)
dlmwrite(filename,M,’attrib1’,value1,’ attrib2’,value2,…………)
参数名(attribute) |
参数值(value) |
说明 |
delimiter |
单个字符 |
设定数据间分隔符 |
newline |
‘pc’ |
设定换行符为‘\r\n’ |
‘unix’ |
设定换行符为‘\n’ |
|
precision |
以%引导的精度控制符 |
指定有效位数 |
dlmwrite('1.txt',A,' ') 将A中的数据存入1.txt中,并以空格作为分隔符。若没有文件1,则创建txt文件。
dlmwrite('2.txt',A,'\t')
dlmwrite('2.dat',A,' ') 将A中的数据存入2.dat中,并以空格作为分隔符。若没有文件1,则创建txt文件。
dlmwrite('2.txt',A,' ')
dlmwrite('2.txt',a,'-append')
总结:可以用dlmwrite 将运行结果存入txt文件中。
dlmwrite('result.txt',obj,'\t');
dlmwrite('a.txt',a,'\t');
dlmwrite('time.txt',cpu_time,'\t');
以上调用dlmwrite函数虽然可以使用,但是不能将结果写入同一个文档中。尝试用fprintf函数实现写入同一个文档中的功能。
count= fprintf(fid,format,A,……) A存入fid
转换指示符用来控制符号表示法,对齐方式,有效位数,字段宽度和输出格式等。format字符串包括含不可打印的控制符,如换行或者制表符等。
1)控制标志(可选)“-”表示左对齐。
2)字段宽度(可选)
3)精度(可选)
4)转换符(必须) %-6.2f 表示以左对齐方式输出一个浮点数,宽度为6个字符,小数点后面有2个有效数字。
\f:进纸; \n:换行; \t:水平制表符;
注意:调用fprintf函数写入数据时,format参数指定的格式循环作用于列上,原始矩阵的列在文件中或屏幕上就变成了行。下次使用的时候要转置过来!
当n=9时,程序为:
fid=fopen('result.txt','at');
fprintf(fid,'% -f\n',cpu_time); %存储运行时间
fprintf(fid,'% -f\n',obj);
fprintf(fid,'%-1.0f %-1.0f %-1.0f %-1.0f%-1.0f %-1.0f % -1.0f % -1.0f % -1.0f\r',a);% 以%开始,-为控制符号,1为字符宽度,0为小数点后面的位数,f为转化符,\r为换行。
fclose(fid);