Eigen中的矩陣及向量運算


Eigen中的矩陣及向量運算
1,【+,+=,-,-=2,【\*,\*=3,【.transpose()】
4,【.dot(),.cross(),.adjoint()】
5,針對矩陣元素進行的操作【.sum(),.prod(),.mean(),minCoeff(),.maxCoeff,.trace()】6,【.norm()】向量求模,矩陣范數

注意事項:
1, Eigen中的矩陣和向量運算不會自動適應行列數,需要在編程的時候保證參與運算的矩陣和向量行列數可以進行運算
2,頭文件<Eigen/Core>   中包含【+,-,*,/,+=,-=,*=,.transpose()…sum(),.prod(),.mean(),minCoeff(),.maxCoeff,.trace()】等運算符
3,頭文件<Eigen/Dense> 中包含【.dot(),.cross(),adjoint()】等運算符
4,以下討論的符號約定(假設滿足運算的行列數要求)
矩陣:a,b
向量:u,v
常數:c

1,【+,+=,-,-=】
適用於尺寸相同的矩陣之間、尺寸相同的向量之間的對應元素相加減
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相同。

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。

6,【.norm()】向量求模,矩陣范數
a.norm();//返回矩陣的Frobenius范數,即元素平方的和的平方根
u.norm();//返回向量的模

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM