前言
在工作中,常常需要将数据写入文件,或者从文件中读取数据。在matlab中,实现文件读写操作的函数有许多。比如:
fopen() fscanf() fprintf() load() dlmwrite() save() fclose()
等等。针对需求选取恰当的函数,将会极大编程效率。
实例
将矩阵写入txt文件
- save()
适用范围:将工作空间的变量保存到文件中。
save(filename)
save(filename,variables)
save(filename,variables,fmt)
save(filename,variables,version)
save(filename,variables,'-append')
% 实例:将矩阵(m*n)写入txt文件
%fid=fopen('d.txt','w');
d=reshape(1:1:12,[4,3])';
path='mydata003.txt';
save(path,'d','-ascii');
- dlmwrite()
适用范围:将矩阵直接写入文件中。推荐!
dlmwrite(filename,M)example
dlmwrite(filename,M,'-append')
dlmwrite(filename,M,delimiter)
dlmwrite(filename,M,delimiter,row,col)
% 实例:将矩阵(m*n)写入txt文件
%fid=fopen('d.txt','w');
d=reshape(1:1:12,[4,3])';
path='mydata003.txt';
dlmwrite('mydata002.txt',d,' ');
读取文件中的矩阵
load()
适用范围:将数据从文件写入工作空间中。
load(filename)example
load(filename,variables)example
load(filename,'-ascii')example
load(filename,'-mat')
load(filename,'-mat',variables)
path='mydata003.txt';
data=load(path);
关于fscanf()
适用范围:从文本文件中读取输出。相比上面的save()和load(),scanf()能对数据进行更精确和多样的操作。
A = fscanf(fileID,formatSpec)
A = fscanf(fileID,formatSpec,sizeA)
%需求:将txt文件(m*n数据,分隔符为space)中的数据存入一个矩阵data
%我也是逗,直接load(path)不就解决了
%所以明确试用范围
function data=learn_fscanf(path)
[fid,message]=fopen(path,'r');
if fid==-1
disp(message);
end
data=fscanf(fid,'%f',[4,3]);
data=data';
fclose(fid);
end
关于fprintf()
适用范围:将数据写入文本文件。
fprintf(fileID,formatSpec,A1,...,An)example
fprintf(formatSpec,A1,...,An