2011-07-18 70 views
13

我正在寻找我可以从Ruby使用的稀疏矩阵库。我目前使用由“gsl”gem提供的GNU Scientific Library bindings,但如果我使用专用稀疏矩阵库,我的应用程序将会更好地优化。我调查了linalgNArray库。这三个库都不支持稀疏矩阵优化的存储或操作。用于Ruby的稀疏矩阵库

有没有什么我已经错过 - 或者现有的C库可能可以编写绑定?我更喜欢前者到后者,因为我之前没有在Ruby中写过C绑定,但我愿意尝试它。

回答

3

像上面提到的Bill一样,纯粹的ruby解释将会比你想要的慢,但可能对原型设计很有帮助。我一直在努力在https://github.com/hmcfletch/sparse-matrix

我还没有发布它作为一个宝石还有更多的工作要做,但看看,如果你仍然有需要。

+0

太棒了,谢谢。我以前看过你的图书馆,但看起来你已经做了一些很大的改变。非常感激! –

+0

@HMCFletch,是否有兴趣融入SciRuby?我们正在进行一个简单的重写,并且我正要开始编码一个稀疏矩阵。 –

1
+0

谢谢你的回答!是的,我有。它非常强大,但是对于这个库我想要更接近Ruby的东西。来自第二个链接的 –

+0

:RSRuby是RPy的端口(等效的Python模块),并且 将完整的R解释器嵌入到Ruby中。这意味着它应该*为 可能通过Ruby访问任何R函数/变量。这是 作为Rubyforge的宝石或来源提供: http://rubyforge.org/projects/rsruby/ – francpaul

+0

对不起,我的意思是我非常熟悉R和它的Ruby绑定,但它不适合这个项目(我希望我可以将其作为gem分发,而不需要安装整个R运行时)。感谢您的评论 - 这绝对是我推荐给那些在独立应用程序或问题上工作的人的方法。 –

2

纯Ruby的解决方案将是可笑的慢。我很想尝试像MTJ(http://code.google.com/p/matrix-toolkits-java/)这样的东西,并在JRuby下使用它。

这里有一堆java代码;它大部分都是相当成熟的,尽管我不知道这个空间足以推荐一个特定的图书馆。我可以告诉你,我经常使用jruby中的java,并且很高兴与之合作。

+0

这看起来很合身,谢谢。我仍然对使用FFI绑定的东西感兴趣,以便它可以与不同的ruby版本一起工作,但是这看起来是一个好方法。我会看看这个库,看看我能不能与JRuby合作。 –

2

你见过SciRuby

我们目前没有实施稀疏矩阵,但我们正在努力。我们也正在重写NArray,田中正大的祝福。

一个目标是让所有的东西都可以在纯Ruby,C(通常通过GSL绑定)和JRuby的Java中运行。 (如果GSL等不可用,那么Pure Ruby将成为后备。)

附注:这是对这个问题的一个可怕的答案。我主要在这里发布,以便任何碰巧在这些事情上工作的人知道在哪里找到我们。 =)

+0

哇,不,我没有 - 很久以前有一个科学的ruby项目,但我没有意识到它仍然活跃。谢谢! –

+1

你是否一直在保持最新? NMatrix的第一个字母出来了。 'gem install nmatrix'。它是SciRuby的一部分,它有列表和耶鲁稀疏支持。 –