conservativeResize(),新值为零值

Cro*_*oCo 7 c++ eigen3

如何在调整矩阵大小后将新值设置为零?在调整矩阵大小后,将新值设置为垃圾值而不是至少设置为零,这真的很奇怪.

N = 0;
Eigen::MatrixXd CO;
CO.setZero(3+3*N, 3+3*N);
std::cout << CO << std::endl << std::endl;
Nt = 1;
CO.conservativeResize(3+3*Nt,3+3*Nt);
std::cout << CO << std::endl << std::endl;
Run Code Online (Sandbox Code Playgroud)

结果

在此输入图像描述

Cro*_*oCo 7

我通过使用解决了这个问题 conservativeResizeLike()

int Nt = 0;
Eigen::MatrixXd  CO;
CO.setOnes(3+3*Nt, 3+3*Nt);
std::cout << CO << std::endl << std::endl;
Nt = 1;
CO.conservativeResizeLike(Eigen::MatrixXd::Zero(3+3*Nt,3+3*Nt));
std::cout << CO << std::endl << std::endl;
Run Code Online (Sandbox Code Playgroud)

结果

在此输入图像描述

此外,我发现你可以将它们设置为一个Eigen::MatrixXd::Ones(3+3*Nt,3+3*Nt)或身份Eigen::MatrixXd::Identity(3+3*Nt,3+3*Nt)

对于身份

在此输入图像描述