Я работаю над кодом на c ++, который вычисляет собственные векторы матрицы с использованием библиотеки Eigen.Мне нужен только первый столбец и только реальные значения собственного вектора.Есть ли способ скопировать эти значения в тип данных std::vector
?Может кто-нибудь помочь мне с этим?
Я видел это Преобразование Eigen :: MatrixXf в 2D std :: vector post.Но мне нужны только конкретные значения.Более того, я не уверен, какой тип возвращает функция eigenvector()
.В документации это сказано как сложный Eigen::Matrix
тип.
Это пример кода.
#include<iostream>
#include<Eigen/Eigenvalues>
#include<vector>
using namespace std;
struct eigen
{
float a, b, c;
};
int main()
{
vector<Eigen::Matrix3f> A(1);
A[0] << 1, 2, 3, 2, 4, 5, 3, 5, 6;
Eigen::EigenSolver<Eigen::Matrix3f> handle(A[0]);
cout << "The matrix of eigenvectors, V, is: " << endl << handle.eigenvectors() << endl << endl;
cout << "The real part of first column is : " << endl <<
handle.eigenvectors().col(0).real() << endl << endl;
return 0;
}
Вывод приведенного выше кода
The matrix of eigenvectors, V, is:
(0.327985,0) (-0.736977,0) (-0.591009,0)
(0.591009,0) (-0.327985,0) (0.736976,0)
(0.736976,0) (0.591009,0) (-0.327985,0)
The real part of the first column is :
0.327985
0.591009
0.736976
Мне нужно скопировать значения handle.eigenvectors().col(0).real()
в std::vector<eigen>