提高从 excel 读取数据到 matlab 的速度

Improve speed of reading data from excel to matlab

我(当时)在 Excel 中有五个列,我需要读取这些列并将其存储到 Matlab 变量中。我目前使用以下代码:

TE=xlsread('../input/input.xlsx','A:A');
AF=xlsread('../input/input.xlsx','B:B');
TAHE=xlsread('../input/input.xlsx','C:C');
HD=xlsread('../input/input.xlsx','D:D');
TCW=xlsread('../input/input.xlsx','E:E');

当 input.xlsx 包含 14 行时,这需要 11 秒。当使用 8760 行时(这将是我最终输入 xlsx 中的行数),消耗的时间大致相同。

瓶颈似乎是打开 Excel 文件。我对吗?我怎样才能最大限度地减少时间消耗?

对我来说,似乎 Matlab 打开 Excel 文件五次,而实际上只需要一次。我怎样才能改进我的代码?

编辑: 通过使用以下代码,耗时减少了大约 2 秒(仍然很慢):

temp=xlsread('../input/input.xlsx','A:E');

TE=temp(:,1);
AF=temp(:,2);
TAHE=temp(:,3);
HD=temp(:,4);
TCW=temp(:,5);

您不应该拆分 xlsread 通话。尝试一次读取所有数据,例如,读取到元胞数组中,并在加载后将其拆分为变量。

编辑:我刚刚看到您的编辑。我想它不会变得更快...

来自xlsread documentation

num = xlsread(filename,sheet,xlRange,'basic') reads data from the spreadsheet in basic mode, the default on systems without Excel for Windows. If you do not specify all the arguments, use empty strings as placeholders, for example, num = xlsread(filename,'','','basic').

我对此的理解是,在安装了 Excel 的 Windows 机器上,MATLAB 实际上调用 Excel 并让它读取数据并将它们传递给 MATLAB,否则(没有Excel,没有 Windows 或显式 'basic' 模式)文件由本地 MATLAB 实现读取,这可能更快,因为单独的 Excel 启动可能需要一些时间。