小编Chr*_*ina的帖子

将 Eigen::VectorXd 转换为 std::vector<double>

正如标题所示,我正在尝试将 Eigen::VectorXd 转换为 std::vector。该向量是通过对矩阵进行对角化,然后取该过程的第一个特征向量来获得的。

#include <iostream>
#include <vector>
#include <cmath>
#include <iomanip>
#include <Eigen/Dense>

using namespace std;
using namespace Eigen;

using namespace std;

int main()
{
    vector<double> vec;
    MatrixXd ones = MatrixXd::Ones(3,3);
    VectorXd firstEvector;
    SelfAdjointEigenSolver<MatrixXd> es(ones);
    firstEvector = es.eigenvectors().col(1);
    cout << "The first eigenvector of the 3x3 matrix of ones is:" << endl << firstEvector << endl;
    vec(&firstEvector[0], firstEvector.data() + firstEvector.cols()*firstEvector.rows());
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我以为这是可行的方法,但是,它不起作用。我收到以下错误。

C:\CBProjects\eigenVectors\main.cpp|20|error: no match for call to '(std::vector<double>) (Eigen::DenseCoeffsBase<Eigen::Matrix<double, -1, 1>, 1>::Scalar*, Eigen::PlainObjectBase<Eigen::Matrix<double, -1, 1> >::Scalar*)'| …
Run Code Online (Sandbox Code Playgroud)

c++ vector eigen

3
推荐指数
1
解决办法
3043
查看次数

标签 统计

c++ ×1

eigen ×1

vector ×1