2

我(当时)在 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);
4

2 回答 2

2

xlsread文档中:

num = xlsread(filename,sheet,xlRange,'basic')以基本模式从电子表格中读取数据,这是没有 Excel for Windows 的系统上的默认设置。如果未指定所有参数,请使用空字符串作为占位符,例如num = xlsread(filename,'','','basic').

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

于 2015-02-17T15:44:11.787 回答
1

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

编辑:我刚看到你的编辑。估计不会再快了……

于 2015-02-16T15:36:05.400 回答