GSL
GNU Scientific Library自带的矩阵运算,据说速度一般。
Blitz++
Blitz++ 与 MTL 都是基于 C++ template 高效数值计算程序库,不过他们专注于不同的方向。
Blitz++ 提供了一个 N 维( 1—10 )的 Array 类 , 这个 Array 类以 reference counting 技术实现,支持任意的存储序 (row-major 的 C-style 数组, column-major 的 Fortran-style 数组 ) ,数组的切割 (slicing), 子数组的提取 (subarray), 灵活的 Array 相关表达式处理。另外提供了可以产生不同分布的随机数 (F,Beta,Chi-Square ,正态,均匀分布等 ) 的类也是很有特色的。
MTL 专注于线性代数相关的计算任务,如各种形式矩阵的生成 ( 对角,共轭,稀疏,对称等 ) ,相关的计算,变换,以及与一维向量的运算。
两个程序库对于从 Matlab 导入导出数据都有不错的支持。
MTL4
类似Eigen和Armadillo,有开源版本。
Eigen
http://eigen.tuxfamily.org/dox/
Eigen[1] 目前最新的版本是3.2.5,除了C++标准库以外,不需要任何其他的依赖包。Eigen使用的CMake建立配置文件和单元测试,并自动安装。如果使用Eigen库,只需包特定模块的的头文件即可。最新版本为Eigen 3.3。
使用类似Matlab的方式操作矩阵,可以在这里查看官方的与Maltab的对应关系,个人感觉单纯讲和Matlab的对应的话,可能不如Armadillo对应的好,但功能绝对强大。Eigen包含了绝大部分你能用到的矩阵算法,同时提供许多第三方的接口。Eigen一个重要特点是没有什么依赖的库,本身仅有许多头文件组成,因