Ich möchte das elementweise Maximum von zwei Vektoren/Matrizen in Eigen nehmen. Bis jetzt habe ich diesen Code geschrieben:Elementweise Max und positiver Teil in Eigen
template <typename S, typename T>
auto elemwise_max(const S & A, const T & B) {
return (A.array() > B.array()).select(A, B);
}
Ist das korrekt, oder gibt es eine bessere Möglichkeit, dies zu tun?
Für den positiven Teil (dh. max(A, 0)
), bin ich mir nicht sicher, wie es weiter geht. Muss ich zwei Methoden erstellen?
template <typename S>
auto positive_part_matrix(const S & A) {
auto zeros = S::Zero(A.rows(), A.cols());
return elemwise_max(A, zeros);
}
template <typename S>
auto positive_part_vec(const S & A) {
auto zeros = S::Zero(A.size());
return elemwise_max(A, zeros);
}
Idealerweise würden beide der oben genannten nur positive_part
genannt werden.