【问题标题】:Dynamically allocate Random Eigen VectorXd动态分配随机特征向量Xd
【发布时间】:2016-07-26 02:53:24
【问题描述】:

在 eigen 中分配一个随机的 VectorXd 如下:

VectorXd z = VectorXd::Random(10000);

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

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

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

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

【问题讨论】:

    标签: c++ eigen eigen3


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-09-28
      • 1970-01-01
      • 1970-01-01
      • 2015-03-20
      • 2020-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多