在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是按照矩阵列存储。