自己的范围初始化

问题描述 投票:0回答:1

我正在尝试使用Eigen3生成一个2d浮点矩阵(num_samples, num_ranges),这样每列都是[0, num_samples)的连续间隔范围,如[0, 1, 2 ... num_samples - 1]

我目前通过用std::vector创建一个类似的2d std::iota然后将其转换为Eigen 2d矩阵来实现这一目标。

在Eigen中有更快更简单的方法吗?

c++11 eigen eigen3
1个回答
4
投票

如果我理解正确,你想要矩阵就像

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;
© www.soinside.com 2019 - 2024. All rights reserved.