本征范围初始化
Eigen Range Initialization
我正在尝试使用 Eigen3 生成二维浮点矩阵 (num_samples, num_ranges)
,这样每一列都是从 [0, num_samples)
开始的连续间隔范围,例如 [0, 1, 2 ... num_samples - 1]
。
我目前正在通过使用 std::iota
创建类似的 2d std::vector
然后将其转换为 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;
我正在尝试使用 Eigen3 生成二维浮点矩阵 (num_samples, num_ranges)
,这样每一列都是从 [0, num_samples)
开始的连续间隔范围,例如 [0, 1, 2 ... num_samples - 1]
。
我目前正在通过使用 std::iota
创建类似的 2d std::vector
然后将其转换为 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;