Eigen C++开源模板库,支持各种计算。
遇到了二维数组和Eigen Matrix相互转换的问题。
先将vector转换为Matrix使用Eigen计算,完成计算后再将结果转换为vector
首先包含头文件
#include <Eigen/Dense>
std::vector 二维 转 Eigen Matrix
Eigen::MatrixXf toEigenMatrix(std::vector<std::vector<float> > matrix)
{
Eigen::MatrixXf outMat(matrix.size(), matrix[0].size());
for (int i = 0; i < matrix.size(); i++)
{
outMat.row(i) = Eigen::VectorXf::Map(&matrix[i][0], matrix[0].size());
}
return outMat;
}
Eigen Matrix 转回 std::vector
std::vector<std::vector<float>> toVector(Eigen::MatrixXf matrix)
{
std::vector<std::vector<float>> output(matrix.rows(), std::vector<float>(matrix.cols()));
for (int i = 0; i < matrix.rows(); i++)
{
Eigen::VectorXf p = matrix.row(i);
Eigen::VectorXf::Map(&output[i][0], p.size()) = p;
}
return output;
}