Efficient Java Matrix Library

Efficient Java Matrix Library
Original author(s) Peter Abeles
Stable release
0.28 / August 9, 2015 (2015-08-09)
Operating system Cross-platform
Type Library
License Apache_License
Website ejml.org

Efficient Java Matrix Library (EJML) is a Java linear algebra library for manipulating dense matrices. Its design goals are; 1) to be as computationally and memory efficient as possible for both small and large matrices, and 2) to be accessible to both novices and experts. EJML is free, written in 100% Java and has been released under the Apache v2.0 license.

EJML has three distinct ways to interact with it: 1) procedural, 2) SimpleMatrix, and 3) Equations. Procedure provides all capabilities of EJML and almost complete control over memory creation, speed, and specific algorithms. SimpleMatrix provides a simplified subset of the core capabilities in an easy to use flow styled object-oriented API, inspired by Jama. Equations is a symbolic interface, similar in spirit to Matlab and other CAS, that provides a compact way of writing equations. [1]

Capabilities

EJML provides the following capabilities for dense matrices.

Usage Example (Equations)

Computing the Kalman gain:

eq.process("K = P*H'*inv( H*P*H' + R )");

Usage Example (SimpleMatrix)

Example of Singular Value Decomposition (SVD):

SimpleSVD s = matA.svd();
SimpleMatrix U=s.getU();
SimpleMatrix W=s.getW();
SimpleMatrix V=s.getV();

Example of matrix multiplication:

SimpleMatrix result = matA.mult(matB);

Usage Example (DenseMatrix64F)

Example of Singular Value Decomposition (SVD):

SingularValueDecomposition<DenseMatrix64F> svd = 
    DecompositionFactory.svd(matA.numRows,matA.numCols,true,true,true);

if( !DecompositionFactory.decomposeSafe(svd,matA) )
    throw new DetectedException("Decomposition failed");

DenseMatrix64F U = svd.getU(null,false);
DenseMatrix64F S = svd.getW(null);
DenseMatrix64F V = svd.getV(null,false);

Example of matrix multiplication:

CommonOps.mult(matA,matB,result);

See also

References

  1. "EJML Project Page". EJML. Peter Abeles. Retrieved April 1, 2014.

External links

This article is issued from Wikipedia - version of the 9/28/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.