NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.

To learn about what's going on, see About the Archive Site.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [netcdf-java] Linear algebra on data read from a netCDF file (fwd)





===============================================================================
Robb Kambic                                Unidata Program Center
Software Engineer III                      Univ. Corp for Atmospheric Research
address@hidden             WWW: http://www.unidata.ucar.edu/
===============================================================================

---------- Forwarded message ----------
Date: Sun, 18 Oct 2009 13:13:12 +0200
From: Konrad Hinsen <address@hidden>
To: address@hidden
Subject: Re: [netcdf-java] Linear algebra on data read from a netCDF file

On 16 Oct 2009, at 14:06, Konrad Hinsen wrote:

Thanks! This should at least be efficient. I quickly checked the Colt implementation, which does have a constructor for its array class that takes the plain Java array plus the shape information, so at least in theory this should be simple. If/when I get it to work, I'll post my solution here.

Here is a working example (Clojure source code) for inverting 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))


For my current needs, conversion of 2D double arrays is sufficient, but this could of course be generalized to ranks 1 and 3 (that's all there is in Colt) and other element types.

Konrad.

_______________________________________________
netcdf-java mailing list
address@hidden
For list information or to unsubscribe, visit: http://www.unidata.ucar.edu/mailing_lists/