轉(zhuǎn)載:Eigen官網(wǎng)教程(5) 規(guī)約、范數(shù)等
版權(quán)聲明:本文為CSDN博主「一土山石」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/SKANK911/article/details/89279675
1-Reductions

2-范數(shù)計算
向量的平方范數(shù)由squaredNorm()獲得,等價于向量對自身做點積,也等同于所有元素平方和。Eigen也提供了norm()范數(shù),返回的是squaredNorm()的根。這些操作也適用于矩陣。如果想使用其他元素級的范數(shù),使用lpNorm<p>()方法,當求無窮范數(shù)時,模板參數(shù)p可以取特殊值Infinity,得到的是所有元素的最大絕對值。

矩陣的1范數(shù)和無窮范數(shù)也可以用下面的方法計算:

3 -布爾規(guī)約**
如下的操作得到的是布爾值
- all()返回真,如果矩陣或數(shù)組的所有元素為真
- any()返回真,如果矩陣或數(shù)組至少有一個元素為真
-
count()返回元素為真的個數(shù)
image.png
4-迭代
當需要獲得元素在矩陣或數(shù)組中的位置時使用迭代。Index 索引

5 部分規(guī)約


6 - 部分規(guī)約和其他操作的結(jié)合**
使用部分規(guī)約操作得到的結(jié)果去做其他的操作也是可以的,如下例子用于得到矩陣中元素和最大的一列

7 -結(jié)合廣播和其他操作**
廣播也可以和其他操作結(jié)合,比如矩陣或數(shù)組的運算、規(guī)約和部分規(guī)約操作。下面介紹一個更加復雜的例子,演示了在矩陣中找到和給定向量最接近的一列,使用到了歐氏距離。

這句話做的工作是:
1)m.colwise()-v是一個廣播操作,矩陣m的每一列減去v,得到一個新的矩陣

2)(m.colwise() - v).colwise().squareNorm()是部分規(guī)約操作,按列計算矩陣的平方范數(shù),得到一個行向量

3)最終minCoeff(&index)根據(jù)歐氏距離獲得矩陣中最接近v的一列的索引。
