Ubuntu16.04安装armadillo库

1. armadillo说明

armadillo是目前使用比较广的C++矩阵运算库之一,相当于Matlab的C++替代库。许多Matlab的矩阵操作函数都可以找到对应,这对习惯了Matlab的人来说实在是非常方便,另外如果要将Matlab下做研究的代码改写成C++,使用Armadillo也会很方便。

armadillo特性如下:

  • Armadillo是一种用于C ++语言的高质量线性代数库(矩阵数学),旨在在速度和易用性之间取得良好的平衡

  • 提供类似于Matlab的高级语法和功能

  • 可用于直接在C ++中进行算法开发,或将研究代码快速转换为生产环境

  • 为向量,矩阵和立方体提供有效的类(一阶,二阶和三阶张量);支持密集和稀疏矩阵

  • 支持整数,浮点数和复数

  • 复杂的表达式评估器(基于模板元编程)可自动组合多个操作以提高速度和效率

  • 通过与LAPACK或其高性能替代产品之一(例如MKL或OpenBLAS)集成,可以提供各种矩阵分解(本征,SVD,QR等)

  • 可以自动使用OpenMP多线程(并行化)来加快计算量大的操作

  • 根据许可许可提供,对开放源代码和专有(封闭源)软件均有用

  • 可用于机器学习,模式识别,计算机视觉,信号处理,生物信息学,统计,金融等

2. Ubuntu16.04安装armadillo库

1. 安装依赖库

sudo apt-get update

sudo apt-get install liblapack-dev
sudo apt-get install libblas-dev
sudo apt-get install libboost-dev


2. 安装armadillo

sudo apt-get install libarmadillo-dev


3. 测试程序

// test.cpp
#include <iostream>
#include <armadillo>

using namespace std;
using namespace arma;

int main(int argc, char **argv)
{
    mat A = randu(4, 5);
    mat B = randu(4, 5);
    
    cout << A*trans(B) << endl;
    
    return 0;
}


4. 编译

g++ test.cpp -std=c++11 -larmadillo  -o test


5. 运行及结果

./test
//结果如下:
0.8635   0.6455   1.2309   0.3664
0.9823   0.7291   1.3008   0.7792
1.0882   1.0004   1.6399   0.6935
1.4101   0.9859   2.0146   0.7092


6. 问题记录

  1. 编译问题
    安照上述步骤编译test.cpp时报错,错误如下:
//usr/lib/libblas.so.3: undefined reference to `gotoblas'
collect2: error: ld returned 1 exit status

这是因为在我的系统中安装有多个libblas和liblapack库,在编译时如果两者对应的版本不匹配就会出现上述错误,可以在atlas下选择相同的库。
如:

sudo update-alternatives --config libblas.so.3

我这里选择1号版本:

There are 2 choices for the alternative libblas.so.3 (providing /usr/lib/libblas.so.3).

  Selection    Path                                 Priority   Status
------------------------------------------------------------
* 0            /usr/lib/openblas-base/libblas.so.3   40        auto mode
  1            /usr/lib/libblas/libblas.so.3         10        manual mode
  2            /usr/lib/openblas-base/libblas.so.3   40        manual mode

Press <enter> to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/lib/libblas/libblas.so.3 to provide /usr/lib/libblas.so.3 (libblas.so.3) in manual mode

同理选择对应的liblapack.so.3文件

sudo update-alternatives --config liblapack.so.3

结果如下:

There are 2 choices for the alternative liblapack.so.3 (providing /usr/lib/liblapack.so.3).

  Selection    Path                                   Priority   Status
------------------------------------------------------------
* 0            /usr/lib/openblas-base/liblapack.so.3   40        auto mode
  1            /usr/lib/lapack/liblapack.so.3          10        manual mode
  2            /usr/lib/openblas-base/liblapack.so.3   40        manual mode

Press <enter> to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/lib/lapack/liblapack.so.3 to provide /usr/lib/liblapack.so.3 (liblapack.so.3) in manual mode
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翔底

您的鼓励将是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值