我正在尝试使用Eigen3生成一个2d浮点矩阵(num_samples, num_ranges)
,这样每列都是[0, num_samples)
的连续间隔范围,如[0, 1, 2 ... num_samples - 1]
。
我目前通过用std::vector
创建一个类似的2d std::iota
然后将其转换为Eigen 2d矩阵来实现这一目标。
在Eigen中有更快更简单的方法吗?
如果我理解正确,你想要矩阵就像
0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3
对于4x4矩阵。为此,您可以使用LinSpaced
(用于单个列)和复制(复制该列)的组合:
int rows = 5;
int cols = 4;
Eigen::MatrixXd m = Eigen::VectorXd::LinSpaced(rows, 0.0, rows - 1).replicate(1, cols);
std::cout << m;