MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ auto_correlate()

MAYAFLUX_API std::vector< double > MayaFlux::Kinesis::Discrete::auto_correlate ( std::span< const double >  src,
bool  normalize = true 
)

Auto-correlation via FFT.

Parameters
srcInput signal
normalizeNormalise result to zero-lag peak
Returns
Auto-correlation, same length as src

Definition at line 139 of file Convolution.cpp.

140{
142 [](const auto& s, const auto&, auto& r) {
143 std::transform(std::execution::par_unseq, s.begin(), s.end(), s.begin(), r.begin(),
144 [](const std::complex<double>& a, const std::complex<double>& b) {
145 return a * std::conj(b);
146 });
147 });
148
149 if (normalize && !out.empty()) {
150 const double peak = *std::max_element(out.begin(), out.end());
151 if (peak > 0.0) {
152 std::transform(std::execution::par_unseq, out.begin(), out.end(), out.begin(),
153 [peak](double v) { return v / peak; });
154 }
155 }
156
157 return out;
158}
const uint32_t * src
size_t a
size_t b
std::vector< float > * out
std::vector< double > apply_convolution(std::span< const double > src, std::span< const double > kernel, const ConvolutionProcessor &processor, bool full_size)
Core FFT convolution engine.

References a, apply_convolution(), auto_correlate(), b, normalize(), out, peak(), and src.

Referenced by auto_correlate(), and MayaFlux::Yantra::ConvolutionTransformer< InputType, OutputType >::transform_implementation().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: