Brian Silverman | 72890c2 | 2015-09-19 14:37:37 -0400 | [diff] [blame] | 1 | #include <Eigen/Core> |
| 2 | #include <iostream> |
| 3 | using namespace Eigen; |
| 4 | using namespace std; |
| 5 | |
| 6 | // define a custom template unary functor |
| 7 | template<typename Scalar> |
| 8 | struct CwiseClampOp { |
| 9 | CwiseClampOp(const Scalar& inf, const Scalar& sup) : m_inf(inf), m_sup(sup) {} |
| 10 | const Scalar operator()(const Scalar& x) const { return x<m_inf ? m_inf : (x>m_sup ? m_sup : x); } |
| 11 | Scalar m_inf, m_sup; |
| 12 | }; |
| 13 | |
| 14 | int main(int, char**) |
| 15 | { |
| 16 | Matrix4d m1 = Matrix4d::Random(); |
| 17 | cout << m1 << endl << "becomes: " << endl << m1.unaryExpr(CwiseClampOp<double>(-0.5,0.5)) << endl; |
| 18 | return 0; |
| 19 | } |