Split single-channel data into overlapping windows.
906{
907 auto extractor = std::make_shared<Yantra::FeatureExtractor<>>(static_cast<uint32_t>(window_size), static_cast<uint32_t>(hop_size),
908 Yantra::ExtractionMethod::OVERLAPPING_WINDOWS);
909 extractor->set_parameter("overlap", double(hop_size) / window_size);
910
912 auto result = extractor->apply_operation(input);
913
914 auto extracted_data = result.
data[0];
915
916 std::vector<std::vector<double>> segments;
917 for (size_t i = 0; i < extracted_data.size(); i += window_size) {
918 size_t end_idx = std::min(i + window_size, extracted_data.size());
919 segments.emplace_back(extracted_data.begin() + i, extracted_data.begin() + end_idx);
920 }
921
922 return segments;
923}
std::variant< std::vector< double >, std::vector< float >, std::vector< uint8_t >, std::vector< uint16_t >, std::vector< uint32_t >, std::vector< std::complex< float > >, std::vector< std::complex< double > >, std::vector< glm::vec2 >, std::vector< glm::vec3 >, std::vector< glm::vec4 >, std::vector< glm::mat4 > > DataVariant
Multi-type data storage for different precision needs.
T data
The actual computation data.
Input/Output container for computation pipeline data flow with structure preservation.