如何解决如何删除特征中矩阵中的重复行?
我试图在特征中对 MatrixXi 应用唯一性。但是我在 eigen 库中没有找到任何解决方法或 api。
我的目标是:
MatrixXi mat = {{1,2,3},{2,3,1},{4,5,6},{1,2},5},6}}
应用唯一性后,我需要
auto mat_unique = {{1,6}}
我需要为更大的矩阵应用唯一性。
本征中是否有任何解决方法或 API?
提前致谢
解决方法
我已经找到了解决我的问题的方法。这是this
但该解决方案仅用于排序,而不用于删除重复项。所以需要在中间多加一行代码。
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];
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。