前言
装这个库的原因是因为昨天写题写得有点自闭,所以就去复习一下很久之前学过的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
安装
首先当然是去下载这个库
点击下面👇这个链接即可
进去之后是这样的
推荐下载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位版
不要尝试用Devcpp配置任何第三方库