2013-07-15 92 views
0

我正在写一些Java软件,它需要计算正定对称稀疏矩阵的特征值和特征向量。我不需要所有的特征值,但我主要对小特征感兴趣。问题是:稀疏矩阵的高效内存小型特征值算法

1)为了进行测试,我的代码需要在笔记本电脑(四核运行,4个音乐会的RAM)

2)测试数据包括大矩阵 - 通常在10000 10000

这两个约束意味着大多数通常的Java矩阵包不适合我目前的需求 - 我甚至无法在内存中存储密集的10000×10000矩阵,更不用说计算它们。

所以我的问题是:在做矩阵计算时,人们如何解决内存约束问题?我的矩阵通常很稀疏 - 通常在5%以下的条目都不是零。有没有利用这个算法?我能以某种方式将矩阵存储在我的硬盘上,并且一次只加载它,以减少我的RAM上的压力?

+0

有如何存储稀疏矩阵高效这里,有一些特征值交易算法用于稀疏矩阵HTTP沿着一些有用的信息:// WWW用户。 cs.umn.edu/~saad/eig_book_2ndEd.pdf – arynaq

回答

0

你可以尝试使用la4j库为:

// Compressed Sparse Row Matrix 
Matrix a = new CRSMatrix(...); 

// eigen[0] = P, eigen[1] = D 
Matrix eigen[] = a.decompose(Matrices.EIGEN_DECOMPOSITOR);