gpt4 book ai didi

c++ - 如何将 Eigen::eigenvector().col(0).real() 转换为标准 vector ?

转载 作者:行者123 更新时间:2023-11-30 03:17:26 29 4
gpt4 key购买 nike

我正在使用 C++ 编写代码,该代码使用 Eigen 库计算矩阵的特征向量。我只需要第一列和特征向量的实数值。有没有办法将这些值复制到 std::vector数据类型?有人可以帮我解决这个问题吗?

我看到了这个Converting Eigen::MatrixXf to 2D std::vector邮政。但我只需要特定的值。此外,我不确定 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>

最佳答案

Map是答案:

 Vector3f::Map(&v[0].a) = handle.eigenvectors().col(0).real();

关于c++ - 如何将 Eigen::eigenvector().col(0).real() 转换为标准 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55527027/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com