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 updatesudo 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 mode1            /usr/lib/libblas/libblas.so.3         10        manual mode2            /usr/lib/openblas-base/libblas.so.3   40        manual modePress <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 mode1            /usr/lib/lapack/liblapack.so.3          10        manual mode2            /usr/lib/openblas-base/liblapack.so.3   40        manual modePress <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

Ubuntu16.04安装armadillo库相关推荐

  1. ubuntu16.04安装ceres库

    记录下在Ubuntu16.04环境下安装cere库的过程. 更详细的教程:官网 安装依赖 # CMake sudo apt-get install cmake # google-glog + gfla ...

  2. Ubuntu16.04安装PCL库的python实现python-pcl,并且通过pcl加载pcd文件验证python-pcl是否安装成功

    1. 安装PCL库 使用如下指令安装PCL库. sudo apt install libpcl-dev 如果提示"Unable to locate package libpcl-dev&qu ...

  3. ubuntu16.04安装fcl库出现的问题

    首先fcl库需要两个必要的库Eigen(矩阵运算库)和libccd(检测碰撞库),还有一个可选库octomap(搞机器人的建议安装,安装教程如下:https://www.cnblogs.com/Rob ...

  4. ubuntu16.04安装PCRE库

    PCRE是一个轻量级的函数库,支持解析正则表达式,性能超过了POSIX正则表达式库和一些经典的正则表达式库. 为NGINX编写模块,需要用到此库,下面是Ubuntu16下PCRE库的安装与验证: 输入 ...

  5. WIN10子系统Ubuntu16.04安装ia32-libs库

    从网络上找到的方法基本都不适用了, 使用旧的源什么的都找不到这个库文件了, 现在提供离线下载文件及安装方法: 首先一定要包含Ubuntu官方的源, 不要只用国内的源, 有些i386的安装包国内的镜像没 ...

  6. Ubuntu16.04安装boost库

    到boost官网安装一个boost库的压缩包,我下的是1.70.0版本 执行下面的命令解压 tar -xzvf boost_1_70_0.tar.gz 解压出来以后,进入解压出来的文件夹,执行下面的命 ...

  7. Ubuntu16.04 安装字体库

    下载安装:sudo apt-get install ttf-mscorefonts-installer更新字体缓存:sudo fc-cache -f -v查看所有字体:fc-list :lang=zh ...

  8. ubuntu16.04安装libzip库

    sudo apt install libzip-dev 转载于:https://www.cnblogs.com/feifanrensheng/p/10625355.html

  9. ubuntu 14.04 下安装Armadillo库 进行稀疏矩阵特征分解

    图像处理中往往会遇到大型稀疏矩阵的特征值分解问题,如果采用一般的密集矩阵求解方法,对内存要求比较大.所以在稀疏矩阵的基础上进行特征值分解,更加合理.opencv2.49版本中还没有对稀疏矩阵的特征值分 ...

最新文章

  1. jquery.form 和MVC4做无刷新上传DEMO
  2. python自动化测试判断方法_python接口自动化测试之根据excel中的期望结果是否存在于请求返回的响应值中来判断用例是否执行成功...
  3. java 向下转型_Java_向下转型
  4. 请解释一下TreeMap
  5. c语言各种变量的优缺点,C语言优缺点
  6. vlc android 移植版编译
  7. php rinit,PHP执行原理
  8. 罗永浩吐槽clubhouse:玩了两天 没有一个房间能待上10分钟
  9. 海豚计算机语言,海豚模拟器 V5.0 多国语言安装版
  10. 【报告分享】2021年00后生活方式洞察报告.pdf(附下载链接)
  11. Day771.Redis好用的运维工具 -Redis 核心技术与实战
  12. 学生信息管理系统(数据库)
  13. 清华镜像源安装tensorflow
  14. 从WiFI渗透攻击到WPA3
  15. 学习linux 服务器安全这一篇文章就够了
  16. 计算机无法识别点读笔,点读笔插电脑上不识别
  17. minigui[基础篇][11]—— 图标
  18. 蓝桥 卷“兔”来袭编程竞赛专场-05棋盘加密 题解
  19. 本地安全策略命令行secedit设置本地账户安全策略
  20. 本地mysql设置成DMZ主机远程访问的方法

热门文章

  1. 实验二+001+陈定国
  2. 国内外一些软件开发公司
  3. 秦始皇焚书坑儒只因曾被算命先生忽悠?
  4. 《程序员的自我修养》读书笔记——动态链接
  5. 在xsl中插入有大于、小于符号JavaScript,CSS代码的方法
  6. nvme命令中prp_NVMe又有新花样!CMB vs HMB
  7. SIMPACK-学习记录-Doe相关
  8. 具有立体效果的地图制作
  9. eWebEditor的使用方法
  10. NOIP2016(bao)游(zha)记