Eigen 是一個純頭文件、無依賴的 C++ 模板庫,提供矩陣、向量、張量運算及線性代數分解(LU、QR、SVD 等)。它表達式模板機制消除了臨時對象,性能媲美手寫 SIMD 代碼,且語法極其接近 MATLAB。
INCLUDEPATH += C:/Eigen)。#include <Eigen/Dense> 即可使用核心功能。| 類型 | 含義 | 示例 |
|---|---|---|
| MatrixXd | 動態大小雙精度矩陣 | MatrixXd m(3,4); |
| Vector3f | 固定 3 維單精度向量 | Vector3f v(1,2,3); |
| Matrix2cd | 2×2 複數矩陣 | Matrix2cd c; |
#include
#include
using namespace Eigen;
using namespace std;
int main() {
Vector2d v1, v2;
v1 << 5, 6; // 逗號初始化器
v2 << 4, 5;
Matrix2d res = v1 * v2.transpose(); // 外積
cout << "v1:\n" << v1 << "\n\nResult:\n" << res << endl;
return 0;
}
m.block(i,j,r,c)、m.row(i)、m.col(j)m.lu()、m.qr()、m.jacobiSvd()#include <Eigen/Sparse>、SparseMatrix<double>Transform、Quaternion、AngleAxis.noalias() 消除別名檢查。Matrix3d)在棧上分配,動態類型在堆上,注意棧溢出風險。