Procedural

From Efficient Java Matrix Library
Revision as of 07:52, 25 March 2015 by Peter (talk | contribs) (Created page with "The procedural interface in EJML provides access to all of its capabilities and provides much more control over which algorithms are used and when memory is created. The down...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

The procedural interface in EJML provides access to all of its capabilities and provides much more control over which algorithms are used and when memory is created. The downside to this increased control is the added difficulty in programming, kinda resembles writing in asembly. Code can be made very efficient, but managing all the temporary data structures can be tedious.

The procedural API processes DenseMatrix matrix types. For real numbers it takes in DenseMatrix64F and for complex CDenseMatrix64F. These classes themselves only provide very basic operators for accessing elements within a matrix and well as its size and shape. More complex functions for manipulating DenseMatrix are available in various Ops classes, described below. Internally they store the matrix in a single array using a row-major format.

While it has a sharper learning curve and takes more time to learn it is the most powerful API.

Accessors

  • get( row , col )
  • set( row , col , value )
    • Returns or sets the value of an element at the specified row and column.
  • unsafe_get( row , col )
  • unsafe_set( row , col , value )
    • Faster version of get() or set() that does not perform bounds checking.
  • get( index )
  • set( index )
    • Returns or sets the value of an element at the specified index. Useful for vectors and element-wise operations.
  • iterator( boolean rowMajor, int minRow, int minCol, int maxRow, int maxCol )
    • An iterator that iterates through the sub-matrix by row or by column.

Operations

Several "Ops" classes provide functions for manipulating DenseMatrix64F and most are contained inside of the org.ejml.ops package.

  • CommonOps
    • Provides the most common matrix operations.
  • EigenOps
    • Provides operations related to eigenvalues and eigenvectors.
  • MatrixFeatures
    • Used to compute various features related to a matrix.
  • NormOps
    • Operations for computing different matrix norms.
  • SingularOps
    • Operations related to singular value decompositions.
  • SpecializedOps
    • Grab bag for operations which do not fit in anywhere else.
  • RandomMatrices
    • Used to create different types of random matrices.

Tips for Avoiding "new"

TODO fill this out.

  • reshape matrices instead of declaring new ones
  • not all functions recycle memory