void findPeak(const vector<int>& v, vector<int>& peakPositions)
{
vector<int> diff_v(v.size() - 1, 0);
// 计算V的一阶差分和符号函数trend
for (vector<int>::size_type i = 0; i != diff_v.size(); i++)
{
if (v[i + 1] - v[i]>0)
diff_v[i] = 1;
else if (v[i + 1] - v[i] < 0)
diff_v[i] = -1;
else
diff_v[i] = 0;
}
// 对Trend作了一个遍历
for (int i = diff_v.size() - 1; i >= 0; i--)
{
if (diff_v[i] == 0 && i == diff_v.size() - 1)
{
diff_v[i] = 1;
}
else if (diff_v[i] == 0)
{
if (diff_v[i + 1] >= 0)
diff_v[i] = 1;
else
diff_v[i] = -1;
}
}
for (vector<int>::size_type i = 0; i != diff_v.size() - 1; i++)
{
if (diff_v[i + 1] - diff_v[i] == -2)
peakPositions.push_back(i + 1);
}
}
波峰坐标的寻找
最新推荐文章于 2023-12-17 11:28:18 发布