如何在C ++中正确初始化,分配和使用动态特征矩阵作为类成员?

时间:2015-09-04 16:07:19

标签: c++ matrix dynamic eigen

我有一个具有动态特征矩阵的类。我想从文本文件中读取Matrix并将其分配给类矩阵变量。做这个的最好方式是什么?这就是我现在所做的事情

class MyFoo
{
    MyFoo();
    Eigen::MatrixXd mat;
    void setMatrix();
}

MyFoo::MyFoo(): mat(Eigen::MatrixXd::Zero())
{};

void MyFoo::setMatrix()
{
    mat = HelperLib::readMatFromTXTfile("someFileName");
}

// Eigen::MatrixXd HelperLib::readMatFromTXTfile(const string &fname);

我的问题是这样的:首先,初始化看起来并不合适。其次,使用=来分配读取矩阵也不是太理想。不幸的是,在Eigen主页上没有很多这样的例子,或者我太过于理解它们了。

1 个答案:

答案 0 :(得分:0)

默认情况下,MatrixXd对象初始化为0x0矩阵,因此无需将其显式初始化为空矩阵。此外,Matrix<>::Zero()静态成员仅适用于固定大小的矩阵。对于MatrixXd您需要指定其维度,通常Zero(n,m)用于将矩阵初始化为填充有显式零的m x n矩阵。

关于作业,CoryKramer已经回答了它。