马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
一、Eigen矩阵存储次序
在矩阵运算和线性代数中,"行优先"(Row-major)和"列优先"(Column-major)是两种差别的存储方式,它们决定了多维数组(如矩阵)在内存中的结构次序。
1. 行优先(Row-major)
- 定义:矩阵按行次序存储在内存中,即第一行的所有元素连续存储,接着是第二行,依此类推。
- 内存结构示例:
- 对于一个 2x3 矩阵:
- 行优先存储次序为:a, b, c, d, e, f。
2. 列优先(Column-major)
- 定义:矩阵按列次序存储在内存中,即第一列的所有元素连续存储,接着是第二列,依此类推。
- 内存结构示例:
- 同样的 2x3 矩阵:
- 列优先存储次序为:a, d, b, e, c, f。
Eigen 中的存储次序
- Eigen 默认使用列优先存储(与 MATLAB 一致),但可以通过模板参数显式指定行优先。
- 示例代码:
cpp
- #include <Eigen/Dense>
- using namespace Eigen;
- // 默认列优先(Column-major)
- Matrix<float, 3, 3> mat_col_major;
- // 显式指定行优先(Row-major)
- Matrix<float, 3, 3, RowMajor> mat_row_major;
复制代码
E
|