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

时间:2015-02-16 13:09:39

标签: excel matlab xlsread

我(当时)在Excel中有五个coloumns,我需要读取并存储到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行(这将是我最终inputxlsx中的行数)时,消耗的时间大致相同。

瓶颈似乎是打开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);

2 个答案:

答案 0 :(得分:2)

来自xlsread documentation

  

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

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

答案 1 :(得分:1)

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

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