Eigen 矩阵操作笔记

Eigen 矩阵操作笔记

矩阵创建和初始化

动态大小矩阵

cpp 复制代码
MatrixXd mat1(3, 3);        // 3x3双精度矩阵
MatrixXf mat2(2, 4);        // 2x4单精度矩阵  
MatrixXi mat3(3, 3);        // 3x3整数矩阵

固定大小矩阵

cpp 复制代码
Matrix3d fixed_mat;         // 3x3双精度矩阵
Matrix<double, 4, 2> mat4;  // 4x2双精度矩阵

初始化方式

cpp 复制代码
// 逗号初始化
MatrixXd mat(3, 3);
mat << 1, 2, 3,
       4, 5, 6,
       7, 8, 9;

特殊矩阵生成

cpp 复制代码
MatrixXd zero_mat = MatrixXd::Zero(3, 3);      // 零矩阵
MatrixXd ones_mat = MatrixXd::Ones(3, 3);      // 全1矩阵
MatrixXd identity = MatrixXd::Identity(3, 3);   // 单位矩阵
MatrixXd random_mat = MatrixXd::Random(3, 3);   // 随机矩阵

基本运算操作

算术运算

cpp 复制代码
MatrixXd sum = A + B;           // 矩阵加法
MatrixXd diff = A - B;          // 矩阵减法  
MatrixXd product = A * B;       // 矩阵乘法
MatrixXd scalar_mult = 2.0 * A; // 标量乘法
MatrixXd transpose = A.transpose(); // 转置

矩阵属性

cpp 复制代码
int rows = A.rows();            // 行数
int cols = A.cols();            // 列数
int size = A.size();            // 总元素数
bool is_empty = (A.size() == 0); // 判断是否为空

元素访问和修改

单个元素操作

cpp 复制代码
mat11(0, 0) = 1.0;               // 设置元素(从0开始索引)
double value = mat11(1, 2);       // 获取元素

行列操作

cpp 复制代码
mat11.row(0) << 1, 2, 3;         // 设置第一行
VectorXd first_col = mat11.col(0); // 获取第一列

输入输出操作

输出矩阵

cpp 复制代码
cout << "Matrix A:\n" << mat22 << endl;

输入矩阵

cpp 复制代码
// 从控制台输入矩阵元素
for(int i = 0; i < 2; i++) {
    for(int j = 0; j < 2; j++) {
        cin >> mat22(i, j);
    }
}

关键要点总结

  1. 命名规则:

    • MatrixXd: 双精度动态矩阵
    • MatrixXf: 单精度动态矩阵
    • MatrixXi: 整数动态矩阵
    • Matrix3d: 固定大小3x3双精度矩阵
  2. 初始化方法:

    • 逗号初始化
    • 特殊矩阵函数(Zero, Ones, Identity, Random)
  3. 运算特性:

    • 支持标准矩阵运算
    • 元素索引从0开始
    • 提供行列级别的操作
  4. 内存管理:

    • 动态矩阵在运行时确定大小
    • 固定大小矩阵在编译时确定大小
相关推荐
小小龙学IT1 分钟前
C++ Redis 客户端深度解析(hiredis 与 redis-plus-plus)——工业数采实时缓存 C++ 侧实战
c++·redis·缓存
垆边人似月.11 分钟前
华为机试题 :最长递增子序列题目
数据结构·c++·算法·华为
BSD_HY21 分钟前
薄膜开关矩阵按键的GPIO扩展芯片选型与中断响应延迟
单片机·线性代数·矩阵
开发者联盟league33 分钟前
c++11 使用chrono库转换时间点和字符串,计算时间点间隔
java·c++·算法
imDwAaY42 分钟前
MCP 到底是什么?大模型如何连接外部工具与数据?
笔记
深圳老胡1 小时前
STM32F4 OTA 升级双 App 方案设计与实现
笔记·stm32·单片机·代码规范
蜕变的土豆1 小时前
工业监控RTSP取流-实践指南
c++·视频
进化中的刀盾兽1 小时前
从零实现 C++ Json-Rpc(八):补齐 detail.hpp——JSON 封装与请求 ID 生成
c++·rpc
数智工坊1 小时前
视觉SLAM第11讲|回环检测:词袋模型、字典构建与相似度计算全解析
人工智能·深度学习·线性代数
陈年老古董1 小时前
Hive 分区表学习笔记:语法、操作、二级分区与动态分区
hive·笔记·学习