Browse Source

update

master
zhaohe 1 year ago
parent
commit
6c49103a2f
  1. 31
      a8k_opt_algo.cpp

31
a8k_opt_algo.cpp

@ -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;

Loading…
Cancel
Save