最简单方式是安装编译器后直接包含头文件:#include ,使用MatrixXd、Vector3d等类型,无需链接外部库;三步包括配置头文件路径、编写含Eigen::MatrixXd的示例代码并编译运行。

直接上手 Eigen 最简单的方式是:装好编译器,加一行 #include ,然后用 MatrixXd、Vector3d 这类类型写矩阵和向量——它不依赖外部库,头文件即用,编译时也不用链接。
快速开始:三步跑通第一个矩阵计算
1. 确保你的项目能访问 Eigen 头文件(下载解压后把 Eigen/ 文件夹路径加入 include 目录)
2. 写个最简例子:
#include#include int main() { Eigen::MatrixXd A(2, 2); A << 1, 2, 3, 4; Eigen::VectorXd b(2); b << 5, 6; std::cout << "A * b =\n" << A * b << std::endl; }
3. 编译时加上 -std=c++11(或更高),无需额外链接选项
常用类型与初始化方式
Eigen 的核心是模板矩阵类,类型名自带维度和精度信息:
-
Matrix:固定大小 3×3 双精度矩阵(栈上分配,快) -
MatrixXd:动态大小双精度矩阵(堆上分配,灵活) -
Vector3d:固定长度 3 的双精度向量(等价于Matrix) -
RowVectorXf:动态行向量,单精度
初始化推荐用逗号初始化器(),支持链式赋值;也可用 setZero()、setIdentity()、Random() 等成员函数
立即学习“C++免费学习笔记(深入)”;
基础运算与常见操作
算术运算符重载自然直观,但注意:所有运算默认返回表达式对象(lazy evaluation),真正计算发生在赋值时:
- 加减乘:
A + B、A - B、A * B(矩阵乘法,不是逐元素) - 逐元素运算加
.array():A.array() * B.array()是哈达玛积 - 转置、共轭、伴随:
A.transpose()、A.conjugate()、A.adjoint() - 求逆、行列式、特征值:用
FullPivLU、PartialPivLU、SelfAdjointEigenSolver等分解类,不建议直接调inverse()
线性方程组与分解技巧
解 Ax = b 别手写高斯消元,用 Eigen 提供的分解接口更稳更快:
- 一般矩阵 →
PartialPivLU(快,适合多次解不同右端项) - 对称正定矩阵 →
LLT(最快最稳) - 需要最小二乘 →
HouseholderQR或ColPivHouseholderQR
例如:
Eigen::MatrixXd A = Eigen::MatrixXd::Random(3, 3); Eigen::VectorXd b = Eigen::VectorXd::Random(3); auto lu = A.partialPivLu(); Eigen::VectorXd x = lu.solve(b); // 自动选最优算法











