eigen一维向量_Eigen中的矩阵及向量运算

Eigen中的矩阵及向量运算tips1,【+,+=,-,-=】2,【\*,\*=】3,【.transpose()】4,【.dot(),.cross(),.adjoint()】5,针对矩阵元素进行的操作【.sum(),.prod(),.mean(),minCoeff(),.maxCoeff,.trace()】6,【.norm()】向量求模,矩阵范数

本文严重参考了博客链接的部分内容,更像是该博客的阅读笔记,用于速查,直接看该博客会有更直观理解

一个很好的资料

tips1, Eigen中的矩阵和向量运算不会自动适应行列数,需要在编程的时候保证参与运算的矩阵和向量行列数可以进行运算2,头文件 中包含【+,-,*,/,+=,-=,*=,.transpose()…sum(),.prod(),.mean(),minCoeff(),.maxCoeff,.trace()】等运算符3,头文件中包含【.dot(),.cross(),adjoint()】等运算符4,以下讨论的符号约定(假设满足运算的行列数要求)

矩阵:a,b

向量:u,v

常数:c1,【+,+=,-,-=】

适用于尺寸相同的矩阵之间、尺寸相同的向量之间的对应元素相加减2,【*,*=】1,用于矩阵与矩阵:尺寸合适的矩阵的一般矩阵乘法。此时,向量可以看成是矩阵2,用于矩阵与标量:矩阵与标量的一般乘法,矩阵每个元素与标量相乘。此时,向量可以看成是矩阵3,【.transpose()】

返回矩阵的转置。此时,向量可以看成是矩阵4,【.dot(),.cross(),.adjoint()】

只用于向量

u.dot(v):u和v的点乘,即对应元素乘积的和,返回一个标量。与v.dot(u),u.transpose()*v,v.transpose()*u相同。

u.cross(v):u和v的叉积,返回一个向量。与v.cross(u)相差一个负号。

u.adjoint():返回u的共轭向量,若u为实向量,则返回结果与u相同。12345

5,针对矩阵元素进行的操作【.sum(),.prod(),.mean(),minCoeff(),.maxCoeff,.trace()】

本部分所有操作都可对矩阵和向量进行,将向量看做矩阵即可

a.sum(): 返回矩阵a中所有元素的和

a.prod(): 返回矩阵a中所有元素的积

a.mean(): 返回矩阵a中所有有元素的平均值

a.trace(): 返回矩阵的迹,即返回主对角线上元素的和。如果不是方阵或者为向量,仍返回对角线元素的和。

a.minCoeff(): 返回矩阵中最小的元素

a.maxCoeff(): 返回矩阵中最大的元素

另外,对于.minCoeff(),.maxCoeff(),有以下用法:int i,j;//或std::ptrdiff_t i, j

auto min =a.minCoeff(i,j);返回a的最小元素赋值给min,并将最小元素所在行号、列号赋值给i、j。

auto max=a.maxCoeff(p,q);返回a的最大元素赋值给max,并将最大元素所在行号、列号赋值给q、p。1234567891011

6,【.norm()】向量求模,矩阵范数

a.norm();//返回矩阵的Frobenius范数,即元素平方的和的平方根

u.norm();//


版权声明:本文为weixin_29728529原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。