25 #include "generic_matrix.hpp"
30 double index_interp1d(
const std::vector<double>& x,
double xq,
bool equidistant) {
33 double delta = x[1]-x[0];
34 double i = (xq-x[0])/delta;
35 double imax =
static_cast<double>(x.size()-1);
36 return std::max(std::min(i, imax), 0.0);
39 std::vector<double>::const_iterator it = std::lower_bound(x.begin(), x.end(), xq);
42 if (it==x.end())
return static_cast<double>(x.size()-1);
45 if (it==x.begin())
return 0.0;
47 casadi_int i = std::distance(x.begin(), it);
50 if (*it == xq)
return static_cast<double>(i);
55 return static_cast<double>(i)+(xq-b)/(b-a);
double index_interp1d(const std::vector< double > &x, double xq, bool equidistant)