【matlab】在程序运行结果中保存数据到txt文档

来源:互联网 发布:信捷xc系列编程手册 编辑:程序博客网 时间:2024/05/20 21:22

文件写入方法

问题提出:现在要保存程序的输出结果,包括运行时间,运行结果和中间变量。其中运行时间和运行结果只是一个数字,中间变量结果时一个n*n的矩阵和一个2*n的矩阵。想把这些量保存在txt文件中。

 

save 函数

将工作空间中的变量写入文件,导出mat文件中。

 

1. 调用dlmwrite函数

dlmwrite(filename,M)

dlmwrite(filename,M,’D’)  D用来指定数据间分隔符。 ‘ ’表示空格。’\t’ 制表符

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') \t 制表符,有利于显示

dlmwrite('2.dat',A,' ') 将A中的数据存入2.dat中,并以空格作为分隔符。若没有文件1,则创建txt文件。

dlmwrite('2.txt',A,' ')

dlmwrite('2.txt',a,'-append') a中的数据接着存入2.txt中,若没有'-append'则将2.txt清空,再存入a

 

总结:可以用dlmwrite 将运行结果存入txt文件中。

dlmwrite('result.txt',obj,'\t');

dlmwrite('a.txt',a,'\t');

dlmwrite('time.txt',cpu_time,'\t');

 

2,调用 fprintf 函数写入数据

以上调用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');   %新建一个result的txt文件存放结果

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);

 

总结:可以存放在同一个文档中便于管理,但是不足之处在于当n的值变大的时候,a变量的写入书写有难度。

下一步是思考当程序运行比较多的时候,怎么批量读数据和写数据以及数据和excel的交互。

0 0