将数据从 std::vector 复制到 Eigen's MatrixXd in C++



eigen是C 中的线性代数库。我在std :: vector(下面的代码中的数据载体)中有数据(双重类型)类型数组。我尝试使用以下代码将其复制在行方面,该代码仍在提供结果列。

Map<MatrixXd, RowMajor> MyMatrix(DataVector.data(), M, N);

我在这里做正确的语法吗?

no。MatrixXd对象必须定义为行/列专业。请参阅下面的示例。

#include <Eigen/Core>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
int main(int argc, char *argv[])
{
    std::vector<int> dat(4);
    int i = 0;
    dat[i] = i + 1; i++;
    dat[i] = i + 1; i++;
    dat[i] = i + 1; i++;
    dat[i] = i + 1;
    typedef Eigen::Matrix<int, -1, -1, Eigen::ColMajor> Cm;
    Eigen::Map<Cm> m1(dat.data(), 2, 2);
    cout << m1 << endl << endl;
    typedef Eigen::Matrix<int, -1, -1, Eigen::RowMajor> Rm;
    Eigen::Map<Rm> m2(dat.data(), 2, 2);
    cout << m2 << endl << endl;
    return 0;
}

输出:

1 3
2 4
1 2
3 4

最新更新