具有未知行数和列数的矩阵特征库

dre*_*mer 4 c++ eigen

我想从文件中读取数据到Eigen中的矩阵.我编写了所有内容,但遇到了一个问题.我事先还不知道文件中有多少数据点,所以我希望能够在不指定其大小的情况下初始化矩阵.我知道以下初始化矩阵的方法在Eigen中起作用:

MatrixXd A;
Run Code Online (Sandbox Code Playgroud)

但是现在如果我这样做的话

A << 1, 2,
     4, 7;
Run Code Online (Sandbox Code Playgroud)

它不起作用.我希望它在这个例子中将它识别为2x2矩阵,以便我可以使用它.所以基本上我的问题是,如何将数据添加到A,而不必指定其大小?

gga*_*ael 5

如果你想要的是从一个没有明确指定矩阵大小的文件中读取数据,那么我建议std::vector在解析副本的一个和最后的条目中推回std::vector使用的数据Map:

MatrixXf A;
std::vector<float> entries;
int rows(0), cols(0);
while(...) { entries.push_back(...); /* update rows/cols*/ }
A = MatrixXf::Map(&entries[0], rows, cols);
Run Code Online (Sandbox Code Playgroud)

这比conservativeResize每次调用都要高效得多.