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

◆ peak()

std::vector< double > MayaFlux::Kinesis::Discrete::peak ( std::span< const double >  data,
size_t  n_windows,
uint32_t  hop_size,
uint32_t  window_size 
)

Peak amplitude per window.

Parameters
dataInput span
n_windowsPre-computed window count from num_windows()
hop_sizeSamples between window starts
window_sizeSamples per window
Returns
Per-window peak absolute values

Definition at line 51 of file Analysis.cpp.

52{
53 std::vector<double> out(n_windows);
54 std::vector<size_t> idx(n_windows);
55 std::iota(idx.begin(), idx.end(), 0);
56
57 Parallel::for_each(Parallel::par_unseq, idx.begin(), idx.end(),
58 [&](size_t i) {
59 const size_t start = i * hop_size;
60 auto w = data.subspan(start, std::min<size_t>(window_size, data.size() - start));
61 double mx = 0.0;
62 for (double s : w)
63 mx = std::max(mx, std::abs(s));
64 out[i] = mx;
65 });
66
67 return out;
68}

Referenced by cross_correlate().

+ Here is the caller graph for this function: