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

◆ rms()

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

RMS energy 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 RMS values

Definition at line 32 of file Analysis.cpp.

33{
34 std::vector<double> out(n_windows);
35 std::vector<size_t> idx(n_windows);
36 std::iota(idx.begin(), idx.end(), 0);
37
38 Parallel::for_each(Parallel::par_unseq, idx.begin(), idx.end(),
39 [&](size_t i) {
40 const size_t start = i * hop_size;
41 auto w = data.subspan(start, std::min<size_t>(window_size, data.size() - start));
42 double sq = 0.0;
43 for (double s : w)
44 sq += s * s;
45 out[i] = std::sqrt(sq / static_cast<double>(w.size()));
46 });
47
48 return out;
49}

Referenced by MayaFlux::Yantra::extract_high_energy(), and MayaFlux::Yantra::extract_silence().

+ Here is the caller graph for this function: