【发布时间】:2014-04-01 20:28:13
【问题描述】:
我有一个 CSV 文件,我想将其作为向量导入 MATLAB,但是当我使用 MATLAB 的 importdata 时。它说:
Buffer overflow (bufsize = 1000005) while reading string from file
因为我的文件里有超过1000005个数字,如何增加bufsize以便导入这个文件?
【问题讨论】:
我有一个 CSV 文件,我想将其作为向量导入 MATLAB,但是当我使用 MATLAB 的 importdata 时。它说:
Buffer overflow (bufsize = 1000005) while reading string from file
因为我的文件里有超过1000005个数字,如何增加bufsize以便导入这个文件?
【问题讨论】:
查看 importdata.m (R2014a) 的第 315 行:
%Arbitrarily set the maximum size for a line, used to calculate this but it
%was slow, so we went with all in one line or the old maximum it would
%check.
bufsize = min(1000000, max(numel(fileString),100)) + 5;
这显然是 1000005 的来源。
我会说只用大于当前 1,000,000 的值编辑这一行。
【讨论】:
您可以设置InputBufferSize 来增加缓冲区大小。
或者,要导入大型数据文件,请考虑分段读取文件,这样可以减少所需的内存量。查看here 的示例。
【讨论】: