Eigenの2つのベクトル/行列の要素的な最大値を取りたいと思います。これまでのところ、私はこのコードを書いています:Eigenの要素的な最大と正の部分
template <typename S, typename T>
auto elemwise_max(const S & A, const T & B) {
return (A.array() > B.array()).select(A, B);
}
これは正しいですか、これはこれを行う良い方法ですか?
正の部分(つまり、max(A, 0)
)については、どのように進むべきかわかりません。 2つの方法を作成する必要がありますか?
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);
}
理想的には両方ともpositive_part
と呼ばれます。