我正在尝试初始化一个矩阵(使用Eigen库)在创建时具有非零值.有没有一个很好的方式做这个没有for循环?
例如,如果我想将整个矩阵初始化为1.0,我想做一些类似于
Eigen::MatrixXd mat(i,j) = 1.0;
要么
Eigen::MatrixXd mat(i,j); mat += 1.0;
(我习惯了MATLAB中的这种类型的东西,它会使Eigen比现在更好使用,我怀疑这里有一个内置的方法,我没有找到.)
这个问题的一个子问题是如何将一个矩阵元素块设置为一个设定值,这是一个例子:
mat.block(i,j,k,l) = 1.0;
解决方法
经常发生的事情我发现问题在三十秒内在文档中找到答案.我在寻找
Constant
function:
Eigen::MatrixXd mat = Eigen::MatrixXd::Constant(i,1.0); mat.block(i,l) = Eigen::MatrixXd::Constant(i,1.0);