292 checkKernelConcept<Kernel>();
294 typedef typename KernelTraits<Kernel>::correlation_data_type result_type;
297 result.domain = data.domain;
298 if (data.samples.empty())
return result;
299 result.samples.resize((data.samples.size()-1) * subsampleFactor + 1);
301 typedef typename KernelTraits<Kernel>::filter_type filter_type;
307 typedef typename KernelTraits<Kernel>::samples_type samples_type;
309 unsigned int sampleIndex = sampleRadius;
310 for (
typename samples_type::const_iterator itData = data.samples.begin() + sampleRadius;
311 itData + sampleRadius != data.samples.end(); ++itData, ++sampleIndex)
312 for (
unsigned int filterIndex=0; filterIndex<filters.size(); ++filterIndex)
314 unsigned int index = sampleIndex * filters.size() + filterIndex;
316 if (index >= result.samples.size())
319 details::computeCorrelation<Kernel>(itData-sampleRadius, itData+sampleRadius+1,
320 filters[filterIndex].begin(),
321 result.samples[index]);
std::vector< typename KernelTraits< Kernel >::filter_type > createFilters(const Kernel &kernel, int sampleRadius, int subsampleFactor, typename KernelTraits< Kernel >::abscissa_type dx)