/// <summary> /// Сортировка по времени /// </summary> /// <param name="pair">Массив пар X Y</param> /// <returns>Сортированный массив</returns> Signals.CoordPair Sort(Signals.CoordPair pair) { List <double> x = new List <double>(); List <double> y = new List <double>(); while (pair.X.Count > 0) { double min = double.PositiveInfinity; int index = -1; for (int i = 0; i < pair.X.Count; i++) { if (min > pair.X[i]) { min = pair.X[i]; index = i; } } if (index != -1) { x.Add(pair.X[index]); y.Add(pair.Y[index]); pair.X.RemoveAt(index); pair.Y.RemoveAt(index); } else { break; } } return(new Signals.CoordPair(x, y)); }
/// <summary> /// Удаление (или складывать?) низших кармоник, накладывающихся по времени друг на друга /// </summary> /// <param name="pair">Массив пар X Y</param> void DelDupli(ref Signals.CoordPair pair) { bool duplicate = false; do { duplicate = false; for (int i = 0; i < pair.X.Count - 1; i++) { if (pair.X[i] == pair.X[i + 1]) { int index = pair.Y[i] < pair.Y[i + 1] ? i : i + 1; pair.X.RemoveAt(index); pair.Y.RemoveAt(index); duplicate = true; } } } while (duplicate); }