我想从文件中读取数据到Eigen中的矩阵.我编写了所有内容,但遇到了一个问题.我事先还不知道文件中有多少数据点,所以我希望能够在不指定其大小的情况下初始化矩阵.我知道以下初始化矩阵的方法在Eigen中起作用:
MatrixXd A;
Run Code Online (Sandbox Code Playgroud)
但是现在如果我这样做的话
A << 1, 2,
4, 7;
Run Code Online (Sandbox Code Playgroud)
它不起作用.我希望它在这个例子中将它识别为2x2矩阵,以便我可以使用它.所以基本上我的问题是,如何将数据添加到A,而不必指定其大小?
如果你想要的是从一个没有明确指定矩阵大小的文件中读取数据,那么我建议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
每次调用都要高效得多.
归档时间: |
|
查看次数: |
9466 次 |
最近记录: |