这是我的 MATLAB 程序的分析模拟运行结果。我需要运行此模拟数十万次(约 100,000 次)。
因此我需要一种更快的方法来读取 Excel 文件。
规范:Excel 文件由 10000x2 个单元格组成,每次模拟运行都会从 5 个单独的 Excel 文件中读取一张这样的工作表。
更新:我将 xlsread 置于基本模式,并通过将输入合并到单个文件中来减少调用次数。现在下一个目标是 xlswrite。啊,那种沉沦的感觉。 :|
注意:虽然写信给 CSV使用 dlmread 读取文件速度非常快(大约 20 倍),我需要使用 .xls 文件提供的单独工作表的舒适感。
最佳答案
如果您需要 Excel 工作表作为输出,我认为您无法从 xlswrite 中获取太多信息。
并行化怎么样?
您可以访问并行计算工具箱吗?或者,如果您的机器支持,您也可以运行 MATLAB 的两个实例。如果是这样,您可以考虑两种方法:
让第一个进程执行 xlsread 部分、模拟部分,然后写入 mat 文件/纯二进制文件/CSV,无论是最快的还是保持数据完整性的。让另一个进程使用 xlswrite 将 matfiles/中间数据文件转换为 Excel。
拥有 N 个 MATLAB 实例/工作线程(N 取决于您的物理机容量)。跨 N 个工作线程并行执行整个读取-处理-写入部分。注意,我不确定 Excel 在被 N 个工作人员调用时会如何扩展! (xlswrite使用activeX/MS Excel写入数据)。
与任何并行方法一样,您的效果将根据模拟的复杂性与所需文件 I/O 及其性能的不同而有所不同。
关于excel - MATLAB 中 xlsread 速度慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6173198/