特征中的元素最大值和正部分
我想取本征中两个向量/矩阵的元素最大值。到目前为止,我已经编写了以下代码:
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。
您可以移动到"array" world并使用max:
A.array().max(B.array())
或使用cwiseMax:
A.cwiseMax(B)
在这两种情况下,B
可以是Matrix
或标量:
A = A.cwiseMax(0);
相关文章