/// <summary>
/// 田尚滨线性凹凸压缩算法
/// </summary>
/// <param name="devices"></param>
/// <param name="a"></param>
private void cagyfilter(IList<BasicDevice> devices, List<PowerVoltageCurrent> a)
{
devices.Add(a[0]);//添加第一个数字
for (int i = 0; i < a.Count - 2; i++)//小于12的时候
{
if (a[i].Value == a[i + 1].Value)//去掉相邻重复的
{
a.Remove(a[i + 1]);
i--;//减第一次,表示数据少了一个
i--;//减第二次,表示当前的循环无效,重新循环
if (i <= 0) i = 0;//防止数组的i长缩回去了
continue;//继续循环
}
//凸凸算法
if (a[i].Value > a[i + 1].Value)
{
//三个数,如果中间的数字最小,就添加到数组中
if (a[i + 1].Value < a[i + 2].Value)
{
devices.Add(a[i + 1]);//添加
}
}
//凹凹算法
if (a[i].Value < a[i + 1].Value)
{
//三个数,如果中间的数字最大,就添加到数组中
if (a[i + 1].Value > a[i + 2].Value)
{
devices.Add(a[i + 1]);//添加
}
}
}
devices.Add(a[a.Count - 1]);//添加最后一个
}