Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Clojure Matrix Representation

What is a good representation for matrices in Clojure? I'm interested in dealing with dense matrices of floating point numbers. The "list of lists" representation springs to mind, but is there something better?

Some criteria for a good representation include:

  • Efficiency: They won't be used for constant processing of huge data sets, but I don't want to spend hours calculating results that could have been done in minutes with a better design.
  • Java Interoperability: It would be nice to pass the data back and forth between the two languages easily.
  • Easy Parallelization: If I can use all the cores available simply by replacing map with pmap, that would be nice.
  • Amenable to the use of reduce: It seems like lots of the calculations I'm doing work very well with reduce.
  • Ability to Represent Image Scan Lines in Matrix Rows: Not really very important, but would be nice to have.

Any thoughts?

like image 581
clartaq Avatar asked Nov 04 '09 14:11

clartaq


2 Answers

Incanter supplies a wrapper around some of Parallel Colt, including what looks to be a pretty decent implementation of fast, parallelized dense matrices that interface with Clojure's seq-based libraries. I haven't used it, but it should be what you're looking for.

Example.

like image 90
Mike Douglas Avatar answered Oct 24 '22 03:10

Mike Douglas


I'm writing a matrix library wrapping jblas called, tentatively, Clatrix. It's missing a lot of features I still want to add, but it's got most of what you might be looking for. Take a look, http://github.com/tel/clatrix.

like image 34
J. Abrahamson Avatar answered Oct 24 '22 03:10

J. Abrahamson