Advanced Chunk Processing Library 0.2.0
A comprehensive C++ library for advanced data chunking strategies and processing operations
Loading...
Searching...
No Matches
chunk_windows::SlidingWindowProcessor< T > Class Template Reference

#include <chunk_windows.hpp>

Public Member Functions

 SlidingWindowProcessor (size_t window_size, size_t step_size)
 
size_t get_step_size () const
 
size_t get_window_size () const
 
std::vector< T > process (const std::vector< T > &data, std::function< T(const std::vector< T > &)> window_func)
 
void set_step_size (size_t size)
 
void set_window_size (size_t size)
 

Private Member Functions

std::vector< T > process_multidimensional (const std::vector< T > &data, std::function< T(const std::vector< T > &)> window_func)
 
std::vector< T > process_single_dimensional (const std::vector< T > &data, std::function< T(const std::vector< T > &)> window_func)
 
std::vector< T > process_window (const std::vector< T > &data, std::function< T(const std::vector< T > &)> window_func)
 

Static Private Member Functions

template<typename U >
static double compute_window_feature (const U &window)
 

Private Attributes

size_t step_size_
 
size_t window_size_
 

Detailed Description

template<typename T>
class chunk_windows::SlidingWindowProcessor< T >

Definition at line 13 of file chunk_windows.hpp.

Constructor & Destructor Documentation

◆ SlidingWindowProcessor()

template<typename T >
chunk_windows::SlidingWindowProcessor< T >::SlidingWindowProcessor ( size_t  window_size,
size_t  step_size 
)
inline

Definition at line 77 of file chunk_windows.hpp.

78 : window_size_(window_size), step_size_(step_size) {
79 if (window_size == 0)
80 throw std::invalid_argument("Window size cannot be zero");
81 if (step_size == 0)
82 throw std::invalid_argument("Step size cannot be zero");
83 }

Member Function Documentation

◆ compute_window_feature()

template<typename T >
template<typename U >
static double chunk_windows::SlidingWindowProcessor< T >::compute_window_feature ( const U &  window)
inlinestaticprivate

Definition at line 19 of file chunk_windows.hpp.

19 {
22 // Handle 2D arrays
23 double sum = 0.0;
24 for (const auto& inner : window) {
25 sum += compute_window_feature(inner);
26 }
27 return sum / window.size();
28 } else {
29 // Handle 1D arrays
30 return std::accumulate(window.begin(), window.end(), 0.0) / window.size();
31 }
32 } else {
33 // Handle scalar values
34 return static_cast<double>(window);
35 }
36 }
static double compute_window_feature(const U &window)

References chunk_windows::SlidingWindowProcessor< T >::compute_window_feature().

Referenced by chunk_windows::SlidingWindowProcessor< T >::compute_window_feature().

◆ get_step_size()

template<typename T >
size_t chunk_windows::SlidingWindowProcessor< T >::get_step_size ( ) const
inline

Definition at line 98 of file chunk_windows.hpp.

98 {
99 return step_size_;
100 }

References chunk_windows::SlidingWindowProcessor< T >::step_size_.

◆ get_window_size()

template<typename T >
size_t chunk_windows::SlidingWindowProcessor< T >::get_window_size ( ) const
inline

Definition at line 95 of file chunk_windows.hpp.

95 {
96 return window_size_;
97 }

References chunk_windows::SlidingWindowProcessor< T >::window_size_.

◆ process()

template<typename T >
std::vector< T > chunk_windows::SlidingWindowProcessor< T >::process ( const std::vector< T > &  data,
std::function< T(const std::vector< T > &)>  window_func 
)
inline

Definition at line 85 of file chunk_windows.hpp.

86 {
87 if (data.size() < window_size_) {
88 return {}; // Return empty if data is smaller than window
89 }
90
91 return process_window(data, window_func);
92 }
std::vector< T > process_window(const std::vector< T > &data, std::function< T(const std::vector< T > &)> window_func)

References chunk_windows::SlidingWindowProcessor< T >::process_window(), and chunk_windows::SlidingWindowProcessor< T >::window_size_.

◆ process_multidimensional()

template<typename T >
std::vector< T > chunk_windows::SlidingWindowProcessor< T >::process_multidimensional ( const std::vector< T > &  data,
std::function< T(const std::vector< T > &)>  window_func 
)
inlineprivate

Definition at line 38 of file chunk_windows.hpp.

39 {
40 // Implementation for multi-dimensional data
41 std::vector<T> results;
42 for (size_t i = 0; i <= data.size() - window_size_; i += step_size_) {
43 std::vector<T> window(data.begin() + i, data.begin() + i + window_size_);
44 results.push_back(window_func(window));
45 }
46 return results;
47 }

References chunk_windows::SlidingWindowProcessor< T >::step_size_, and chunk_windows::SlidingWindowProcessor< T >::window_size_.

Referenced by chunk_windows::SlidingWindowProcessor< T >::process_window().

◆ process_single_dimensional()

template<typename T >
std::vector< T > chunk_windows::SlidingWindowProcessor< T >::process_single_dimensional ( const std::vector< T > &  data,
std::function< T(const std::vector< T > &)>  window_func 
)
inlineprivate

Definition at line 49 of file chunk_windows.hpp.

50 {
51 std::vector<T> results;
52 // Create sliding windows of the specified size
53 for (size_t i = 0; i <= data.size() - window_size_; i += step_size_) {
54 std::vector<T> window(data.begin() + i, data.begin() + i + window_size_);
55 results.push_back(window_func(window));
56 }
57 return results;
58 }

References chunk_windows::SlidingWindowProcessor< T >::step_size_, and chunk_windows::SlidingWindowProcessor< T >::window_size_.

Referenced by chunk_windows::SlidingWindowProcessor< T >::process_window().

◆ process_window()

template<typename T >
std::vector< T > chunk_windows::SlidingWindowProcessor< T >::process_window ( const std::vector< T > &  data,
std::function< T(const std::vector< T > &)>  window_func 
)
inlineprivate

Definition at line 60 of file chunk_windows.hpp.

61 {
64 // Handle 2D arrays
65 return process_multidimensional(data, window_func);
66 } else {
67 // Handle 1D arrays
68 return process_single_dimensional(data, window_func);
69 }
70 } else {
71 // Handle scalar values
72 return process_single_dimensional(data, window_func);
73 }
74 }
std::vector< T > process_single_dimensional(const std::vector< T > &data, std::function< T(const std::vector< T > &)> window_func)
std::vector< T > process_multidimensional(const std::vector< T > &data, std::function< T(const std::vector< T > &)> window_func)

References chunk_windows::SlidingWindowProcessor< T >::process_multidimensional(), and chunk_windows::SlidingWindowProcessor< T >::process_single_dimensional().

Referenced by chunk_windows::SlidingWindowProcessor< T >::process().

◆ set_step_size()

template<typename T >
void chunk_windows::SlidingWindowProcessor< T >::set_step_size ( size_t  size)
inline

Definition at line 108 of file chunk_windows.hpp.

108 {
109 if (size == 0)
110 throw std::invalid_argument("Step size cannot be zero");
111 step_size_ = size;
112 }

References chunk_windows::SlidingWindowProcessor< T >::step_size_.

◆ set_window_size()

template<typename T >
void chunk_windows::SlidingWindowProcessor< T >::set_window_size ( size_t  size)
inline

Definition at line 103 of file chunk_windows.hpp.

103 {
104 if (size == 0)
105 throw std::invalid_argument("Window size cannot be zero");
106 window_size_ = size;
107 }

References chunk_windows::SlidingWindowProcessor< T >::window_size_.

Member Data Documentation

◆ step_size_

◆ window_size_


The documentation for this class was generated from the following file: