用零 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);
如前所述,我想以最有效的方式将 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);