在Matlab中,我们经常遇到需要将一些中间数据或者最终结果保存为文本形式(*.txt);其中提供了多种保存数据的语句,应该如何选择喃?在此,小弟在使用了fprintf、save、dlmwrite的基础上,对这三种方法进行了一个比较:
fprintf(fid, format, A, ...),将数据A以format表示的格式写入fid(文件)中,fid由fopen函数返回得到。
实例1:
x = 0:.1:1; A = [x; exp(x)]; fid = fopen('exp.txt', 'wt'); fprintf(fid, '%6.2f %12.8f\n', A); fclose(fid) save filename.txt A -format,将数据A以format表示的格式写入filename文本文件中。
实例2:
x = 0:.1:1; A = [x; exp(x)]; save data.txt A -ASCII dlmwrite('filename.txt', A, 'D', R, C),从矩阵A的第R行、第C列开始,使用分隔符D分割数据(“\t”表示tab分割,“,”为默认分割符),存储到filename文本文件中。
实例3:
x = 0:.1:1; A = [x; exp(x)]; dlmwrite(‘data.txt', A, 'delimiter', '\t', 'precision', 6);
使用时,save保存的数据是以科学计数法的方式存储的;fprintf和dlmwrite则是可以选择存储数据的方式,fprintf的格式设置跟C语言中的用法一致,dlmwrite可以设置有效位位数,比如上面实例中6表示有效位位数是6位,dlmwrite中对数据中的小数就采用浮点数存储,整数就采用整型存储形式。
在使用时,可根据自己实际情况的需要选择适合的一种。个人觉得matlab本身的这种以科学计数法来表示数据,有时不方便于查看。还有一点就是fprintf是按照矩阵列存储。