用零 eigen3 c++ 替换所有负元素

Replacing all negative elements with zero eigen3 c++

如前所述,我想以最有效的方式将 C++ 中 eigen3 矩阵中所有 < 0 的元素替换为零。

我检查是否有负元素使用:

(result.array() < 0).any()

我找到了一个方法: 创建一个相同形状的零矩阵,

zero_matrix.setZero();

并找到零矩阵和你的矩阵之间的系数最大值。

result = result.array().max(zero_matrix.array());

比您提议的方法更好、更有效的方法是使用 select 方法。

result = (result.array() < 0).select(0, result);