发现
我发现matlab读取mat数据最快,其次是txt文件,读取excel数据有时候很慢。但为了后续查看分析数据方便,我一般会把数据放在excel里面。
问题
下图是某个excel的数据,图中数据看起来像小蚂蚁一样,是因为我把视图缩小到了15%,可以看出数据很多,最重要的是右边一大块的每一行数据个数都不一样。
image.png
我需要把右边部分的每一行放到一个cell数组的一行中,我知道右边数据每一行的个数,最开始我是用for循环逐行读取右边每一行的所有数据,这样一个excel共1000行,要读取好长时间。
解决办法
后来突然想到一点,matlab其实可以读取整个sheet的,当然需要大致设置一个读取范围。我就设置一个很大的范围,用一行xlsread命令读取一个sheet,然后再根据已知的右边每一行的个数,将每一行放入cell数组的一行中。这种方法大大提高了效率,几秒钟就搞定了。
感悟
感悟就是:进行减少使用xlsread,减少读取excel的次数;对于比较多比较凌乱但有规律的数据,如果可以的话,将所有数据先放入matlab的工作空间中,然后再按照自己的需要放入其他变量中。
其他
xlswrite的命令同理,尽量减少写入次数,尽量整合数据,批量一次性写入,加快写入速度。