在MATLAB中慢速xlsread

这里是我的MATLAB程序仿真运行的结果。 我需要运行这个模拟数十万次 (〜100,000次)。

异常缓慢的xlsread

因此,我需要一个更快的方式来读取Excel文件。

规格:Excel文件是10000×2单元格,每个模拟运行是从5个独立的Excel文件中读取一个这样的表格。

更新:我把xlsread放在基本模式下,并通过将我的input合并到一个文件中来减less调用次数。 下一个目标是xlswrite现在。 啊,那种下沉的感觉。 :|

更新了配置文件摘

注意:尽pipe使用dlmread写入CSV文件速度非常快(大约20次),但我需要使用.xls文件提供的单独表格。

如果你需要 Excel工作表作为输出,我不认为你能够从xlswrite中获得太多的好处。

并行化如何?

你有权访问并行计算工具箱吗? 或者,也许你可以运行MATLAB的两个实例,如果你的盒子支持它。 如果是这样,你可以考虑两种方法:

  1. 让第一个进程执行xlsread部分,模拟部分,然后写入mat文件/纯二进制/ CSV,无论是最快的,同时保持您的数据完整性。 让另一个进程使用xlswrite将matfiles / intermediate数据文件转换为Excel。

  2. 有N个MATLAB实例/工作者(N取决于你的物理机器容量)。 并行化N个工作人员的整个读取过程写入部分。 请注意,我不确定在N个工作人员打电话时Excel如何缩放! (xlswrite使用activeX / MS Excel来写入数据)。

作为任何平行的方法,您的里程将根据模拟的复杂性与所需的文件I / O及其性能而变化。