41 template<
typename TReal>
42 struct Gauss : std::unary_function <TReal, TReal> {
70 template<
typename TReal>
84 TReal T2 = exp( -0.5 * pow( ( ( x-
mu_ ) /
sigma_ ) , TReal(2.) ) );
93 template<
typename TReal>
95 std::vector<TReal> &gauss,
96 std::vector<TReal> &
x )
100 gauss.resize(x.size());
101 std::transform(x.begin(),x.end(),gauss.begin(),g);
104 TReal sum = std::accumulate(gauss.begin() , gauss.end() , 0.);
105 std::transform(gauss.begin(),gauss.end(),gauss.begin(),std::bind2nd(std::divides<TReal>(),sum )) ;
106 TReal sumfilter = std::accumulate(gauss.begin(),gauss.end(),0.);
111 template<
typename TReal>
113 std::vector<TReal> &mh
117 TReal sum = std::accumulate(mh.begin() , mh.end() , 0.);
119 std::transform(mh.begin(),mh.end(),mh.begin(),std::bind2nd(std::minus<TReal>(), sum )) ;
122 for(
typename std::vector<TReal>::iterator it = mh.begin() ;it != mh.end(); ++it)
126 std::transform(mh.begin(),mh.end(),mh.begin(),std::bind2nd(std::divides<TReal>(), sumAbs )) ;
129 template<
typename TReal>
133 gauss1d.resize(x.size());
134 std::transform(x.begin(),x.end(),gauss1d.begin(),g);
136 TReal sum = std::accumulate(gauss1d.begin(),gauss1d.end(),0.);
void scaleDerivative(std::vector< TReal > &mh)
Gauss(TReal mu, TReal sigma)
TReal getGaussian1DerWorker(TReal sigma, std::vector< TReal > &gauss1d, std::vector< TReal > &x)
const double PI(3.14159265358979323846264338327950288)
the ratio of the circumference of a circle to its diameter;
TReal operator()(TReal x)
TReal getGaussWorker(TReal sigma, std::vector< TReal > &gauss, std::vector< TReal > &x)
EQUISPACEINTERPOL Interpolation on a equidistantly spaced grid.
KernelTraitsBase< Kernel >::space_type::abscissa_type x
TReal operator()(TReal x)
returns f'(x), with f - Gaussian.
First derivative of Gaussian.
Gauss_1deriv(TReal mu, TReal sigma)
void filter(const TContainer &data, const TContainer &filter, TContainer &result, bool circular=false, uint32_t sides=2)
Applies linear convolution (filtering) to a univariate time series.