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();//返回向量的模