我应该如何在Eigen中初始化大矩阵的内容?

时间:2014-11-18 22:26:08

标签: c++ eigen

我正在尝试初始化矩阵(使用Eigen库),以便在创建时具有非零值。 如果没有for循环,有没有一种很好的方法呢?

例如,如果我想将整个矩阵初始化为1.0,我想做类似的事情:

Eigen::MatrixXd mat(i,j) = 1.0;

Eigen::MatrixXd mat(i,j);
mat += 1.0;

(我习惯在MATLAB中使用这种类型的东西,它会使Eigen的使用比现在更好。我怀疑有一个内置方法可以做到这一点,我还没有找到。)

这个问题的一个子问题是如何将一个矩阵元素块设置为一个设定值,这是ilke:

mat.block(i,j,k,l) = 1.0;

2 个答案:

答案 0 :(得分:16)

正如经常发生的那样,我在发布问题后的30秒内找到了文档中的答案。我在寻找Constant function

Eigen::MatrixXd mat = Eigen::MatrixXd::Constant(i, j, 1.0);

mat.block(i,j,k,l) = Eigen::MatrixXd::Constant(i, j, 1.0);

答案 1 :(得分:8)

Eigen::MatrixXd::Ones()Eigen::MatrixXd::Zero()Eigen::MatrixXd::Random()都可以为您提供所需内容,并以动态方式创建Matrix。