Chcę znaleźć maksymalne wartości i indeksy według wiersza macierzy. Oparłem to na przykładzie na eigen website (przykład 7).find rowwise maxCoeff and Index of maxCoeff in Eigen
#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;
}
Problem jest to, że moja linia
VectorXf maxVal = mat.rowwise().maxCoeff(&maxIndex);
jest źle. Oryginalny przykład ma
float maxNorm = mat.rowwise().sum().maxCoeff(&maxIndex);
, tj. Zawiera dodatkową redukcję .sum(). jakieś sugestie? Chyba po prostu chcesz eigen równowartość co w Matlab chciałbym napisać jak
[maxval maxind] = max(mymatrix,[],2)
tj znaleźć maksymalną wartość i jest to wskaźnik nad drugim wymiarem o nazwie myMatrix i wrócić w (nrow (o nazwie myMatrix), 2) matryca. dzięki!
(wysłane do listy EIGEN jak dobrze, przepraszam za cross-posting.)
Cześć jakob. tak, to jest to, co zaimplementowałem w międzyczasie. dzięki za odpowiedź! Opierałem się na forum eigen kde, ponieważ nie ma wielu użytkowników własnych na SOF. –