Win7系统Visual Studio下的armadillo环境配置

2023-10-18 16:59

本文主要是介绍Win7系统Visual Studio下的armadillo环境配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Armadillo 环境配置

Armadillo是一款对于C++的线性代数库,可以进行矩阵运算,在MATLAB转C/C++时可以更加方便。下面是armadillo的安装和配置。

这里写图片描述

首先,下载armadillo,地址(http://arma.sourceforge.net/)。

这里选择稳定版本armadillo-8.100.1,解压,将其中的include文件夹复制到指定的文件夹下。(这里将其拷贝至D:/Armadillo)

修改D:\Armadillo\include\armadillo_bits中的config.hpp

这里写图片描述

取消以下两句中的注释符号,如上图所示。

#define ARMA_USE_LAPACK
#define ARMA_USE_BLAS

这样表示使用LAPACK和BLAS两个库。1

BLAS的官方文档介绍:

The BLAS (Basic Linear Algebra Subprograms)are routines that provide standard building blocks for performing basic vectorand matrix operations. The Level 1 BLAS perform scalar, vector andvector-vector operations, the Level 2 BLAS perform matrix-vector operations,and the Level 3 BLAS perform matrix-matrix operations. Because the BLAS areefficient, portable, and widely available, they are commonly used in thedevelopment of high quality linear algebra software, LAPACK for example.

LAPACK的官方文档介绍:

LAPACK is written in Fortran 90 and providesroutines for solving systems of simultaneous linear equations, least-squaressolutions of linear systems of equations, eigenvalue problems, and singularvalue problems. The associated matrix factorizations (LU, Cholesky, QR, SVD,Schur, generalized Schur) are also provided, as are related computations suchas reordering of the Schur factorizations and estimating condition numbers.Dense and banded matrices are handled, but not general sparse matrices. In allareas, similar functionality is provided for real and complex matrices, in bothsingle and double precision.

需要下载LAPACK和BLAS两个库,实际上armadillo自带这两个库,在.\armadillo-8.100.1\examples\lib_win64中,但是是64位,因此需要下载32位的这两个库。

下载完成后,在visual studio中配好lib目录,include目录,附加依赖项。(配置方法类似上文opencv库的配法)。运行程序,出错。报错如下:

这里写图片描述

提示没有lapack32位的动态链接库dll文件。下载lapack_win32_MTd.dll和blas_win32_MTd.dll以及不带d的版本(release版)的dll,拷贝至指定目录,此处是Windows中的SysWOW64。再运行程序,点击生成解决方案,查看结果。

例程:

#include<opencv2/opencv.hpp>
#include <armadillo>
#include <iostream>
using namespace cv;
using namespace arma;
using namespace std;
int main()
{arma::matA = arma::randu<mat>(5,5);cout<<"A= "<<A<<endl;cout<<"det(A)= "<<arma::det(A)<<endl;cv::Matimg = cv::imread("test.jpg",1);cv::Matgrey;cv::cvtColor(img,grey, CV_BGR2GRAY);cv::Matsobelx; cv::Sobel(grey,sobelx, CV_32F, 1, 0);double minVal, maxVal; cv::minMaxLoc(sobelx,&minVal, &maxVal); //find minimum and maximum intensities cv::Matdraw; sobelx.convertTo(draw,CV_8U, 255.0/(maxVal - minVal), -minVal * 255.0/(maxVal - minVal)); cv::namedWindow("src",CV_WINDOW_AUTOSIZE); cv::imshow("src",img); cv::namedWindow("dst",CV_WINDOW_AUTOSIZE); cv::imshow("dst",draw);cv::waitKey(); return 0;  
}  

该例程即再上文中测试opencv的基础上,include进armadillo,并且using namespace arma;注意,由于armadillo和opencv中都有Mat类型,因此同时usingnamespace cv 和arma会出现冲突,因此需要域运算符。

结果如下(只显示console中的结果):

这里写图片描述

成功啦~哈哈哈

附录:MATLAB和armadillo的转换关系

这里写图片描述
这里写图片描述

Reference:

http://arma.sourceforge.net/docs.html
http://www.netlib.org/blas/
http://www.netlib.org/lapack/

这里写图片描述


  1. 【注:LAPACK是LinearAlgebra PACKage的缩写,由其官方文档(如下)可以看出,LAPACK可以解决线性方程,最小二乘法,特征值分解,以及各类矩阵分解,如LU,QR,Cholesky,svd等。而BLAS是Basic Linear Algebra Subprograms的缩写,可以看出,BLAS提供较为底层的矢量和矩阵运算,Level1标量,矢量,矢量-矢量,Level2 矢量-矩阵,Level3 矩阵-矩阵,LAPACK也是基于BLAS】 ↩

这篇关于Win7系统Visual Studio下的armadillo环境配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/233949

相关文章

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

maven私服配置全过程

《maven私服配置全过程》:本文主要介绍maven私服配置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录使用Nexus作为 公司maven私服maven 私服setttings配置maven项目 pom配置测试效果总结使用Nexus作为 公司maven私