动态分配随机特征向量Xd

Dynamically allocate Random Eigen VectorXd

本文关键字:Xd 向量 特征 随机 动态分配      更新时间:2023-10-16

在特征中分配随机化VectorXd如下:

VectorXd z = VectorXd::Random(10000);

然而,我不确定如何动态分配相同的Vector:

VectorXd* z = new VectorXd::Random(10000); // error: expected type-specifier

因为CCD_ 1是CCD_。我可以使用另一个构造函数,但我怀疑这是不必要和低效的:

VectorXd* z = new VectorXd(VectorXd::Random(10000)); // compiles

Eigen::VectorXd是一个容器,它将为自己的内容(元素数组)动态分配所需的内存,因此以下所有内容都可以工作:

VectorXd* z1 = new VectorXd(VectorXd::Random(10)); // compiles
std::cout << "z1:n" << z1->transpose() << "nn";
VectorXd* z2 = new VectorXd(); // also compiles
z2->setRandom(10);
std::cout << "z2:n" << z2->transpose() << "nn";
VectorXd* z3 = new VectorXd(); // compiles as well
*z3 = VectorXd::Random(10);
std::cout << "z3:n" << z3->transpose() << "nn";

这对于大多数Eigen对象都是正确的,除了那些大小不是动态的对象(例如Eigen::Vector3d)。