Clion 使用 armadillo 配置方法

article/2025/8/20 22:11:35

Clion 使用 armadillo 配置方法

jetbrains 全家桶是我的最爱 但是C++的编写网上都是visual studio 的教程,尤其是对于库文件的引用,Clion很少有指导,最近需要将python的程序转为C++,用到了armadillo 矩阵库, 但是网上对于armadillo的使用再Clion中都是胡说八道。下面我来介绍一下正确的做法

第一步 下载 Clion

		来这里的应该都下好了,不多赘述

第二步 下载 armadillo

		百度搜索 armadillo 选择稳定版下载(这种东西,不是越新越好)

第三步 解压文件 在Clion中创建项目

  • 注意我这里创建了一个文件夹 include 放包含的文件
    在这里插入图片描述
    下面是cmake list 编写
cmake_minimum_required(VERSION 3.17)
project({xxx})set(CMAKE_CXX_STANDARD 14)
include_directories(include/armadillo/include) # 引用头文件
link_directories(include/armadillo/examples/lib_win64) #添加依赖
add_executable({xxx} main.cpp) 
target_link_libraries({xxx} libopenblas.lib) #添加库文件

第四步 最重要的一步

在这里插入图片描述
在lib_win64的文件夹中把 libopenblas.dill 复制到 \cmake-build-debug 的目录下

第五步 运行示例文件

#include <iostream>
#include <armadillo>using namespace std;
using namespace arma;// Armadillo documentation is available at:
// http://arma.sourceforge.net/docs.html// NOTE: the C++11 "auto" keyword is not recommended for use with Armadillo objects and functionsint
main(int argc, char** argv){cout << "Armadillo version: " << arma_version::as_string() << endl;mat A(2,3);  // directly specify the matrix size (elements are uninitialised)cout << "A.n_rows: " << A.n_rows << endl;  // .n_rows and .n_cols are read onlycout << "A.n_cols: " << A.n_cols << endl;A(1,2) = 456.0;  // directly access an element (indexing starts at 0)A.print("A:");A = 5.0;         // scalars are treated as a 1x1 matrixA.print("A:");A.set_size(4,5); // change the size (data is not preserved)A.fill(5.0);     // set all elements to a particular valueA.print("A:");A = { { 0.165300, 0.454037, 0.995795, 0.124098, 0.047084 },{ 0.688782, 0.036549, 0.552848, 0.937664, 0.866401 },{ 0.348740, 0.479388, 0.506228, 0.145673, 0.491547 },{ 0.148678, 0.682258, 0.571154, 0.874724, 0.444632 },{ 0.245726, 0.595218, 0.409327, 0.367827, 0.385736 } };A.print("A:");// determinantcout << "det(A): " << det(A) << endl;// inversecout << "inv(A): " << endl << inv(A) << endl;// save matrix as a text fileA.save("A.txt", raw_ascii);// load from filemat B;B.load("A.txt");// submatricescout << "B( span(0,2), span(3,4) ):" << endl << B( span(0,2), span(3,4) ) << endl;cout << "B( 0,3, size(3,2) ):" << endl << B( 0,3, size(3,2) ) << endl;cout << "B.row(0): " << endl << B.row(0) << endl;cout << "B.col(1): " << endl << B.col(1) << endl;// transposecout << "B.t(): " << endl << B.t() << endl;// maximum from each column (traverse along rows)cout << "max(B): " << endl << max(B) << endl;// maximum from each row (traverse along columns)cout << "max(B,1): " << endl << max(B,1) << endl;// maximum value in Bcout << "max(max(B)) = " << max(max(B)) << endl;// sum of each column (traverse along rows)cout << "sum(B): " << endl << sum(B) << endl;// sum of each row (traverse along columns)cout << "sum(B,1) =" << endl << sum(B,1) << endl;// sum of all elementscout << "accu(B): " << accu(B) << endl;// trace = sum along diagonalcout << "trace(B): " << trace(B) << endl;// generate the identity matrixmat C = eye<mat>(4,4);// random matrix with values uniformly distributed in the [0,1] intervalmat D = randu<mat>(4,4);D.print("D:");// row vectors are treated like a matrix with one rowrowvec r = { 0.59119, 0.77321, 0.60275, 0.35887, 0.51683 };r.print("r:");// column vectors are treated like a matrix with one columnvec q = { 0.14333, 0.59478, 0.14481, 0.58558, 0.60809 };q.print("q:");// convert matrix to vector; data in matrices is stored column-by-columnvec v = vectorise(A);v.print("v:");// dot or inner productcout << "as_scalar(r*q): " << as_scalar(r*q) << endl;// outer productcout << "q*r: " << endl << q*r << endl;// multiply-and-accumulate operation (no temporary matrices are created)cout << "accu(A % B) = " << accu(A % B) << endl;// example of a compound operationB += 2.0 * A.t();B.print("B:");// imat specifies an integer matriximat AA = { { 1, 2, 3 },{ 4, 5, 6 },{ 7, 8, 9 } };imat BB = { { 3, 2, 1 }, { 6, 5, 4 },{ 9, 8, 7 } };// comparison of matrices (element-wise); output of a relational operator is a umatumat ZZ = (AA >= BB);ZZ.print("ZZ:");// cubes ("3D matrices")cube Q( B.n_rows, B.n_cols, 2 );Q.slice(0) = B;Q.slice(1) = 2.0 * B;Q.print("Q:");// 2D field of matrices; 3D fields are also supportedfield<mat> F(4,3); for(uword col=0; col < F.n_cols; ++col)for(uword row=0; row < F.n_rows; ++row){F(row,col) = randu<mat>(2,3);  // each element in field<mat> is a matrix}F.print("F:");return 0;}

http://chatgpt.dhexx.cn/article/OqBOlIMV.shtml

相关文章

Armadillo C++ Library

Armadillo 简介 Armadillo C Library是一种C的线性代数库&#xff08;矩阵数学&#xff09;&#xff0c;具有良好的平衡速度与易用性。其底层可以调用不同的BLAS和LAPACK库来提高效率&#xff0c;同时利用模板编程提高了代码的操作性 官网下载链接&#xff1a;点这里下载 Vi…

C++中armadillo矩阵库使用说明

在http://blog.csdn.net/piaoxuezhong/article/details/58055709博文中介绍了eigen矩阵库的使用&#xff0c;这里介绍另一种矩阵库&#xff1a;armadillo~ Armadillo&#xff1a;C下的Matlab替代品 armadillo是目前使用比较广的C矩阵运算库之一&#xff0c;许多Matlab的矩阵操…

armadillo库安装教程

目录 armadillo库功能介绍 armadillo库安装 vs中添加步骤 测试 armadillo库功能介绍 在c编程中&#xff0c;我们在进行一些算法运算经常会面对矩阵计算&#xff0c;c的标准库中是没有关于矩阵运算的库的&#xff0c;在面对矩阵计算我们只能自己编写相关代码进行计算&#xf…

armadillo使用,armadillo提高编译效率和速度

Armadillo是一个全面的、基于模板的 C 线性代数库&#xff0c;设计有 LAPACK 和 ATLAS 库的替代接口。 armadillo使用工具旨在提供速度和易用性&#xff0c;以及类似于 Matlab 的熟悉语法(或 API)。 armadillo使用允许您编写可以集成到组件或应用程序中的各种类型的数学函数。它…

C++ Armadillo矩阵库的安装与基本用法

文章目录 Armadillo安装入门案例直接赋值切片常用函数 Armadillo 安装 Armadillo是一个具有Matlab风格的线性代数包。下载之后解压到任意文件夹&#xff0c;然后对VS工程进行设置。 菜单栏生成->配置管理器&#xff0c;将平台改为x64右键项目名称->属性(快捷键ShiftF4…

一个常见的大数据平台架构

这是一个典型的大数据架构&#xff0c;且对架构进行了「分层」&#xff0c;分为「数据源层」、「数据传输层」、「数据存储层」、「编程模型层」和「数据分析层」&#xff0c;如果继续往上走的话&#xff0c;还有「数据可视化层」和「数据应用层」。

大数据平台架构实践

说明 本篇博客整理自参考内容&#xff0c;完整内容请查看原文章&#xff1b; 技术选型 MOLAP 与Druid相类似的实时数据分析工具&#xff0c;还有Linkedln的Pinot和eBay的Kylin&#xff0c;它们都是基于Java开发的。Druid相对比较轻量级&#xff0c;用的人也多&#xff0c;毕…

网易大数据平台架构实践分享!

随着网易云音乐、新闻、考拉、严选等互联网业务的快速发展&#xff0c;网易开始加速大数据平台建设&#xff0c;以提高数据获取速度&#xff0c;提升数据分析效率&#xff0c;更快发挥数据价值。 本次演讲主要分享网易如何围绕和改造开源技术&#xff0c;以产品化思维打造网易自…

详解大数据平台架构

目录: 什么是大数据 Hadoop介绍-HDFS、MR、Hbase 大数据平台应用举例-腾讯 公司的大数据平台架构 “就像望远镜让我们能够感受宇宙,显微镜让我们能够观测微生物一样,大数据正在改变我们的生活以及理解世界的方式……”。 大数据的4V特征 公司的“大数据” 随着公司业…

京东金融大数据平台架构(附82页PPT)

公众号推文规则变了&#xff0c;点击上方 "数据社", 设为星标 后台回复【加群】&#xff0c;申请加入数据学习交流群 大家好&#xff0c;我是一哥&#xff0c;给大家分享一下京东金融大数据分析平台总体架构介绍&#xff0c;废话不说&#xff0c;干货收藏吧&#xff…

大数据平台架构设计探究

本文首发于 vivo互联网技术 微信公众号 链接&#xff1a;https://mp.weixin.qq.com/s/npRRRDqNUHNjbybliFxOxA 作者&#xff1a;刘延江 近年来&#xff0c;随着IT技术与大数据、机器学习、算法方向的不断发展&#xff0c;越来越多的企业都意识到了数据存在的价值&#xff0c;将…

乡村振兴大数据平台架构方案(附下载)

迎加入星球下载所有资料&#xff0c;转发朋友圈截图回复666亦可下载 加入星球&#xff0c;好资料一直有 推荐阅读&#xff1a; 世界的真实格局分析&#xff0c;地球人类社会底层运行原理 不是你需要中台&#xff0c;而是一名合格的架构师&#xff08;附各大厂中台建设PPT&#…

大数据平台架构+ETL

1 ETL&#xff0c;Extraction-Trasformation-Loading&#xff0c;即数据读取&#xff0c;转换&#xff0c;装载的过程&#xff0c;是构建数据仓库的重要环节。 ETL是将业务系统的数据经过抽取&#xff0c;清洗转换之后加载到数据仓库的过程&#xff0c;目的是将企业中的额分散的…

百度、阿里、腾讯平台架构都熟悉,小米大数据平台架构OLAP架构演进是否了解

阿里、百度、腾讯的大数据平台架构都有很多地方有介绍了&#xff0c;接下来给大家深入了解小米大数据平台架构OLAP架构演进 全网最详细的Hadoop文章系列&#xff0c;强烈建议收藏加关注&#xff01; 2021大数据领域优质创作博客&#xff0c;带你从入门到精通&#xff0c;该博客…

大数据平台架构的层次划分

1. 数据源层&#xff1a;包括传统的数据库&#xff0c;数据仓库&#xff0c;分布式数据库&#xff0c;NOSQL数据库&#xff0c;半结构化数据&#xff0c;无结构化数据&#xff0c;爬虫&#xff0c;日志系统等&#xff0c;是大数据平台的数据产生机构。 2. 数据整理层&#xff…

常见的大数据平台架构设计思路

近年来&#xff0c;随着IT技术与大数据、机器学习、算法方向的不断发展&#xff0c;越来越多的企业都意识到了数据存在的价值&#xff0c;将数据作为自身宝贵的资产进行管理&#xff0c;利用大数据和机器学习能力去挖掘、识别、利用数据资产。如果缺乏有效的数据整体架构设计或…

大数据平台架构浅析——以讯飞大数据平台Odeon为例

文章目录 大数据平台架构解析——以讯飞大数据平台Odeon为例定义功能数据采集数据开发数据分析数据编程补充 大数据平台架构解析——以讯飞大数据平台Odeon为例 定义 Odeon大数据平台以全图形化Web操作的形式为用户提供一站式的大数据能力&#xff1a;包括数据采集、任务编排、…

浅谈大数据平台架构设计

全文共3735个字&#xff0c;建议8分钟阅读 近年来&#xff0c;随着IT技术与大数据、机器学习、算法方向的不断发展&#xff0c;越来越多的企业都意识到了数据存在的价值&#xff0c;将数据作为自身宝贵的资产进行管理&#xff0c;利用大数据和机器学习能力去挖掘、识别、利用数…

大数据平台架构包含哪些功能

为了满足企业对于数据的各种需求&#xff0c;需要基于大数据技术构建大数据平台。结合大数据在企业的实际应用场景&#xff0c;如下图所示的大数据平台架构所示&#xff1a; 最上层为应用提供数据服务与可视化&#xff0c;解决企业实际问题。第2层是大数据处理核心&#xff0c;…

大数据平台层级架构图

主流数据平台架构 一般包含三个层级&#xff0c;ODS层、数据仓库层、数据应用层。 业务系统的操作和日志数据抽取到ODS层&#xff0c;ODS的数据经过ETL过程&#xff08;抽取Extraction&#xff0c;转化Transformation&#xff0c;加载Loading&#xff09;进入数据仓库&#xff…