特征范围初始化

时间:2018-03-28 00:10:31

标签: c++11 eigen eigen3

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

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

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

1 个答案:

答案 0 :(得分: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;