Eigen库(点这里)的矩阵运算使用特别方便,对于大数据量点云的处理方面使用很多。矩阵或向量的定义、相关函数(如:行、列、求范数、大小、特征值/向量、矩阵分解以及一些运算等)的使用也很简单,结合C++编程,可以有类似MATLAB的简洁舒畅!
今天主要介绍几个函数:范数类函数。norm()(求向量模长等),如 l2
范数,squaredNorm(), lp
范数,lpNnorm
(),这里的p可以是1或者无穷。
在使用maxCoeff()和minCoeff()函数是,可以寻求最大元素和最小元素,但如果我们想返回其位置,则需要给定相关参数,而参数的类型我们要使用Index类型,例如:
还可以部分使用,即返回的不是一个值,而是一组值,可以看做是一种降维操作,所使用的函数为colwise(),
rowwise()。例如:
Mat.colwise()理解为分别去看矩阵的每一列,然后再作用maxCoeff()函数,即求每一列的最大值。
需要注意的是,colwise返回的是一个行向量(列方向降维),rowwise返回的是一个列向量(行方向降维)。
Vector类型使用与上面的类似:
m.colwise() –
v,再将得到的矩阵取列,再求l2
范数的平方,即(m.colwise()-v).colwise().squaredNorm(),最后再求这一列的最小值,并记录位置。输出时m.col(index)便将最小的那一列输出。