/// <summary> /// Obtain all the sliding window sub seqences given a time series and a length w /// </summary> /// <param name="TimeSeries"></param> /// <param name="w"></param> /// <returns></returns> private List<SubTimeSeries> SlidingWindowSampling(SubTimeSeries TimeSeries, int w) { List<SubTimeSeries> SlidingTimeSeriesSet = new List<SubTimeSeries>(); for (int i = 0; i < TimeSeries.TimeSeries.Count; i++) { if (i + w < TimeSeries.TimeSeries.Count) { SubTimeSeries subSequence = new SubTimeSeries(); for (int j = 0; j < w; j++) { subSequence.TimeSeries.Add(TimeSeries.TimeSeries[i + j]); } subSequence.index = i + TimeSeries.index; SlidingTimeSeriesSet.Add(subSequence); } } return SlidingTimeSeriesSet; }
/// <summary> /// Samping the Noise Set /// </summary> /// <param name="TimeSeries"></param> /// <param name="WMax"></param> /// <param name="WMin"></param> /// <returns></returns> private List<SubTimeSeries> SamplingNoiseSet(List<double> TimeSeries, int WMax, int WMin) { List<SubTimeSeries> SubSet = new List<SubTimeSeries>(); Random rand = new Random(); SubTimeSeries SubSequence = new SubTimeSeries(); for (int i = 0; i < WMax; i++) { int index = rand.Next(TimeSeries.Count); SubSequence.TimeSeries.Add(TimeSeries[index]); } List<SubTimeSeries> SlidingWindowSet = SlidingWindowSampling(SubSequence, WMin); foreach (SubTimeSeries SlidingSeries in SlidingWindowSet) { SubSet.Add(SlidingSeries); } return SubSet; }
/// <summary> /// Sample one sub sequence give a length w /// </summary> /// <param name="TimeSeries"></param> /// <param name="w"></param> /// <returns></returns> private SubTimeSeries SamplingSubSequence(List<double> TimeSeries, int w) { Random rand = new Random(); int index = rand.Next(TimeSeries.Count); while (index + w - 1 >= 1000) index = rand.Next(TimeSeries.Count); SubTimeSeries SubSequence = new SubTimeSeries(); for (int i = index; i < index + w - 1; i++) { SubSequence.TimeSeries.Add(TimeSeries[i]); } SubSequence.index = index; return SubSequence; }
/// <summary> /// A tool method used for insert sorting. /// </summary> /// <param name="CandidateSet"></param> /// <param name="CandidateSequence"></param> private void InsertInto(ref List<SubTimeSeries> CandidateSet, SubTimeSeries CandidateSequence) { for (int i =0; i < CandidateSet.Count; i++) { if (CandidateSequence.dist < CandidateSet[i].dist) { for (int j = CandidateSet.Count - 1; j > i; j--) { CandidateSet[j] = CandidateSet[j - 1]; } CandidateSet[i] = CandidateSequence; } } }