35 #ifndef OPENMS_MATH_MISC_SPLINE2D_H
36 #define OPENMS_MATH_MISC_SPLINE2D_H
40 #include <unsupported/Eigen/Splines>
51 template<
typename ValType =
double>
55 typedef Eigen::Matrix< ValType, Eigen::Dynamic, Eigen::Dynamic >
MatrixT;
56 typedef Eigen::Matrix< ValType, Eigen::Dynamic, 1 >
VectorT;
66 Spline2d(
unsigned degree,
const std::vector<ValType>& x,
67 const std::vector<ValType>& y)
70 assert(x.size() == y.size());
71 size_t num_data_points = x.size();
72 MatrixT raw_values (2, num_data_points);
73 for (
unsigned i=0; i<num_data_points; ++i)
75 raw_values(0, i) = x.at(i);
76 raw_values(1, i) = y.at(i);
82 Spline2d(
unsigned degree,
const std::map<ValType, ValType>& m)
84 size_t num_data_points = m.size();
85 MatrixT raw_values (2, num_data_points);
86 typename std::map<ValType, ValType>::const_iterator map_it;
88 for (map_it = m.begin(); map_it != m.end(); ++map_it, ++colIdx)
90 raw_values(0, colIdx) = map_it->first;
91 raw_values(1, colIdx) = map_it->second;
97 Spline2d(
unsigned degree,
const MatrixT& raw_values)
123 return (x - minXCoeff_) / (maxXCoeff_ -
minXCoeff_);
129 minXCoeff_ = raw_values.row(0).minCoeff();
130 maxXCoeff_ = raw_values.row(0).maxCoeff();
133 size_t num_data_points = raw_values.row(0).size();
134 assert(num_data_points > degree);
135 VectorT uvalues (num_data_points);
136 for (Eigen::DenseIndex j=0; j<(Eigen::DenseIndex) num_data_points; ++j)
140 spline_ = Eigen::SplineFitting< Eigen::Spline<ValType,2> >::Interpolate(raw_values, degree, uvalues.transpose());
Eigen::Matrix< ValType, Eigen::Dynamic, 1 > VectorT
Definition: Spline2d.h:56
ValType maxXCoeff_
Definition: Spline2d.h:117
Wrapper for Spline interpolation.
Definition: Spline2d.h:52
ValType value_type
Definition: Spline2d.h:59
Eigen::Matrix< ValType, Eigen::Dynamic, Eigen::Dynamic > MatrixT
Definition: Spline2d.h:55
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:47
ValType derivatives(ValType x, unsigned order) const
Definition: Spline2d.h:108
ValType eval(ValType x) const
Definition: Spline2d.h:103
Eigen::Spline< ValType, 2 > spline_
Definition: Spline2d.h:115
void initialize(unsigned degree, const MatrixT &raw_values)
Definition: Spline2d.h:127
Spline2d(unsigned degree, const std::map< ValType, ValType > &m)
Definition: Spline2d.h:82
Spline2d(unsigned degree, const MatrixT &raw_values)
Definition: Spline2d.h:97
ValType minXCoeff_
Definition: Spline2d.h:116
Spline2d(unsigned degree, const std::vector< ValType > &x, const std::vector< ValType > &y)
Definition: Spline2d.h:66
ValType getNormIndex(ValType x) const
Definition: Spline2d.h:121