我试图使用Eigen3生成一个2d浮点矩阵(num_samples, num_ranges)
,这样每列都是[0, num_samples)
的连续间隔范围,如[0, 1, 2 ... num_samples - 1]
。
我目前通过使用std::vector
创建类似的2d std::iota
然后将其转换为Eigen 2d矩阵来实现此目的。
在Eigen中有更快更简单的方法吗?
答案 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;