特征中的元素最大值和正部分 [英] Element-wise max and positive part in Eigen

查看:51
本文介绍了特征中的元素最大值和正部分的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想取本征中两个向量/矩阵的元素最大值。到目前为止,我已经编写了以下代码:

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);

这篇关于特征中的元素最大值和正部分的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆