首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Jama矩阵

Java Jama矩阵
EN

Stack Overflow用户
提问于 2011-01-29 11:11:40
回答 4查看 2.3K关注 0票数 2

我正在和Jama Matrix一起工作。我把它用在大规模集成电路上。它工作得很好。然而,当我传递一个像8000x8000这样的大矩阵时,它会杀死我的整个系统。我只是简单地调用SVD,然后减小矩阵大小并进行累加。没别的了!

有什么想法吗?我该如何解决这个问题?

core2du

Ram =10 Ram

Java运行时设置

-Xmx5000M

当我执行Jama矩阵代码时,没有其他程序在运行

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-14 17:06:30

我也使用Jama进行奇异值分解,在求解大矩阵时也有同样的问题。为了减少内存溢出的情况,我已经将SingularValueDecomposition.java调优为紧凑的。调整是,在矩阵A中,它有如此多的0 (零)值,因此所有使用的矩阵,例如A,U,V,Work等的紧凑只允许存储大于0的可用值。在使用紧凑型奇异值分解之前,您应该制作一个矩阵文件,如r /t c /t value /n r /t c /t value /n ... '/t‘和'/n’分别表示制表符和换行符。

例如,(0,0,0),(0,1,0.5),(0,2,0),(0,3,0.2),(1,0,1),(1,1,0),(1,2,0),(1,3,0.3),矩阵大小为2*4 (R*C),那么您只需生成如下文件: MATRIXSIZE /t 2 /t 4 /n 0 /t 1 /t 0.5 /n 0 /t 3 /t 0.2 /n 1 /t 0 /t 1 /n 1 /t 3 /t 0.3 /n

如果您想使用它,请告诉我您的电子邮件地址(mg.hwang@gmail.com)。我会给出更多细节,以便在电子邮件中使用它。

我检查了一下结果是否正确。然而,我不确定它对计算机有多大的效果。无论如何,它的工作和显示更好,即使不是很多。

票数 2
EN

Stack Overflow用户

发布于 2011-01-29 16:33:50

您可能正面临内存不足的情况。您可能希望通过使用-Xmx选项来增加您的JVM可用的内存,例如,-Xm256m将为您的JVM提供256MB的内存,而不是默认的64MB。

您还可以考虑使用替代的库来处理内存高效的矩阵表示,使用稀疏矩阵的模型,如COO、DOK、CSR等。在维基百科上查找“稀疏矩阵”以获取更多详细信息。

This thread提供了Jama的几个替代方案,也许这也会对您有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2011-01-30 17:48:01

彼得·泰勒是绝对正确的。

这是一个指数型的大问题。毕竟,计算8000X8000矩阵的奇异值不是小菜一碟,因为你谈论的是64,000,000个元素!

如果您使用以下命令运行JAMA MagicSquareExample:

32x32矩阵运行时间为0.062秒。

64x64将增加到0.0328秒

96x96将在1.891秒内过去

128x128,4.5秒

11.109秒160x160

192x192,24.063秒

224x224,46.063秒

83.625秒256x256

512x512,1716.719秒

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4834910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档