On 23 Oct 2009, at 22:00, Konrad Hinsen wrote:
> For matrix computations and linear algebra, your best choice is
> probably
> the Colt library developed at CERN, or the somewhat parallelized
> version called Parallel Colt. Colt has arrays up to three dimensions
> for
> a couple of data types, enough for matrix stuff but not much more.
>
> If you need higher-dimensional arrays, e.g. to store complex data
> sets,
> your best bet would be the netCDF implementation for Java, which
> contains a very complete array library that handles any number of
> dimensions. However, it provides no linear algebra at all.
I should have added that it is possible to convert between netCDF and
Colt arrays without a costly element-by-element copying procedure. For
example, the following code inverts a matrix read from a netCDF file
using Colt:
(ns netcdf-read
(:import (ucar.nc2 NetcdfFile)
(cern.colt.matrix.tdouble.impl DenseDoubleMatrix2D)
(cern.colt.matrix.tdouble.algo DenseDoubleAlgebra)))
(defn unidata-to-colt
[#^ucar.ma2.ArrayDouble$D2 array]
(let [java-array-1d (.get1DJavaArray array Double)
[rows, cols] (.getShape array)]
(new DenseDoubleMatrix2D rows cols java-array-1d 0 0 cols 1 false)))
(let [matrix (with-open [ncfile (NetcdfFile/open "/Users/hinsen/
Temp/matrix.nc")]
(.read (.findVariable ncfile "matrix")))
colt-matrix (unidata-to-colt matrix)
la (new DenseDoubleAlgebra)
inverse (.inverse la colt-matrix)]
(prn inverse))
Konrad.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---