从大型xlsx文件导入数据

时间:2015-05-19 10:20:12

标签: performance matlab import xlsx

我有xlsx文件,其中包含750,000x33个单元格。

当我尝试使用时:

[FileName PathName] = uigetfile('*.xlsx','XLSX Files');

fid = fopen(FileName);
T=importdata(FileName);

计算花了一个多小时。

我有什么办法可以加快这个过程吗?

我也试过使用xlsread,但它也不起作用。

  • 我已经设法在几分钟内将一个550,000x33文件导入数据,但没有看到它花费的时间会增长那么多的原因。

谢谢。

1 个答案:

答案 0 :(得分:0)

最快的方法是:

  • 使用xlsread函数读取数据;
  • 还安装了MS Excel(不是必需的,但它有助于速度和数据加载选项)。

所以,试试这个:

[file_name, path_name] = uigetfile('*.xlsx','XLSX Files');
[num, txt, ~] = xlsread(fullfile(path_name, file_name));

在此之后,您将拥有可以在数字矩阵num中转换为数字的任何内容,以及其他所有内容作为字符串单元格数组txt。检查函数的帮助以进一步调整数据加载。

稍后编辑:如果这仍然很慢,很可能是因为xlsread在基本模式下在内存中增加数组,并且内存碎片化或太小。选项(它们不是互斥的):

  • 将文件转换为.CSV,然后使用textscan加载数据;
  • 关闭MATLAB并在读取文件之前再次打开它(对阵列内存进行碎片整理的最佳方法);
  • 增加系统虚拟内存的大小;
  • 为您的计算机添加更多内存。