MatrixBase

This class is the base that is inherited by all matrix, vector, and related expression types. Most of the Eigen API is contained in this class, and its base classes. Other important classes for the Eigen API are Matrix, and VectorwiseOp.

该类在Eigen中是一个基类,使用模板不指定变量的具体类型的时侯可以使用该类

如:

//打印输入Eigen中定义的矩阵、向量等类型的x的第一行
template<typename Derived>
void printFirstRow(const Eigen::MatrixBase<Derived>& x)
{cout << x.row(0) << endl;
}

可以使用模板找到行数,列数,定义新的类型

template<class H_type>
void dosomething(Eigen::MatrixBase<H_type>){H_type S;Eigen::Matrix<double,R_type::RowsAtCompileTime,R_type::ColsAtCompileTime> K;enum {rows = Eigen::MatrixBase < H_type > ::RowsAtCompileTime,cols = Eigen::MatrixBase < H_type > ::ColsAtCompileTime};Eigen::Matrix<double,rows,cols>T;
}

Assert

在C++中assert(x)用来调试,如果x计算值为false则中断,输出调试信息,Eigen中也有

EIGEN_STATIC_ASSERT_FIXED_SIZE(TYPE) \\ passes if TYPE is fixed size.
EIGEN_STATIC_ASSERT_DYNAMIC_SIZE(TYPE) \\ passes if TYPE is dynamic size.
EIGEN_STATIC_ASSERT_LVALUE(Derived) \\ failes if Derived is read-only.
EIGEN_STATIC_ASSERT_ARRAYXPR(Derived) \\ passes if Derived is an array expression.
EIGEN_STATIC_ASSERT_SAME_XPR_KIND(Derived1, Derived2) \\ failes if the two expressions are an array one and a matrix one.
EIGEN_STATIC_ASSERT_VECTOR_ONLY(TYPE) \\ passes if TYPE must be a vector type.
EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(TYPE, SIZE) \\ passes if TYPE must be a vector of the given size.
EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(TYPE, ROWS, COLS) \\ passes if TYPE must be a matrix with given rows and columns.
EIGEN_STATIC_ASSERT_SAME_VECTOR_SIZE(TYPE0,TYPE1) \\ fails if the two vector expression types must have different sizes.
EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE(TYPE0,TYPE1) \\ fails if the two matrix expression types must have different sizes.
EIGEN_STATIC_ASSERT_SIZE_1x1(TYPE) \\ fails if TYPE cannot be an 1x1 expression.

对齐

在生成定长的Matrix或Vector对象时,需要开辟内存,调用默认构造函数,内存位数没对齐就会导致程序运行出错,对于这种情况需要自己定义new的operator,但是Eigen中定义了语句“EIGEN_MAKE_ALIGNED_OPERATOR_NEW”放入类中(结尾没有“;”)这样操作之后不用担心指针对齐问题

such as

class Foo
{...Eigen::Vector2d v;
public:EIGEN_MAKE_ALIGNED_OPERATOR_NEW...
};
...
Foo *foo = new Foo;

quaternion

Eigen::quaternion不同于其它matrix,按照类似于向量类型输出需要q.coeffs(),其包括x,y,z,w四个元素,赋值或是调用需用类似q.x()的用法

Eigen::Quaterniond q;
q.x() = 1;
q.y() = 2;
q.z() = 3;
q.w() = 4;
std::cout << q.coeffs() << std::endl;

normalize() 和 normalized()

normalize()对使用它的变量单位化,无返回

normalized() 返回使用它变量的单位化后的值,但是使用它的变量无变化

//q1(1,2,3,4), q2(3,2,1,4)    cout << q2.coeffs() << endl;q2.normalize();cout << q2.coeffs() << endl;Eigen::Quaternion<double> q3;q3 = q1.normalized();cout << q1.coeffs() << endl;cout << q3.coeffs() << endl;

out:

3
2
1
4
0.547723
0.365148
0.182574
0.730297
1
2
3
4
0.182574
0.365148
0.547723
0.730297

Eigen相关(MatrixBase, Assert, ALIGNED. quaternion, normalize()和normalized)相关推荐

  1. boost::multiprecision模块Eigen相关的测试程序

    boost::multiprecision模块Eigen相关的测试程序 实现功能 C++实现代码 实现功能 boost::multiprecision模块Eigen相关的测试程序 C++实现代码 #i ...

  2. Eigen 使用碎碎记_norm、normalize、normalized的区别

    本文转载自Eigen中norm.normalize.normalized的区别 norm.normalize.normalized的区别 # include <eigen3/Eigen/Dens ...

  3. 【C++】Eigen中norm、normalize、normalized的区别

    参考: https://blog.csdn.net/m0_56348460/article/details/117386857 https://blog.csdn.net/huangjunsheng1 ...

  4. Eigen中norm、normalize、normalized的区别

    https://blog.csdn.net/m0_56348460/article/details/117386857 对于Vector,norm返回的是向量的二范数 Vector2d vec(3.0 ...

  5. Normalize 和 normalized

    首先说明下,normalized的是vector的属性,而Normalize 是vector的方法 normalized和Normalize 都是可读的,读到的值是单位向量的值,只是nomalized ...

  6. OpenCV Eigen Sophus PCL G2O

    外用库学习笔记 OpenCV 需知 OpenCV的结构 OpenCV modules 头文件 数据类型 示例 显示图片 视频 从摄像头中读取 读取文件并存放 读取配置文件 保存图片到文件 图像的像素 ...

  7. OpenCV与Eigen (C++)【学习备忘】

    可点击OpenCV来自简书 /// OpenCV官网 OpenCV中的单位 棋盘格边长尺寸:mm [机器视觉] OPENCV 一.各个模块简介 二 .数据类型(点类.size类.向量类.矩形类.指针类 ...

  8. Eigen::Matrix

    1. 矩阵的定义 #include <Eigen/Dense> // 基本函数只需要包含这个头文件 Matrix<double, 3, 3> A; // 固定了行数和列数的矩阵 ...

  9. Matlab移植到Eigen用到的词条

    同型矩阵运算满足加法交换律.结合律:并存在单位元.逆元.和0元,为同型矩阵对加法的交换环. Eigen的简单运算参考:http://blog.163.com/jiaqiang_wang/blog/st ...

最新文章

  1. layer的一种用法,自己画出弹出框样式
  2. [原]Android打包之Gradle打包
  3. Kotlin协程简介(一)
  4. [react] 在React中我们怎么做静态类型检测?都有哪些方法可以做到?
  5. java如何关闭线程池_如何优雅的关闭Java线程池
  6. Objective-c的内存管理MRC与ARC
  7. 2021-2025年中国一氧化碳烟雾报警器行业市场供需与战略研究报告
  8. HDU 1269 迷宫城堡 (强连通分量,常规)
  9. 计算机五笔教案ppt,计算机基础课件五笔打字.ppt
  10. Matlab2018a破解出现licensing error:-8523
  11. 左手补贴右手社交 杀入直播红海的拼多多会有机会吗?
  12. 获取验证码以及验证验证码
  13. miui中的网页链接调用服务器,miui新增网页链接调用服务有什么用?
  14. 从零基础入门Linux系统
  15. HTPPS和HTTP的概念和区别
  16. fir.im Weekly - 如何打造 Github 「爆款」开源项目
  17. [ElementPlus] 多标签页切换
  18. Cocos2D-x 入门(1)
  19. 魔兽世界怀旧服务器无限刷怪点,魔兽世界怀旧服法师A怪升级路线地点 法师刷怪速升60全攻略...
  20. 用java汽车美容店管理系统_洗车店 一个较为简单的洗车店管理系统 联合开发网 - pudn.com...

热门文章

  1. 程序员是如何泡妹子的
  2. 【软件安装】linux下安装ansys
  3. python笑脸识别_OpenCV检测篇(二)——笑脸检测
  4. 1220F - Gardener Alex(笛卡尔树)
  5. android魅族手机,最封闭的Android系统-魅族Flyme
  6. Linux C++ 通信 - 信号的概念、认识、处理动作
  7. SQLPro for MSSQL for Mac(MSSQL数据库客户端)
  8. 工作最轻松是在哪几年
  9. iOS-砸壳篇(两种砸壳方式)
  10. OneAPM 云监控部署与试用体验