Efficient Java Matrix Library
Original authorPeter Abeles
Stable release
0.41.1 / December 4, 2022; 3 years ago (2022-12-04)
Operating systemCross-platform
TypeLibrary
LicenseApache License
Websiteejml.org
Repository

Efficient Java Matrix Library (EJML) is a linear algebra library for manipulating real/complex/dense/sparse 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. These goals are accomplished by dynamically selecting the best algorithms to use at runtime, clean API, and multiple interfaces. EJML is free, written in 100% Java and has been released under an Apache v2.0 license.

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

Capabilities

edit

EJML provides the following capabilities for dense matrices.

  • Basic Operators (addition, multiplication, ... )
  • Matrix Manipulation (extract, insert, combine, ... )
  • Linear Solvers (linear, least squares, incremental, ... )
  • Decompositions (LU, QR, Cholesky, SVD, Eigenvalue, ...)
  • Matrix Features (rank, symmetric, definitiveness, ... )
  • Random Matrices (covariance, orthogonal, symmetric, ... )
  • Different Internal Formats (row-major, block)
  • Unit Testing

Usage examples

edit

Equation style

edit

Computing the Kalman gain:

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

Procedural style

edit

Computing Kalman gain:

mult(H, P, c);
multTransB(c, H, S);
addEquals(S, R);
if (!invert(S, S_inv))
    throw new RuntimeException("Invert failed");
multTransA(H, S_inv, d);
mult(P, d, K);

SimpleMatrix style

edit

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);

DecompositionFactory

edit

Use of a DecompositionFactory to compute a Singular Value Decomposition with a Dense Double Row Major matrix (DDRM):[2]

SingularValueDecomposition_F64<DenseMatrix64F> svd = 
    DecompositionFactory_DDRM.svd(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_DDRM.mult(matA, matB, result);

See also

edit

References

edit
  1. ^ "EJML Project Page". EJML. Peter Abeles. Retrieved Jan 21, 2019.
  2. ^ "Matrix Decompositions - Efficient Java Matrix Library". ejml.org. Retrieved 2021-04-24.
edit

📚 Artikel Terkait di Wikipedia

List of JVM languages

that are used to produce computer software that runs on the Java Virtual Machine (JVM). A Java program interprets some of these languages, and others are

Outline of the Java programming language

Interface (Java) Java virtual machine Java Class Library, standard library Java Development Kit Java Runtime Environment Javadoc Java package Java Platform

List of Java software and tools

algebra and random numbers. Efficient Java Matrix Library (EJML) – dense and sparse matrix computations and linear algebra Easy Java Simulations – Open Source

Java (programming language)

component of Sun's Java platform. The original and reference implementation Java compilers, virtual machines (VMs), and class libraries were released by

Google Guava

Google Guava is an open-source set of common libraries for Java, mainly developed by Google engineers. Google Guava can be roughly divided into three components:

List of Java frameworks

Below is a list of notable Java programming language technologies (frameworks, libraries).

List of open-source software for mathematics

matrix calculations, combined with extensive Html reporting. Euler Mathematical Toolbox is an open-source numerical software system combining matrix language

Mathematical software

Simulation Library Armadillo Blitz++ Boost.uBLAS CGAL Class Library for Numbers deal.II Eigen GetFEM++ IML++ IT++ LAPACK++ Matrix Template Library MFEM Multiple