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

相关文章

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Debian系和Redhat系防火墙配置方式

《Debian系和Redhat系防火墙配置方式》文章对比了Debian系UFW和Redhat系Firewalld防火墙的安装、启用禁用、端口管理、规则查看及注意事项,强调SSH端口需开放、规则持久化,... 目录Debian系UFW防火墙1. 安装2. 启用与禁用3. 基本命令4. 注意事项5. 示例配置R

PyCharm中配置PyQt的实现步骤

《PyCharm中配置PyQt的实现步骤》PyCharm是JetBrains推出的一款强大的PythonIDE,结合PyQt可以进行pythion高效开发桌面GUI应用程序,本文就来介绍一下PyCha... 目录1. 安装China编程PyQt1.PyQt 核心组件2. 基础 PyQt 应用程序结构3. 使用 Q

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Redis MCP 安装与配置指南

《RedisMCP安装与配置指南》本文将详细介绍如何安装和配置RedisMCP,包括快速启动、源码安装、Docker安装、以及相关的配置参数和环境变量设置,感兴趣的朋友一起看看吧... 目录一、Redis MCP 简介二、安www.chinasem.cn装 Redis MCP 服务2.1 快速启动(推荐)2.

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,