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

◆ power() [1/2]

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

Power (sum of squares) 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 power values

Definition at line 70 of file Analysis.cpp.

71{
72 std::vector<double> out(n_windows);
73 std::vector<size_t> idx(n_windows);
74 std::iota(idx.begin(), idx.end(), 0);
75
76 Parallel::for_each(Parallel::par_unseq, idx.begin(), idx.end(),
77 [&](size_t i) {
78 const size_t start = i * hop_size;
79 auto w = data.subspan(start, std::min<size_t>(window_size, data.size() - start));
80 double sq = 0.0;
81 for (double s : w)
82 sq += s * s;
83 out[i] = sq;
84 });
85
86 return out;
87}