我正在寻找一个稀疏矩阵库,我可以从Ruby中使用。我目前正在使用由"gsl"gem提供的GNU科学库绑定,但是如果我使用专用的稀疏矩阵库,我的应用程序将得到更好的优化。我已经研究了线性库和数组库。这三个库都不支持稀疏矩阵优化的存储或操作。
有什么我错过了-或现有的C库,可能会编写绑定?我更喜欢前者而不是后者,因为我以前没有用Ruby编写过C绑定,但我愿意尝试一下。
就像Bill上面提到的那样,纯ruby的解释会比你想要的慢,但可能对原型很好。我一直在做这样一个库在https://github.com/hmcfletch/sparse-matrix
我还没有把它作为gem发布,还有更多的工作要做,但是如果你仍然有需要的话,可以看看。
纯ruby解决方案将会非常慢。我很想选择像MTJ (http://code.google.com/p/matrix-toolkits-java/)这样的东西,并在JRuby下使用它。
有一堆java代码;其中大部分都相当成熟,尽管我对这个领域还不太了解,无法推荐一个特定的库。我可以告诉你,我经常从jruby中使用java,使用它是一种乐趣。
你看过scirruby吗?
我们目前还没有实现稀疏矩阵,但我们正在努力。在田中正弘的支持下,我们也在重写《NArray》。
一个目标是让所有东西都在纯Ruby中工作,在C中(通常是通过GSL绑定),在Java中为JRuby工作。(如果GSL等不可用,纯Ruby将是后备方案。)
旁注:这是对这个问题的糟糕回答。我把它贴在这里,主要是为了让那些碰巧在做这些事情的人知道在哪里可以找到我们。div =)