关联大矩阵

时间:2013-01-22 21:39:55

标签: matlab optimization correlation

我有一个包含100000列(变量)和100行(观察)的矩阵。 我需要将(皮尔逊)与所有人联系起来。 我使用corrcoef,因为我发现它比corr快得多。 当我采用25000列的矩阵时,操作需要15秒。然而,当我在几分钟后将大小增加到50000时,我的matlab RAM增加到16Gb并且matlab(包括窗口)开始冻结。有什么建议?任何拆分专利?逐列计算变得非常低效......

感谢您的帮助, 瓦迪姆

1 个答案:

答案 0 :(得分:2)

如果没有64位版本的matlab加上足够的内存来存储大型数组,或者以其他方式存储数组,那么这种大型数组的暴力计算是不可能的。您可以离线存储阵列,只在您使用时引入所需内容。

此外,如果这些数字总是小整数,那么使用uint8或int8,或逻辑数组,甚至是单个数组,与双数组相比,所有这些都会降低内存需求。如果数组是稀疏的,那就更好了,然后使用稀疏数组操作。

另一种方法是使用Parallel Computing Toolbox(和MATLAB Distributed Computing Server)同时利用多台机器的内存。这将允许你写:

matlabpool open <a large number>
x = distributed.zeros( 100000, 100 );

另见this thread处理大型矩阵......