| | |
| | | // |
| | | |
| | | #pragma once |
| | | #include <map> |
| | | #include <vector> |
| | | #include <numeric> |
| | | #include <algorithm> |
| | |
| | | * @param fJumpThreshold 跳变阈值,用于检测数据的明显断点。 |
| | | * @param nWindow 跳变判断的前后窗口宽度。 |
| | | * @param nValleyMargin valley 点之后多少个点作为实际切割点。 |
| | | * @param nMinGlass1Count 第一段最少有效点数限制。 |
| | | * @param nMinGlass1Count 最少有效点数限制。 |
| | | * |
| | | * @return true 表示切割成功,false 表示失败(例如数据不足或无明显跳变)。 |
| | | */ |
| | | bool SplitGlassSegments(int nOutNo, const std::vector<float>& validData, |
| | | std::vector<float>& vecGlass1, std::vector<float>& vecGlass2, |
| | | float fJumpThreshold = 1.0f, int nWindow = 3, int nValleyMargin = 0, |
| | | int nMinGlass1Count = 10); |
| | | float fJumpThreshold = 0.2f, int nWindow = 3, int nValleyMargin = 0, |
| | | int nMinGlassCount = 10); |
| | | |
| | | /** |
| | | * @brief 对数据按整数部分进行分组,保留数据量最多的一组(排除异常/干扰)。 |
| | | * |
| | | * @param nOutNo 输出通道编号,用于日志记录。 |
| | | * @param vecInput 原始浮点数据(已裁剪无效值)。 |
| | | * @param vecOutput 输出被保留的主要分组数据(最多的那组)。 |
| | | * |
| | | * @return true 表示成功过滤出主分组,false 表示所有数据都被过滤或为空。 |
| | | */ |
| | | bool FilterDominantGroup(int nOutNo, const std::vector<float>& vecInput, std::vector<float>& vecOutput); |
| | | |
| | | /** |
| | | * @brief 从输入数据中提取一个固定长度的稳定区间。 |