31 size_t data_size)
noexcept;
43 const std::vector<std::pair<size_t, size_t>>& intervals);
52 std::span<const double> data,
53 const std::vector<std::pair<size_t, size_t>>& intervals);
63 const std::vector<size_t>& positions,
75 const std::vector<size_t>& window_starts,
91 std::span<const double> data,
103 std::span<const double> data,
104 const std::vector<size_t>& window_starts,
105 uint32_t window_size);
std::vector< double > overlapping_windows(std::span< const double > data, uint32_t window_size, double overlap)
Extract overlapping windows as a flat concatenated vector.
std::vector< double > windowed_by_indices(std::span< const double > data, const std::vector< size_t > &window_starts, uint32_t window_size)
Extract windows at specific starting indices as a flat concatenated vector.
bool validate_window_parameters(uint32_t window_size, uint32_t hop_size, size_t data_size) noexcept
Validate window/hop parameters for windowed processing.
std::vector< std::pair< size_t, size_t > > merge_intervals(const std::vector< std::pair< size_t, size_t > > &intervals)
Merge overlapping or adjacent half-open intervals.
std::vector< std::pair< size_t, size_t > > intervals_from_window_starts(const std::vector< size_t > &window_starts, uint32_t window_size, size_t data_size)
Build [start, end) intervals from window start indices.
std::vector< double > slice_intervals(std::span< const double > data, const std::vector< std::pair< size_t, size_t > > &intervals)
Copy data from a set of half-open intervals into a flat vector.
std::vector< std::pair< size_t, size_t > > regions_around_positions(const std::vector< size_t > &positions, size_t half_region, size_t data_size)
Build [start, end) intervals centred on a set of positions.