我想读取一个大约2GB的大文本文件并对该数据执行一系列操作。下面的方法在Matlab中使用RAM不足读大文本文件
tic
fid=fopen(strcat(Name,'.dat'));
C=textscan(fid, '%d%d%f%f%f%d');
fclose(fid);
%Extract cell values
y=C{1}(1:Subsampling:end)/Subsampling;
x=C{2}(1:Subsampling:end)/Subsampling;
%...
Reflectanse=C{6}(1:Subsampling:end);
Overlap=round(Overlap/Subsampling);
未能立刻与我的内存使用量的奇峰阅读C(C=textscan(fid, '%d%d%f%f%f%d');
)后: 什么是导入此大小的文件的最好方法?有没有办法使用textscan()
来读取文本文件的各个部分,还是有其他更适合此任务的功能?
编辑:在textscan每列包含3D点数的信息字段信息:
width hieght X Y Z Grayscale
345 453 3.422 53.435 0.234 200
346 453 3.545 52.345 0.239 200
... % and so on for ~40 millon points
您可以一次读取并处理一行数据吗? – Ayb4btu 2014-11-22 01:33:48
我可以在当时处理它一行,但我不知道如何使用textscan()来读取单个行/列 – McMa 2014-11-24 09:11:12
您可以发布您的文本文件的几行,所以我更好地了解textscan应该如何操作。 – Ayb4btu 2014-11-24 10:20:49