Armadillo是一個C++開發的線性代數庫,可以方便的把用 Matlab 開發的演算法移植到 C++。只需要標頭檔就可以使用,也可以選用高效的 LAPACK 和 BLAS 進行加速。安裝過程如下:
1、去
Download 下載 Source Code,解壓到任意目錄,比如 X:\Armadillo,將 \include 目錄添加到 visual studio 包含檔案目錄中,VS2008 是在 “工具->選項->VC++目錄->包含檔案” 這裡設定,其它版本類似。
2、修改 X:\Armadillo\include\armadillo_bits\config.hpp 檔案,取消掉下面兩行的注釋
#define ARMA_USE_LAPACK
#define ARMA_USE_BLAS
取消注釋表示使用 LAPACK 和 BLAS 進行更高效的計算,否則使用內建的函數進行計算,這樣可能會帶來一定效能的下降。
3、安裝 LAPACK 和 BLAS,去http://icl.cs.utk.edu/lapack-for-windows/clapack/index.html 下載blas.lib,libf2c.lib,lapack.lib三個庫,並在編譯環境的額外依賴庫中添加這三個庫。(blasd.lib,libf2cd.lib,lapackd.lib
是 debug 版本的庫,偵錯工具的時候可以使用)。同步驟 1 將存放 .lib 檔案的路徑添加到 visual studio 的庫檔案路徑中。
4、在項目屬性中的連結器中添加
blas.lib,libf2c.lib,lapack.lib
5、Okay,寫個 Demo 測試一下
#include <iostream>#include <armadillo>int main(){arma::mat A = arma::randu<arma::mat>(4, 5) * 10;arma::mat B = arma::randu<arma::mat>(4, 5) * 10;arma::mat C = A % B;A.print("A = \n");B.print("B = \n");C.print("A .* B = \n");return 0;}
運行結果:
A =
0.0125 5.8501 8.2284 7.1050 0.9140
5.6359 4.7987 7.4660 5.1353 3.6445
1.9330 3.5029 1.7411 3.0399 1.4731
8.0874 8.9596 8.5894 0.1498 1.6590
B =
9.8853 0.0891 6.0176 4.5079 7.8332
4.4569 3.7788 6.0717 3.5212 8.0261
1.1908 5.3166 1.6623 0.5704 5.1988
0.0467 5.7118 6.6305 6.0768 3.0195
A .* B =
0.1237 0.5213 49.5155 32.0286 7.1598
25.1186 18.1335 45.3313 18.0827 29.2511
2.3019 18.6237 2.8943 1.7340 7.6585
0.3776 51.1760 56.9518 0.9106 5.0093
請按任意鍵繼續. . .