我正在尝试初始化矩阵(使用特征库)以使其具有非零值。 是否有一种不错的方法来实现此目的而无需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, j, 1.0);

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

关于c++ - 如何在Eigen中初始化大矩阵的内容?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27005322/

10-13 09:05