一、前言二、下载安装文件三、编译与安装四、代码示例五、总结
一、前言
Armdillo 矩阵运算速度跟 MATLAB 一个量级,为目前使用比较广的 C++ 矩阵运算库之一,是在 C++ 下使用 MATLAB 方式操作矩阵很好的选择,许多 MATLAB 的矩阵操作函数都可以找到对应,这对习惯了Matlab的人来说实在是非常方便,另外如果要将 MATLAB 下做研究的代码改写成 C++,使用 Armadillo 也会很方便,这里有一个简易的 MATLAB 到Armadillo 的语法转换。
二、下载安装文件
官网链接如下:http://arma.sourceforge.net/download.html
这里我下载的为稳定版 10.8.2 版本。
三、编译与安装
进入到 Downloads 目录,解压压缩文件:
cd ~/Downloads tar -xvf armadillo-10.8.2.tar.xz
进入到解压后文件目录:
cd ./armadillo-10.8.2/
运行相关配置:
./configure
部分输出如下:
/home/zq/Downloads/armadillo-10.8.2> ./configure -- *** set cmake policy CMP0025 to NEW -- CMAKE_CXX_STANDARD = 11 -- The CXX compiler identification is GNU 11.2.0 -- The C compiler identification is GNU 11.2.0 -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done ...... -- Generating '/home/zq/Downloads/armadillo-10.8.2/InstallFiles/ArmadilloConfigVersion.cmake' -- Copying /home/zq/Downloads/armadillo-10.8.2/misc/ to /home/zq/Downloads/armadillo-10.8.2/tmp/misc/ -- Generating '/home/zq/Downloads/armadillo-10.8.2/tmp/misc/armadillo.pc' -- Configuring done -- Generating done -- Build files have been written to: /home/zq/Downloads/armadillo-10.8.2
接着执行 make 命令:
make
输出如下:
接着执行安装:
sudo make install
部分输出如下:
/home/zq/Downloads/armadillo-10.8.2> sudo make install [sudo] password for zq: [100%] Built target armadillo Install the project... -- Install configuration: "" -- Up-to-date: /usr/include -- Installing: /usr/include/armadillo_bits -- Installing: /usr/include/armadillo_bits/op_diagvec_meat.hpp -- Installing: /usr/include/armadillo_bits/injector_bones.hpp ...... -- Installing: /usr/share/Armadillo/CMake/ArmadilloLibraryDepends.cmake -- Installing: /usr/share/Armadillo/CMake/ArmadilloLibraryDepends-noconfig.cmake -- Installing: /usr/share/Armadillo/CMake/ArmadilloConfig.cmake -- Installing: /usr/share/Armadillo/CMake/ArmadilloConfigVersion.cmake -- Installing: /usr/lib/x86_64-linux-gnu/pkgconfig/armadillo.pc
四、代码示例
一段使用 Armdillo 库的代码:
#include#include using namespace std; using namespace arma; int main() { mat A(4, 5, fill::randu); mat B(4, 5, fill::randu); cout << A*B.t() << endl; return 0; }
注意这里编译的时候不能直接 g++,不然会出现如下报错:
这里我们使用如下命令编译:
g++ test1.c -o test1 -std=c++11 -O2 -larmadillo
运行结果如下:
五、总结
无



