从大型 xlsx 文件导入数据

Importdata from large xlsx file

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

当我尝试使用时:

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

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

计算用了一个多小时。

我能做些什么来加快这个过程吗?

我也尝试过使用 xlsread,但它也没有用。

谢谢。

最快的方法是:

  • 使用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 并再次打开它(对数组内存进行碎片整理的最佳方法);
  • 增加系统虚拟内存的大小;
  • 为您的机器添加更多 RAM。