
Eigen
Eigen库基本用法总结。
ClaireQi
这个作者很懒,什么都没留下…
展开
-
旋转矩阵之到底顺时针还是逆时针
最近发现的,逻辑上比较搞人的一点...明明是很简单的东西。 到底表示顺时针旋转还是逆时针旋转? 1.单坐标系:逆时针 比如当,表示在单坐标系下将点绕原点逆时针旋转30°。 记 ,没啥好说的,是我一贯的思路。 2.双坐标系:顺时针 这部分是我一开始没转过弯的地方。 是将坐标系顺时针旋转到坐标系 原本在x,y系的点(1,0),在u,v系内的坐标为(k,0.5)。 第二...转载 2020-12-21 16:50:01 · 4017 阅读 · 1 评论 -
Eigen库中进行矩阵间的变换
一、刚体旋转的表示方法有如下四种:旋转矩阵(R3x3) ------旋转矩阵R为正交阵(行或列向量都是两两正交的单位向量)。 四元数(Quaternion)------ 四元数可以只用四个元素就能表示旋转,在使用四元数进行旋转变换之前需要对四元数进行归一化。 旋转向量V -------也称:轴角,由一个旋转轴向量和旋转角组成。旋转轴向量需要标准化为单位向量。 欧拉角(Vector3d) -...转载 2019-12-19 14:04:02 · 1752 阅读 · 0 评论 -
Eigen学习笔记(16)-空间变换
原文:Eigen官网-Space transformations原创 2019-12-19 14:02:54 · 6997 阅读 · 0 评论 -
Eigen 中四元数、欧拉角、旋转矩阵、旋转向量
一、旋转向量1.0 初始化旋转向量:旋转角为alpha,旋转轴为(x,y,z)Eigen::AngleAxisd rotation_vector(alpha,Vector3d(x,y,z))1.1 旋转向量转旋转矩阵Eigen::Matrix3d rotation_matrix;rotation_matrix=rotation_vector.matrix();Eigen::Matrix...转载 2019-12-19 14:05:07 · 1638 阅读 · 0 评论 -
Eigen学习笔记(15)-稠密矩阵分解算法性能比较
原文:Eigen官网-Benchmark of dense decompositionsLLT是最快的方法。对于大规模过约束问题,Cholesky/LU分解的代价主要取决于对称协方差矩阵的计算。对于具有较大规模的问题,只有实现缓存友好阻塞策略的分解才能很好地扩展。其中包括LLT、PartialPivLU、HouseholderQR和BDCSVD。这解释了为什么对于4kx4k矩阵,House...原创 2019-12-18 14:40:43 · 1023 阅读 · 0 评论 -
Eigen学习笔记(14)-原位矩阵分解
原文:Eigen官网-Inplace matrix decompositions从Eigen3.3开始,LU、Cholesky和QR分解可以就地操作,即直接在给定的输入矩阵内操作。当处理大型矩阵或可用内存非常有限(嵌入式系统)时,此功能特别有用。为此,必须使用Ref<>矩阵类型实例化相应的分解类,并且必须使用输入矩阵作为参数构造分解对象。作为一个例子,让我们考虑一个局部旋转的就地L...原创 2019-12-18 14:34:03 · 554 阅读 · 0 评论 -
Eigen学习笔记(13)-解决最小二乘系统的问题
原文:Eigen官网–Solving linear least squares systems对于超定线性方程系统(An overdetermined system of equations):Ax = b,其是没有解的。在这种情况下,可以寻找一个接近于方程解的向量x,那么Ax-b的差值将会足够小。向量x就被称为least square solution。本篇文章将讨论三种线性方程求解方法:...原创 2019-12-18 14:04:35 · 1844 阅读 · 0 评论 -
Eigen学习笔记(12)-线性代数与矩阵分解
原文:Eigen官网-Linear algebra and decompositions本篇文章介绍了线性方程求解、矩阵分解,包括LU分解法,QR分解法,SVD(奇异值分解)、特征值分解等。The problem:对于一般形式如下的线性系统:[ Ax : = : b ]The solution:解决上述方程的方式一般是将矩阵A进行分解,你可以根据A的形式选择不同的分解方法。当然最基本的方法...原创 2019-12-17 11:23:36 · 3024 阅读 · 1 评论 -
Eigen学习笔记(11)-存储顺序
原文:Eigen官网-Storage orders对于矩阵和二维数组,有两种存储顺序:列优先和行优先。1. 行优先和列优先的存储矩阵的项构成一个二维网格。然而,当矩阵存储在内存中时,条目必须以某种方式线性排列。有两种主要的方法,按行和按列。假设矩阵:A = 8,2,2,99,1,4,43,5,4,5row-major order:按一行一行地进行存储,首先存储第一行,然后存储第二行...原创 2019-12-17 09:41:37 · 1272 阅读 · 0 评论 -
Eigen学习笔记(10)-混淆
原文:Eigen官网-Aliasing在Eigen中,当变量同时出现在左值和右值,赋值操作可能会带来混淆问题。比如:mat = 2 * mat,mat = mat.transpose() ,对于第一个表达式,是无害的,但是第二个表达式则会造成意想不到的后果。这一篇将解释什么是混淆,什么时候是有害的,怎么使用做。1. 举例如下是一个存在混淆的简单例子:MatrixXi mat(3,3); ...原创 2019-12-16 13:41:23 · 1511 阅读 · 0 评论 -
Eigen学习笔记(9)-整形和切片
原文:Eigen官网-Reshape and SlicingEigen并没有为matrix提供直接的Reshape和Slicing的API,但是这些特性可以通过Map类来实现。1. ReshapeReshape操作在保持元素不变的情况下修改matrix的尺寸大小。该方法不需要修改输入矩阵本身,而是使用类图在存储上创建一个不同的视图。下面是创建矩阵一维线性视图的典型示例:示例如下:Matr...原创 2019-12-16 11:29:36 · 2165 阅读 · 0 评论 -
Eigen学习笔记(8)-原生缓存的接口:Map类
原文:Eigen官网-Interfacing with raw buffers: the Map class1. 引言本篇文章将介绍Eigen如何与原生raw C/C++ 数组混合编程。当你从其他库中导入vectors或matrices时,这将会很有用。你偶尔也许会想将预先定义的一个数组在Eigen中作为vector或matrix进行使用,相比copy数据,更一般的方式是复用数据的内存,将它...原创 2019-12-16 10:58:28 · 554 阅读 · 0 评论 -
Eigen学习笔记(7)-归约、迭代器和广播
原文:Eigen官网-Reductions, visitors and broadcasting1. Reductions在Eigen中,Reduction是用来处理matrix或者array的某类特征,然后返回一个标量。1.1 求和sum()返回matrix或array中所有元素的和。1.2 范数计算L2范数 squareNorm(),等价于计算vector的自身点积,也等价于vec...原创 2019-12-13 13:40:36 · 917 阅读 · 0 评论 -
Eigen学习笔记(6)-高级初始化
原文:Eigen官网-Advanced initialization本篇介绍几种矩阵初始化的高级方法,重点介绍逗号初始化和特殊矩阵(单位阵、零阵)。1. 逗号初始化(1)Eigen提供了逗号操作符允许我们方便地为矩阵/向量/数组中的元素赋值。按从左到右,从上到下的顺序列出所有元素,并用逗号进行分隔。需要注意的是,对象的尺寸需要事先指定,而且所列出的元素数目要和操作对象的尺寸大小一致。(2)...原创 2019-12-13 11:06:30 · 1212 阅读 · 2 评论 -
Eigen学习笔记(5)-块操作
原文:Eigen官网-Block operationsEigen 为 Matrix 、Array 和 Vector提供了块操作方法。块是matrix或array中的矩形子部分。块区域可以被用作 左值 和 右值。1. 使用块在Eigen中最常用的块操作函数是 .block() 。Block operationVersion constructing a dynamic-size ...原创 2019-12-12 11:12:14 · 1166 阅读 · 0 评论 -
Eigen学习笔记(4)-Array类和元素级操作
原文:Eigen官网-The Array class and coefficient-wise operations1. 引言相对于Matrix提供的线性代数运算,Array类提供了更为一般的数组功能。Array类为元素级的操作提供了有效途径,比如点加(每个元素加值)或两个数据相应元素的点乘。且Array和Matrix之间很容易相互转换,所以相当于给矩阵提供更多的方法。也为使用者的不同需求提供...原创 2019-12-12 10:30:43 · 854 阅读 · 0 评论 -
Eigen学习笔记(3)-矩阵和向量的运算
原文:Eigen官网-Matrix and vector arithmetic本节内容主要介绍Eigen中关于矩阵、向量、标量之间的数学运算。1. 引言Eigen提供了matrix/vector的运算操作,既包括重载了c++的算术运算符+/-/*,也引入了一些特殊的运算比如点乘dot()、叉乘cross()等。对于Matrix类(matrix和vectors)这些操作只支持线性代数运算,比...原创 2019-12-11 11:16:54 · 5058 阅读 · 0 评论 -
Eigen学习笔记(2)-Matrix类
原文:Eigen官网-The Matrix class在Eigen中,所有的矩阵Matrix和向量Vector都是由Matrix类构造的。向量只不过是矩阵的特殊形式,只有一列(列向量)或者一行。1. Matrix类的参数Matrix有6个模板参数,主要使用前三个参数,剩下的三个参数有默认值。Matrix<typename Scalar, int RowsAtCompileTime, ...原创 2019-12-10 11:02:13 · 2519 阅读 · 0 评论 -
Eigen学习笔记(1)-入门
原文:Eigen官网-Getting started参考:“Eigen学习”“Eigen教程(1)”原创 2019-12-09 10:41:48 · 637 阅读 · 0 评论 -
ubuntu安装Eigen
Ubuntu 下安装Eigen有两种方式,一种是“apt-get”方式,一种是源码安装方式。1. apt-get安装1.1 执行安装命令打开终端窗口,输入如下命令:sudo apt-get install libeigen3-dev...原创 2019-12-06 14:58:19 · 6354 阅读 · 3 评论