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