我(当时)在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);
答案 0 :(得分:2)
num = xlsread(filename,sheet,xlRange,'basic')
从中读取数据 电子表格在基本模式下,默认在没有Excel的系统上 视窗。如果未指定所有参数,请使用空字符串作为 占位符,例如num = xlsread(filename,'','','basic')
。
我对此的理解是,在安装了Excel的Windows机器上,MATLAB实际调用Excel并让它读取数据并将它们传递给MATLAB,否则(没有Excel,没有Windows或显式'basic'
模式)该文件由本机MATLAB实现读取,这可能更快,因为单独的Excel启动可能需要一些时间。
答案 1 :(得分:1)
你不应该分开xlsread
个电话。尝试一次读取所有数据,例如,将其读入单元格数组,并在加载后将其拆分为变量。