我想在特征中取两个向量/矩阵的元素最大值。到目前为止,我已经编写了这段代码:
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)
),我不知道如何继续。我需要创建两个方法吗?
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
.
答案是there http://eigen.tuxfamily.org/dox/group__QuickRefPage.html#title6.
您可以移至“阵列”世界 http://eigen.tuxfamily.org/dox/group__TutorialArrayClass.html并使用最大值:
A.array().max(B.array())
或使用 cwiseMax:
A.cwiseMax(B)
在这两种情况下,B
可以是Matrix
或标量:
A = A.cwiseMax(0);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)