c++ - block 操作的特征矩阵库补码

标签 c++ indexing eigen

是否有一种紧凑/漂亮/高效的方法来执行“ block 的补充”操作。意思是说我想从矩阵 M 从第 3 行开始提取 10 行的 block ,我们可以这样做:

  Eigen::MatrixXd myBlock = M.block(3,0,10,M.cols());

但我要提取的是“除那 10 行之外的所有行”。即从第 0 行到第 2 行,然后从第 13 行到最后。这可能吗 ?提前致谢。

最佳答案

直接连接是不可能的,但是你可以轻松地将两个 block 连接在一起:

// result must be allocated to the correct size before concatenating:
Eigen::MatrixXd myComplement(M.rows()-10, M.cols());
myComplement << M.topRows<3>(), M.bottomRows(M.rows()-13);

注意: 而不是 M.block(3,0,10,M.cols())你可以写M.middleRows<3>(10) .

关于c++ - block 操作的特征矩阵库补码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40137354/

相关文章:

c++ - 有没有感觉 c++ 有时会减少解决问题的时间并增加句法、语义的严谨性?

c++ - 如何从 fgets 读取整个整数流并推回一维 vector ?

C++ 术语引用和迭代器

indexing - 为什么有基于 1 的行号和基于 0 的字符号的约定?

c++ - Eigen::aligned_allocator 因 std::unordered_multimap 而失败

c++ - 类方法子集的延迟评估

c++ - 显式 int 类型作为参数

php - 关于从互联网上蜘蛛/抓取/收集音频内容的最佳方式的建议/提示

memory - 虚拟索引物理标记分页与虚拟索引和虚拟标记分页之间有什么区别?

c++ - 制作矩阵的更好方法 - 在 Eigen 中记录操作?