如何使用 Eigen 从 vector<vector<float>> 创建矩阵? [复制]

Posted

技术标签:

【中文标题】如何使用 Eigen 从 vector<vector<float>> 创建矩阵? [复制]【英文标题】:How to create a matrix from vector<vector<float>> using Eigen? [duplicate] 【发布时间】:2020-10-24 23:22:41 【问题描述】:

我有一个大小为 N 的向量,其中包含大小为 3 的向量(3D 点)。如何将其转换为 N 行 3 列的特征矩阵?

【问题讨论】:

【参考方案1】:

如果我理解您的问题,这应该可以完成工作。


#include <Eigen/Geometry>
#include <Eigen/Dense>
#include <iostream>
#include <vector>

Eigen::MatrixXf convert_vect2mat(std::vector<std::vector<float> > & input_vector)

    
    int n_row = input_vector.size();
    int n_col = input_vector[0].size();       // based on your description this should be 3.
    Eigen::MatrixXf output_matrix(n_row, n_col);

    for(int i = 0; i < n_row; i++)
    
        output_matrix(i, 0) = input_vector[i][0];
        output_matrix(i, 1) = input_vector[i][1];
        output_matrix(i, 2) = input_vector[i][2];
    
    //std::cout << output_matrix << std::endl;
    return output_matrix;


int main()

    std::vector<std::vector<float> > vect = 1,2,3, 4,5,6, 7,8,9, 10,11,12;
    Eigen::MatrixXf result = convert_vect2mat(vect);
    std::cout << result << std::endl;
    return 0;

【讨论】:

这可能(并且希望)不是任何人想要的:它只是复制所有元素,因此不是很有帮助。您还包括许多不需要的标题。请参阅***.com/questions/33668485/eigen-and-stdvector 以获得更好的答案。

以上是关于如何使用 Eigen 从 vector<vector<float>> 创建矩阵? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

从 std::vector 创建 Eigen::Ref

使用 std::vector<Eigen::MatrixXd> 进行内存管理

将数据从 std::Vector 存储到 Eigen::Vector 时出错 [重复]

如何调整 Eigen::MatrixXd 的 std::vector 的大小

Eigen::RowVector 迭代器

使用 Eigen 库存储 3D 数据