8

マトリックスのサイズを変更した後、新しい値をゼロに設定する方法は? マトリックスのサイズを変更した後、新しい値が少なくともゼロに設定されるのではなく、ゴミの値に設定されるのは本当に奇妙です。

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;

結果

ここに画像の説明を入力

4

3 に答える 3

9

を使用して問題を解決しました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)

アイデンティティのために

ここに画像の説明を入力

于 2014-08-14T21:55:19.023 に答える