这是一个普遍的编程问题,但对于Matlab可能有特殊考虑。
我将要导入非常大的数据文件。把整个文件导入内存然后将其分成子矩阵更好/更快/更有效呢?还是只是将每个n列导入新矩阵中?
我猜把它全部加载到缓存中然后再处理会更快,但这只是一个不专业的猜测。
这是一个普遍的编程问题,但对于Matlab可能有特殊考虑。
我将要导入非常大的数据文件。把整个文件导入内存然后将其分成子矩阵更好/更快/更有效呢?还是只是将每个n列导入新矩阵中?
我猜把它全部加载到缓存中然后再处理会更快,但这只是一个不专业的猜测。
根据我的经验,最好的方法是使用csvread(它使用dlmread,而dlmread使用textscan - 因此时间惩罚不显着)来解析一次。当然,前提是一个非常大的文件不会比你拥有的免费RAM更大。如果一个非常大的文件大于RAM(例如,我刚刚不得不解析一个31GB的文件),那么我会使用fopen,逐行读取(或块,块等),并将这些写入可写的mat文件中。这样,在理论上,您可以编写受文件系统限制的巨大文件。
resultingMatrix = data(:,1:n) .* data(:,n+1:2*n)
,但这会使代码对其他人来说难以理解)。 - msmf14