|
|
@ -228,16 +228,29 @@ float find_avg_line(vector<float>& inputRaw) { |
|
|
|
* ALGO_IMPL * |
|
|
|
***********************************************************************************************************************/ |
|
|
|
|
|
|
|
int32_t findPeakTurnPoint(vector<float>& data, int32_t search_start, int32_t suggest_search_end) { |
|
|
|
int32_t search_end = 0; |
|
|
|
for (int32_t i = search_start; i < suggest_search_end; i++) { |
|
|
|
if (data[i] > m_cxt.agvline) { |
|
|
|
search_end = i; |
|
|
|
int32_t findPeakStartTurnPoint(vector<float>& data, int32_t search_start, int32_t suggest_search_end) { |
|
|
|
// int32_t search_end = 0;
|
|
|
|
// for (int32_t i = search_start; i < suggest_search_end; i++) {
|
|
|
|
// if (data[i] > m_cxt.agvline) {
|
|
|
|
// search_end = i;
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
int32_t search_end = suggest_search_end; |
|
|
|
int32_t peakTurnPos = search_start; |
|
|
|
float maxdiff2 = m_cxt.diffX2[search_start]; |
|
|
|
for (int32_t i = search_start; i < search_end; i++) { |
|
|
|
if (m_cxt.diffX2[i] > maxdiff2) { |
|
|
|
maxdiff2 = m_cxt.diffX2[i]; |
|
|
|
peakTurnPos = i; |
|
|
|
} |
|
|
|
} |
|
|
|
return peakTurnPos; |
|
|
|
} |
|
|
|
|
|
|
|
int32_t peakTurnPos = 0; |
|
|
|
float maxdiff2 = 0; |
|
|
|
int32_t findPeakEndTurnPoint(vector<float>& data, int32_t search_start, int32_t suggest_search_end) { |
|
|
|
int32_t search_end = suggest_search_end; |
|
|
|
int32_t peakTurnPos = search_start; |
|
|
|
float maxdiff2 = m_cxt.diffX2[search_start]; |
|
|
|
for (int32_t i = search_start; i < search_end; i++) { |
|
|
|
if (m_cxt.diffX2[i] > maxdiff2) { |
|
|
|
maxdiff2 = m_cxt.diffX2[i]; |
|
|
@ -295,8 +308,8 @@ void findpeak(vector<float>& data, int32_t search_start, int32_t search_end, Pea |
|
|
|
// find_peak_start
|
|
|
|
// 从pos向前找20个点,从低于均值线的坐标开始找,找到diff2的最大值
|
|
|
|
retpeak.peak_pos = peakpos; |
|
|
|
retpeak.peak_start_pos = findPeakTurnPoint(data, peakpos - 20, peakpos) - 4; //-4 是经验数值
|
|
|
|
retpeak.peak_end_pos = findPeakTurnPoint(data, peakpos, peakpos + 20) + 4; //+4 是经验数值
|
|
|
|
retpeak.peak_start_pos = findPeakStartTurnPoint(data, peakpos - 20, peakpos) - 4; //-4 是经验数值
|
|
|
|
retpeak.peak_end_pos = findPeakEndTurnPoint(data, peakpos, peakpos + 20) + 4; //+4 是经验数值
|
|
|
|
retpeak.area = computePeakArea(data, retpeak.peak_start_pos, retpeak.peak_end_pos); |
|
|
|
retpeak.find_peak = true; |
|
|
|
|
|
|
|