Fast C++ matrix library with easy to use functions and syntax, deliberately similar to Matlab. Uses template meta-programming techniques.
Also provides efficient wrappers for LAPACK, BLAS and ATLAS libraries, including high-performance versions such as Intel MKL, AMD ACML and OpenBLAS.
Useful for machine learning, pattern recognition, signal processing, bioinformatics, statistics, finance, etc.
For more details, see http://arma.sourceforge.net
- Easy to use - has many MATLAB like functions
- Useful for prototyping directly in C++
- Useful for conversion of research code into production environments
- Used for machine learning, pattern recognition, computer vision, signal processing, bioinformatics, statistics, finance, etc
- Efficient classes for vectors, matrices, cubes (3rd order tensors) and fields
- Fast singular value decomposition (SVD), eigen decomposition, QR, LU, Cholesky, FFT
- Clustering using k-means and Gaussian Mixture Models (GMM)
- Automatic vectorisation of expressions (SIMD)
- Contiguous and non-contiguous submatrices
- Automatically combines several operations into one to increase speed and efficiency
This library is great for converting Matlab code into efficient C++. My methodology is to copy the Matlab into a C++ editor window, and convert line-by-line. It's not a one-to-one conversion, but, it's close (2-3 lines C++ to 1 Matlab). Efficiency is excellent. I have benchmarked a dot product operation and found its use with OpenBLAS is close to the maximum CPU capability. The only downside is that when Armadillo throws an exception (during development), it can be difficult to find the source of the problem. The best solution is a stack trace in the debugger.
Excellent all-purpose matrix library.
I like this project. It takes advantage of the new C++ features and is very easy to use.
Excellent usability, active development