调整矩阵大小后如何将新值设置为零?确实很奇怪,在调整矩阵大小之后,将新值设置为垃圾值,而不是至少设置为零。

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;

结果

最佳答案

我已经通过使用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;

结果

另外,我发现您可以将它们设置为Eigen::MatrixXd::Ones(3+3*Nt,3+3*Nt)或身份Eigen::MatrixXd::Identity(3+3*Nt,3+3*Nt)
为了身份

关于c++ - 具有新值的零值的relativeResize(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25317687/

10-11 03:57