Skip to content
Snippets Groups Projects

ENH: Allow `Splinterpolator` instances to be created from an existing set of spline coefficients, and extend extrapolation options

Merged Paul McCarthy requested to merge enh/splinterpolator into master
1 file
+ 6
3
Compare changes
  • Side-by-side
  • Inline
+ 6
3
@@ -1439,16 +1439,19 @@ void Splinterpolator<T>::assign(const Splinterpolator<T>& src)
@@ -1439,16 +1439,19 @@ void Splinterpolator<T>::assign(const Splinterpolator<T>& src)
template<class T>
template<class T>
bool Splinterpolator<T>::calc_coef(const T *data_or_coefs, bool copy, bool data_are_coefs)
bool Splinterpolator<T>::calc_coef(const T *data_or_coefs, bool copy, bool data_are_coefs)
{
{
if (_order < 2 && !copy) { _cptr = data_or_coefs; return(false); }
// No copy, and nearest/interp, or pre-calculated
 
// coefficients - just take a pointer to the data
 
if (_order < 2 && !copy) { _cptr = data_or_coefs; return(false); }
 
if (data_are_coefs && !copy) { _cptr = data_or_coefs; return(false); }
// Allocate memory and put the original data into _coef
// Allocate memory and put the original data into _coef
//
unsigned int ts=1;
unsigned int ts=1;
for (unsigned int i=0; i<_dim.size(); i++) ts *= _dim[i];
for (unsigned int i=0; i<_dim.size(); i++) ts *= _dim[i];
_coef = new T[ts];
_coef = new T[ts];
memcpy(_coef,data_or_coefs,ts*sizeof(T));
memcpy(_coef,data_or_coefs,ts*sizeof(T));
if (_order < 2) return(true); // If nearest neighbour or linear, that's all we need
if (_order < 2) return(true); // If nearest neighbour or linear, that's all we need
 
if (data_are_coefs) return(true); // User has given us pre-calculated coefficients
// Loop over all non-singleton dimensions and deconvolve along them
// Loop over all non-singleton dimensions and deconvolve along them
//
//
Loading