从大型 xlsx 文件导入数据
Importdata from large xlsx file
我有一个包含 750,000x33 个单元格的 xlsx 文件。
当我尝试使用时:
[FileName PathName] = uigetfile('*.xlsx','XLSX Files');
fid = fopen(FileName);
T=importdata(FileName);
计算用了一个多小时。
我能做些什么来加快这个过程吗?
我也尝试过使用 xlsread,但它也没有用。
- 我之前在几分钟内成功地导入了一个 550,000x33 的文件,不知道为什么会花费那么多时间。
谢谢。
最快的方法是:
- 使用
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。
我有一个包含 750,000x33 个单元格的 xlsx 文件。
当我尝试使用时:
[FileName PathName] = uigetfile('*.xlsx','XLSX Files');
fid = fopen(FileName);
T=importdata(FileName);
计算用了一个多小时。
我能做些什么来加快这个过程吗?
我也尝试过使用 xlsread,但它也没有用。
- 我之前在几分钟内成功地导入了一个 550,000x33 的文件,不知道为什么会花费那么多时间。
谢谢。
最快的方法是:
- 使用
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。