在 Eigen 中,我可以进行行方向或列方向的“部分缩减”以获得最大系数。
例如这个程序:
#include <iostream>
#include <Eigen/Dense>
int main()
{
Eigen::MatrixXf mat(2,4);
mat << 1, 2, 6, 9,
3, 1, 7, 2;
std::cout << "Column's maximum: " << std::endl
<< mat.colwise().maxCoeff() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
输出:
Column's maximum:
3 2 7 9
Run Code Online (Sandbox Code Playgroud)
我不想创建每列中具有最大系数的行向量,而是想构造一个具有每列最大系数的索引的行向量。
换句话说,我想修改程序,使输出变成:
Column's maximum:
1, 0, 1, 0
Run Code Online (Sandbox Code Playgroud)
我知道我可以一次获取一列索引,执行如下操作:
Eigen::MatrixXf::Index max_index;
mat.col(i).maxCoeff(&max_index);
Run Code Online (Sandbox Code Playgroud)
但我希望有一种更好的方法可以一步完成这一切,而不是手动循环每一列。这可能吗?(我使用的是 Eigen v3.2.7)
归档时间: |
|
查看次数: |
9367 次 |
最近记录: |