如何从特征矩阵中获取不连续的数据"block"?

How can I get a discontiguous "block" of data from an eigen matrix?

本文关键字:不连续 数据 获取 block 特征      更新时间:2023-10-16

假设我想应用一些通用操作,一个矩阵,该矩阵由其值的某些子集组成,这些子集不一定是连续的。我该怎么做?

如果值是连续的,我将简单地使用 Eigen::block 操作,但如果它们不是呢?

一个应用可能是我有一个正整数的特征矩阵:

Eigen::Matrix<int, 4, 1> mat;
mat << 4, 1, 2, 8;

我想返回第 0、第 2 和第 3 个值。如果它们是连续的(第 0、第 1 和第 2),我可以简单地在此矩阵上使用 block 操作,但在这种情况下我该怎么办?

如何重新排列元素以使它们连续?

1 0 0 0     4     4
0 0 1 0  x  1  =  2
0 0 0 1     2     8
0 0 0 0     8     0