我正在尝试初始化矩阵(使用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;
答案 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。