如何从Eigen矩阵的行/列中提取对应的Eigen向量?
Eigen矩阵提取向量的实现方案
提取指定列/行向量
- 提取索引为1的列作为列向量:
VectorXd V = M.col(1);
- 提取索引为1的行转为列向量:
// row()返回的行向量支持直接隐式转换为VectorXd类型 VectorXd V = M.row(1);
实现单索引访问提取向量
如果你需要实现示例中M(1)这类单索引逻辑(类似Matlab单索引规则),可以先将矩阵按存储顺序扁平为一维向量后再提取:
MatrixXd M; // 对M进行任意赋值(示例中的X为笔误 // 将矩阵按默认列优先顺序扁平为一维向量 VectorXd flat_M = Eigen::Map<VectorXd>(M.data(), M.size()); // 提取从索引1开始的n个连续元素作为向量,n可自定义 VectorXd V = flat_M.segment(1, n);
注意:Eigen索引从0开始计数,和部分数值计算软件常用的1开始计数逻辑不同,使用时可根据需求调整索引数值;如果矩阵声明时指定了行优先存储,扁平顺序也会对应变化。
内容的提问来源于stack exchange,提问作者Kaiyakha
相关产品推荐
相关产品推荐

