如何在特征矩阵中删除重复行?

  • 本文关键字:删除 特征 c++ eigen eigen3
  • 更新时间 :
  • 英文 :


我试图在特征中应用MatrixXi的唯一性。但是我没有在特征库中找到任何解决方法或api。

我的目标是:

MatrixXi mat = {{1,2,3},{2,3,1},{4,5,6},{1,2,3},{1,3,2},{4,3,5},{4,5,6}}

应用唯一性之后,我需要

auto mat_unique = {{1,2,3},{1,3,2},{2,3,1},{4,3,5},{4,5,6}}

我需要对更大的矩阵应用唯一性

是否有任何解决方案或APi ?

Thanks in advance

我已经找到解决问题的办法了。这是

但是解决方案只能用于排序,而不能用于删除重复项。因此,需要在中间再添加一行代码。

void eigen_sort_unique_rows_by_head(Eigen::MatrixXi& A_nx3)
{
std::vector<Eigen::VectorXi> vec;
for (int64_t i = 0; i < A_nx3.rows(); ++i)
vec.push_back(A_nx3.row(i));
std::sort(vec.begin(), vec.end(), [](Eigen::VectorXi const& t1, Eigen::VectorXi const& t2){ return t1(0) < t2(0); } );
auto it = std::unique(vec.begin(), vec.end());
vec.resize(std::distance(vec.begin(),it));
A_nx3.resize(vec.size(),3);
for (int64_t i = 0; i < vec.size(); ++i)
A_nx3.row(i) = vec[i];
};

相关内容

  • 没有找到相关文章

最新更新