gpt4 book ai didi

eigen - 在 Eigen 中找到 rowwise maxCoeff 和 Index of maxCoeff

转载 作者:行者123 更新时间:2023-12-04 10:55:00 27 4
gpt4 key购买 nike

我想按矩阵的行找到最大值和索引。我基于 eigen website 上的一个例子(例 7)。

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

using namespace std;
using namespace Eigen;
int main()
{
MatrixXf mat(2,4);
mat << 1, 2, 6, 9,
3, 1, 7, 2;

MatrixXf::Index maxIndex;

VectorXf maxVal = mat.rowwise().maxCoeff(&maxIndex);

std::cout << "Maxima at positions " << endl;
std::cout << maxIndex << std::endl;
std::cout << "maxVal " << maxVal << endl;
}

这里的问题是我的线路
    VectorXf maxVal = mat.rowwise().maxCoeff(&maxIndex);

是错误的。原来的例子有
    float maxNorm = mat.rowwise().sum().maxCoeff(&maxIndex);

即涉及额外的减少 .sum() 。有什么建议吗?我想我只想要与我在 matlab 中写成的特征等效的特征
[maxval maxind] = max(mymatrix,[],2)

即找到最大值及其在 mymatrix 的第二维上的索引,并在 (nrow(mymatrix),2) 矩阵中返回。
谢谢!

(也发送到特征列表,抱歉交叉发布。)

最佳答案

我的猜测是,如果不使用使用当前 api 的 for 循环,这是不可能的。正如您自己所说,您可以使用获得最大行值的向量

VectorXf maxVal = mat.rowwise().maxCoeff();

据我从 maxCoeff() 的 API 文档中得知它只会写回单个索引值。以下代码(未经测试)应该给你你想要的:
MatrixXf::Index   maxIndex[2];
VectorXf maxVal(2);
for(int i=0;i<2;++i)
maxVal(i) = mat.row(i).maxCoeff( &maxIndex[i] );

关于eigen - 在 Eigen 中找到 rowwise maxCoeff 和 Index of maxCoeff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11430588/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com