matlab内存映射文件操作

日常我们使用matlab进行模型训练,每次训练需要加载的数据都是比较大,都是千万级别的数据,如果从txt或者csv中读取,需要很长时间,这样很影响读取数据的效率。matlab有自己的方式,将数据文件快速加载到内存中。

写文件:

file = fopen('E:\数据分析\login_00000.csv','r','n','utf-8');
data=textscan(file,'%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f','delimiter',',','EmptyValue',0,'EndOfLine','\n');
data_1 = cat(2,data{:,1:31});
fileID = fopen('login_00000.dat','w');
fwrite(fileID, data_1,'double');
fclose(fileID);
sz = size(data_1)
save login_00000.mat sz

读文件:

dir='login_00000'
load([dir,'.mat'])
m=memmapfile([dir,'.dat'],'Format',{'double' [sz(1) sz(2)] 'x'})
data=m.Data.x;

效率非常快,我们只需要第一次将我们的数据文件转为dat文件,后面每次通过memmapfile去操作文件都行,效率很高。

你可能感兴趣的:(matlab)