前言

装这个库的原因是因为昨天写题写得有点自闭,所以就去复习一下很久之前学过的numpy,打算调整一下思维。复习着复习着,就想C++下有没有像numpy这种这么好用的矩阵库呢?上某乎找了一下,果然有,便打算配一个玩玩(一句话概括,原因就是想要找个合适的理由划水)

Armadill简介

以下摘自官网

  • Armadillo is a high quality linear algebra library (matrix maths) for the C++ language, aiming towards a good balance between speed and ease of use

  • Provides high-level syntax and functionality deliberately similar to Matlab

  • Useful for algorithm development directly in C++, or quick conversion of research code into production environments (eg. software & hardware products)

  • Provides efficient classes for vectors, matrices and cubes (1st, 2nd and 3rd order tensors); dense and sparse matrices are supported

  • Integer, floating point and complex numbers are supported

  • Various matrix decompositions are provided through integration with LAPACK, or one of its high performance drop-in replacements (eg. multi-threaded Intel MKL, or OpenBLAS)

  • A sophisticated expression evaluator (based on template meta-programming) automatically combines several operations to increase speed and efficiency

  • Can automatically use OpenMP multi-threading (parallelisation) to speed up computationally expensive operations

  • Available under a permissive license, useful for both open-source and proprietary (closed-source) software

  • Can be used for machine learning, pattern recognition, computer vision, signal processing, bioinformatics, statistics, finance, etc

翻译一下就是

  • Armadillo是一个高质量的C++线性代数库,目的是实现速度与易用性的良好平衡。
  • 提供与Matlab相似的高阶语法及功能。
  • 对于C++算法开发或代码在生产环境中的快速转换很有帮助。
  • 提供高效的vectors,matrices与cubes(一阶、二阶和三阶张量)的类实现;同时支持密集矩阵和稀疏矩阵
  • 支持整数、浮点数和复数。
  • 通过与LAPACK或其高性能替换(如多线程的 Intel MKL,或OpenBLAS),提供多种矩阵分解。
  • 复杂表达式评估程序(基于模板元编程)会自动地将多个操作组合以提高速度和效率
  • 可以自动使用OpenMP的多线程来加速计算耗时较大的操作
  • 在许可下可用,对于开源与闭源软件都是可用的。
  • 可用于机器学习、模式识别、计算机视觉、信号处理、生物信息学、统计学、金融学等等。

辣鸡英语水平,有些地方翻译得很生硬

一句话概括就是这个库很nb

安装

首先当然是去下载这个库

点击下面👇这个链接即可

Armadillo Download

进去之后是这样的

推荐下载Stable Version

下载之后,将文件解压到任意目录。比方说我就把它解压到了D盘根目录下的Armadillo目录。

打开文件夹,其中内容如下。

配置目录

打开Visual Studio,我这里用的是2017的版本。新建一个项目,配置如下图

进入项目后,在“调试”一栏找到项目属性,然后进行目录配置。具体配置过程如下:

  • 修改“配置”与“平台”

    在我这是要这样配置

注意!“平台”处不一定是像我这样选,网上有很多文章选的是x64,但由于我这里是建立了一个Win32项目,所以要选择Win32。

此处的设置很重要,错误的话可能会导致找不到头文件

  • 配置包含目录

    所谓包含目录就是头文件的目录。在“配置属性”中选择“VC++目录”,然后在“包含目录”一栏选择你的Armadillo的include目录。如下图。

  • 配置附加依赖项

    选择“链接器”的“输入”,在“附加依赖项”一栏,添加Armadillo中example_win64目录下的lapack_win64_MT.lib和blas_win64_MT.lib。

注意!实际需要的并不一定是这两个lib,这两个都是win64的,如果你是win32的项目,请使用win32的lib文件!下载地址见附录

配置完成,开始使用吧!

运行一下附带的example1.cpp

另外,还需要将labpack和blas对应的.dll文件放到编译生成的.exe所在目录处。否则.exe会无法运行。

附录

  • labpack和blas的下载地址,内含32位版和64位版

    Download labpack and blas

  • 不要尝试用Devcpp配置任何第三方库