// Eigen 中所有向量和矩阵都是Eigen::Matrix它是一個模板类。它的前三个参数为:数据类型行,列
// 如果不确定矩阵大小可以使用动态大小的矩阵 建议大矩阵使用
// 这种类型还有很多,我們不一一列举
// 输入数据(初始化)
// 通过该操作符即可以一个一个元素的进行赋值
// 也可以一块一块的赋值。
// 另外也可以使用下标进行赋值
// 正常矩阵形式输出
// 用()访问矩阵中的元素
// 针对向量还提供”[]”操作符,注意矩阵则不可如此使用
// 矩阵和向量相乘(实际上仍是矩阵和矩阵)
// 但是在Eigen里你不能混合两种不同类型的矩阵像这样是错的
// 同样你不能搞错矩阵的维度
// 试着取消下面的注释,看看Eigen会报什么错
// 四则运算就鈈演示了直接用+-*/即可。
// 实对称矩阵可以保证对角化成功
// N的大小在前边的宏里定义它由随机数生成
// 直接求逆自然是最直接的,但是求逆運算量大
// 通常用矩阵分解来求例如QR分解,速度会快很多
获得Linux系统时间精确到毫秒级
Linux系統各类时间解释:
博客经过实验验证eigen比opencv快的不止半点。学习一个新的库我喜欢了解两点:熟悉大致的包含模块,demo
(点击此处进入官网,内含丰富的Eigen信息)功能类似与MATLAB矩阵运算很方便是C++中可以用来调用并进行矩阵计算的一个库,直接将库下载后放在项目目录下然后包含头文件就能使用,Eigen里面封装了一些需要的头文件和功能如下:
动态矩阵是指其大小在运行时确定,静态矩阵是指其大小在编译时确定在Eigen中并未这样称呼矩阵。
矩阵基本使用与初始化:
在矩阵的访问中行索引总是作为第一个参数,需注意Eigen中遵循大家的习惯让矩阵、数組、向量的下标都是从0开始矩阵元素的访问可以通过()操作符完成,例如m(2,3)即是获取矩阵m的第2行第3列元素(注意行列数从0开始)
Eigen矩阵单個元素操作:
如何选择动态矩阵和静态矩阵:
对于小矩阵(一般大小小于16)使用固定大小的静态矩阵它可以带来比较高的效率;对于大矩阵(┅般大小大于32)建议使用动态矩阵。注意:如果特别大的矩阵使用了固定大小的静态矩阵则可能会造成栈溢出的问题