excel - MATLAB 中 xlsread 速度慢

标签 excel matlab file-io

这是我的 MATLAB 程序的分析模拟运行结果。我需要运行此模拟数十万次(约 100,000 次)。

The abnormally slow xlsread

因此我需要一种更快的方法来读取 Excel 文件。

规范:Excel 文件由 10000x2 个单元格组成,每次模拟运行都会从 5 个单独的 Excel 文件中读取一张这样的工作表。

更新:我将 xlsread 置于基本模式,并通过将输入合并到单个文件中来减少调用次数。现在下一个目标是 xlswrite。啊,那种沉沦的感觉。 :|

Updated Profile Summary

注意:虽然写信给 CSV使用 dlmread 读取文件速度非常快(大约 20 倍),我需要使用 .xls 文件提供的单独工作表的舒适感。

最佳答案

如果您需要 Excel 工作表作为输出,我认为您无法从 xlswrite 中获取太多信息。

并行化怎么样?

您可以访问并行计算工具箱吗?或者,如果您的机器支持,您也可以运行 MATLAB 的两个实例。如果是这样,您可以考虑两种方法:

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

  2. 拥有 N 个 MATLAB 实例/工作线程(N 取决于您的物理机容量)。跨 N 个工作线程并行执行整个读取-处理-写入部分。注意,我不确定 Excel 在被 N 个工作人员调用时会如何扩展! (xlswrite使用activeX/MS Excel写入数据)。

与任何并行方法一样,您的效果将根据模拟的复杂性与所需文件 I/O 及其性能的不同而有所不同。

关于excel - MATLAB 中 xlsread 速度慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6173198/

相关文章:

matlab - matlab中的滤波器矩阵

java - 文件 lastModified() 返回 Wed Dec 31 19 :00:00 EST 1969

c - 输出和输入二进制数据 C

c++ - 只读取文本文件中的给定行?

c# - 如何识别哪些单元格/列设置了过滤器?

excel - 将 Excel (xls) 文件转换为逗号分隔 (csv) 文件,无需 GUI

matlab - 如何基于两个几乎垂直的向量创建正交基?

image - 如何使用通过PCA获得的特征向量来重新投影我的数据?

excel - 对引用的起始单元格和结束单元格的值求和

regex - Excel VBA 正则表达式匹配位置