Java matrix libraries

前端 未结 6 1077
情书的邮戳
情书的邮戳 2020-11-28 08:02

I was wondering whether any of the well-known matrix libraries for Java, such as Colt or EJML, actually provide similar functionality as MatLab? For instance, I can\'t seem

相关标签:
6条回答
  • 2020-11-28 08:31

    Try Apache Commons Math library. org.apache.commons.math3.linear package contains the functions that you want. Home page

    0 讨论(0)
  • 2020-11-28 08:34

    You can use this one. It is very simple and supply basic matrix operations.

    You can add/substract/multiply etc 2d matrixes and vectors.

    0 讨论(0)
  • 2020-11-28 08:39

    You may try my newly Java library (compatible with Java 6+) that can be used for all sorts of applications notably for performing multi-threaded matrix calculations (extending JAMA with multi-threading; currently 30% faster than the available open source libraries). You can check it out on GitHub:

    https://github.com/b-io/io.barras/tree/master/java/jupiter

    Note that each project is independent from each other and is under the very permissive MIT License.

    0 讨论(0)
  • 2020-11-28 08:45

    There is also la4j library that supports functional programming features as functors. You can use transform() method with manual hi-order function.

    0 讨论(0)
  • 2020-11-28 08:48

    Some Java libraries for linear algebra are:

    • Apache Commons Math: http://commons.apache.org/proper/commons-math/
    • jeigen - a wrapper for eigen - https://github.com/hughperkins/jeigen (includes complex and rarely found feature like matrix exponential and matrix logarithm)
    • jblas http://mikiobraun.github.io/jblas/ (also features more complex functions like matrix exponential, also very fast).
    • Colt http://acs.lbl.gov/software/colt/
    • JAMA http://math.nist.gov/javanumerics/jama/
    • UJMP - http://sourceforge.net/projects/ujmp/

    EDIT maybe we can extend this list whenever one comes across and you know - the world keeps moving:

    • ojAlgo - http://ojalgo.org/ has promising benchmarks
    • Efficient Java Matrix Library (EJML) - http://ejml.org
    • ParallelColt - https://sites.google.com/site/piotrwendykier/software/parallelcolt
    • la4j - http://la4j.org/
    • MTJ - https://github.com/fommil/matrix-toolkits-java
    • nd4j - https://nd4j.org/ lets you choose underlying native implementations like cuda or openBlas

    Note: Personally: I use Apache Commons Math and Colt in my own project (http://www.finmath.net). While commons math is actively developed, I found that Colt is still faster in some tasks (like Eigenvalue decomposition). For that reason I use some kind of wrapper which allows me to quickly switch the underlying library (I only need a few things like solving systems of equations and Eigenvalue decomposition).

    0 讨论(0)
  • 2020-11-28 08:51

    The interface for COLT gives you a generic OP: assign(matrix, function), which you can use to add or subtract matrices and vectors.

    As the javadocs for assign() says:

    Assigns the result of a function to each cell; x[row,col] =function(x[row,col],y[row,col]).

    So by using using an addition function as function - you can add matrices.

    0 讨论(0)
提交回复
热议问题