Eigen入门之密集矩阵入门之密集矩阵 2– Matrix及及Vector的计算方法的计算方法
简介简介
Eigen内的Matrix和Vector提供了类似C++的运算符,如+,-,*;也提供了编程的函数方法,如点乘和叉乘的dot(), cross(),如此等
等。
在Eigen的Matrix类,代表矩阵matrics和向量vector,重载的运算符仅用于支持线性代数的运算,而不支持标量计算。比
如matrix1 * matrix2 ,表示矩阵matrix 乘以 matrix2,而matrix1 + 10则不允许。
加法和减法加法和减法
如大家所知,如果2个矩阵运行运算,对2个矩阵的行数和列数是有条件要求的。另外,在Eigen内,用于计算时,矩阵的系数
类型必须统一,并不会内部进行类型转换。
二元运算符 + : ma + mb;
二元运算符 – : ma – mb;
一元运算符 – : – ma;
组合运算符 +=: ma+=mb;
组合运算符 -=: ma-=mb;
示例:
// matrix_cal1.cpp
#include
#include
using namespace Eigen;
int main()
{
Matrix2d a;
a << 1, 2,
3, 4;
MatrixXd b(2,2);
b << 5, 6,
7, 8;
std::cout << "a + b =" << a + b << std::endl;
std::cout << "a - b =" << a - b << std::endl;
std::cout << "Doing a += b;" << std::endl;
a += b;
std::cout << "Now a =" << a << std::endl;
std::cout << endl;
Vector3d v(1,2,3);
Vector3d w(1,0,0);
std::cout << "-v + w - v =" << -v + w - v << std::endl;
}
执行后输出:
$ ./matrix_cal1
a + b =
6 8
10 12
a - b =
-4 -4
-4 -4
Doing a += b;
Now a =
6 8
10 12
-v + w - v =
-1
-4
-6
评论0