eigen库使用_eigen3

eigen库使用_eigen3Eigen库的安装1.VisualStudio2017安装eigen库1.1下载eigen库1.2配置1.3运行测试1.VisualStudio2017安装eigen库1.1下载eigen库eigen官网下载地址找到自己需要的版本下载,我下载的是3.3.9,箭头指向的zip。解压缩得到文件eigen-3.3.9,放到自己想放置的路径下(后面会引用此处的路径)。1.2配置在VS2017中新建一个空项目,取名为“eigen_demo”。输入以下测试

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

1. Visual Studio 2017 安装 eigen 库

1.1 下载 eigen 库

eigen官网下载地址
在这里插入图片描述

找到自己需要的版本下载,我下载的是3.3.9,箭头指向的 zip。
解压缩得到文件eigen-3.3.9,放到自己想放置的路径下(后面会引用此处的路径)。

1.2 配置

在VS 2017中新建一个空项目,取名为“eigen_demo”。输入以下测试代码(官方测试代码):

#include <iostream>
#include <Eigen/Dense>
using namespace Eigen;
using namespace std;

int main()
{ 
   
#pragma region Addition and subtraction
	Matrix2d a;
	a << 1, 2,
		3, 4;
	MatrixXd b(2, 2);
	b << 2, 3,
		1, 4;
	std::cout << "a + b =\n" << a + b << std::endl;
	std::cout << "a - b =\n" << a - b << std::endl;
	std::cout << "Doing a += b;" << std::endl;
	a += b;
	std::cout << "Now a =\n" << a << std::endl;
	Vector3d v(1, 2, 3);
	Vector3d w(1, 0, 0);
	std::cout << "-v + w - v =\n" << -v + w - v << std::endl;
#pragma endregion

#pragma region Scalar multiplication and division
	// Matrix2d a; //duplicate definition
	a << 1, 2,
		3, 4;
	// Vector3d v(1, 2, 3); //duplicate definition
	std::cout << "a * 2.5 =\n" << a * 2.5 << std::endl;
	std::cout << "0.1 * v =\n" << 0.1 * v << std::endl;
	std::cout << "Doing v *= 2;" << std::endl;
	v *= 2;
	std::cout << "Now v =\n" << v << std::endl;
#pragma endregion

#pragma region Transposition and conjugation
	MatrixXcf a_matrix = MatrixXcf::Random(2, 2);
	cout << "Here is the matrix a_matrix\n" << a_matrix << endl;
	cout << "Here is the matrix a_matrix^T\n" << a_matrix.transpose() << endl;
	cout << "Here is the conjugate of a_matrix\n" << a_matrix.conjugate() << endl;
	cout << "Here is the matrix a_matrix^*\n" << a_matrix.adjoint() << endl;

	//This is the so-called aliasing issue
	Matrix2i a_matrix2;
	a_matrix2 << 1, 2, 3, 4;
	cout << "Here is the matrix a_matrix2:\n" << a_matrix2 << endl;
	// a_matrix2 = a_matrix2.transpose(); // !!! do NOT do this !!!
	cout << "and the result of the aliasing effect:\n" << a_matrix2 << endl;
#pragma endregion

#pragma region Matrix-matrix and matrix-vector multiplication
	Matrix2d mat;
	mat << 1, 2,
		3, 4;
	Vector2d u_1(-1, 1), v_1(2, 0);
	std::cout << "Here is mat*mat:\n" << mat * mat << std::endl;
	std::cout << "Here is mat*u_1:\n" << mat * u_1 << std::endl;
	std::cout << "Here is u_1^T*mat:\n" << u_1.transpose()*mat << std::endl;
	std::cout << "Here is u_1^T*v:\n" << u_1.transpose()*v_1 << std::endl;
	std::cout << "Here is u_1*v_1^T:\n" << u_1 * v_1.transpose() << std::endl;
	std::cout << "Let's multiply mat by itself" << std::endl;
	mat = mat * mat;
	std::cout << "Now mat is mat:\n" << mat << std::endl;
#pragma endregion 

#pragma region Dot product and cross product
	Vector3d v_2(1, 2, 3);
	Vector3d w_2(0, 1, 2);
	cout << "Dot product: " << v_2.dot(w_2) << endl;
	double dp = v_2.adjoint()*w_2; // automatic conversion of the inner product to a scalar
	cout << "Dot product via a matrix product: " << dp << endl;
	cout << "Cross product:\n" << v_2.cross(w_2) << endl;
#pragma endregion

#pragma region Basic arithmetic reduction operations
	Eigen::Matrix2d mat_3;
	mat_3 << 1, 2,
		3, 4;
	cout << "Here is mat_3.sum(): " << mat_3.sum() << endl;
	cout << "Here is mat_3.prod(): " << mat_3.prod() << endl;
	cout << "Here is mat_3.mean(): " << mat_3.mean() << endl;
	cout << "Here is mat_3.minCoeff(): " << mat_3.minCoeff() << endl;
	cout << "Here is mat_3.maxCoeff(): " << mat_3.maxCoeff() << endl;
	cout << "Here is mat_3.trace(): " << mat_3.trace() << endl;

	Matrix3f m = Matrix3f::Random();
	std::ptrdiff_t i, j;
	float minOfM = m.minCoeff(&i, &j);
	cout << "Here is the matrix m:\n" << m << endl;
	cout << "Its minimum coefficient (" << minOfM
		<< ") is at position (" << i << "," << j << ")\n\n";
	RowVector4i v_4 = RowVector4i::Random();
	int maxOfV = v_4.maxCoeff(&i);
	cout << "Here is the vector v_4: " << v_4 << endl;
	cout << "Its maximum coefficient (" << maxOfV
		<< ") is at position " << i << endl;
#pragma endregion

	/**************This is the end of example codes in Eigen3 online document. **********************/
	system("pause");
}

此时项目默认为“DEBUG”模式,活动平台为“x64″。
在这里插入图片描述
如果后面更改了模式或平台,均要重新执行全部以下步骤。

鼠标右击项目 -> 选择属性 -> C/C++ -> 常规 -> 附加包含目录,将解压后的库文件夹所在路径:“ \Eigen 库\eigen-3.3.9 ”添加进去,点击确定。
在这里插入图片描述

再次打开此页面,链接器 -> 常规 -> 附加库目录,将路径“\Eigen 库\eigen-3.3.9”再次添加,点击确定。
在这里插入图片描述

1.3 运行测试

运行程序,看到正确运行的输出,Eigen库链接成功!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180246.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SSH 学习笔记[通俗易懂]

    SSH 学习笔记[通俗易懂]前言:一直对SSH的概念比较陌生,由此而惧怕SSH,因此找来部分博客进行学习,将一些重难点予以记录。文章目录1、SSH原理简介1、SSH原理简介SSH叫安全外壳协议(SecureShell),是一种加密的网络传输协议,可在不安全的网络中网络服务提供安全的传输环境。它通过在网络中创建安全隧道来实现SSH客户端和服务器之间的连接。SSH是一种协议,存在多种实现,既有商业实现,也有开源实现(OSSH,OpenSSH)。公钥:ssh-keygen是安全外壳(SSH)协议套件

    2022年6月24日
    28
  • linux futex浅析[通俗易懂]

    linux futex浅析[通俗易懂]Futex,FastUserspacemuTEXes,作为linux下的一种快速同步(互斥)机制,已经存在了很长一段时间了(sincelinux2.5.7)。它有什么优势?又提供了怎样一些功能,本文就简单探讨一下。futex诞生之前在futex诞生之前,linux下的同步机制可以归为两类:用户态的同步机制和内核同步机制。用户态的同步机制基本上就是利用原子指令实现的spinlock。最简单的实现就是使用一个整型数,0表示未上锁,1表示已上锁。trylock操作就利用原子指令尝试将0改为1

    2022年9月21日
    3
  • 纯前端实现—用户注册登录界面

    纯前端实现—用户注册登录界面理想实现效果:1.注册界面的实现<!DOCTYPEhtml><htmllang=”en”><head><metacharset=”UTF-8″><title>注册界面</title><linkrel=”stylesheet”href=”RESETCSS.css”><style>div{width:300px;

    2022年4月19日
    90
  • SublimeText3 常用快捷键!for mac 清晰明了!

    SublimeText3 常用快捷键!for mac 清晰明了!符号说明 符号 说明 ⌘ command ⌃ control ⌥ option ⇧ shift ↩ enter ⌫ delete 打开/关闭/前往 快捷键 功能

    2022年5月24日
    44
  • DLL注入

    DLL注入DLL注入DLL注入原理dll注入实现过程功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入DLL注入原理在Windows操作系统中,运行的每一个进程都生活在自己的程序空间中(保护模式),每一个进程都认为自己拥有整个机器的控制权,

    2022年5月17日
    64
  • 虚拟机vmware安装步骤(如何在虚拟机安装软件)

    作者:seriouszyx独立博客记录了日常学习总结代码均可在Github上找到(求Star)本文讲解如何在虚拟机上安装KaliLinux,希望对大家有所帮助。准备:一台电脑,VMware(VMware安装教程)一、下载系统镜像文件1.首先下载系统镜像,进入kali官网,在Downloads中选择DownloadKaliLinux,如下图所示。…

    2022年4月10日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号