Linux与Windows在MatLab中执行lsqcurvefit和importdata

时间:2014-03-28 15:41:21

标签: linux matlab

我最近在MatLab上写了一个程序,它在很大程度上依赖于MatLab' importdata'功能和' lsqcurvefit'来自优化工具箱的功能。在Windows中使用MatLab R2011b执行此代码大约需要15秒。当我将代码传输到Linux(CentOS)机器时,大约需要30分钟。

使用配置文件工具,我确定大部分额外的计算时间花费在“导入数据”上。功能和' lsqcurvefit'功能。我清除了两个环境中的所有变量,并使用' importdata'在两个环境中导入了相同的数据文件。在Linux中,这需要大约5秒钟,而在Windows中,这需要大约0.1秒。

有没有办法解决这个问题?代码在Linux中快速运行是绝对必要的。 Linux机器的内存和处理速度都远远超过Windows机器的内存和处理速度。在做了一些阅读之后,我尝试增加Java堆内存,但这没有效果。

1 个答案:

答案 0 :(得分:1)

importdata本身实际上只是一个调用各种其他函数的包装器 - 例如xlsread - 取决于输入数据的类型。因为它需要多种类型的文件作为输入(你甚至可以用它加载图像,尽管为什么你会是另一回事),它需要弄清楚文件是什么,然后调用适当的函数。

另一方面,

dlmread仅采用特定类型的文件(ASCII分隔数字)。

简而言之: 当您可以使用更具体的功能时,切勿使用importdata等一般适用的功能。您可以看到文件格式列表和特定的读/写函数here

我也不认为这仅限于Linux。重复一千次,在Windows机器上加载一个小的制表符分隔文件:

dlmread:0.756655秒

csvread:1.332842秒

importdata:69.508252秒