private void ComputeSuperFeatures() { foreach (IFeature f in SubFeatures) { FastQueue <double> CurrentQueue = SubResults[f]; List <double> CurrentData = CurrentQueue.Peek(SuperWindowLength); CurrentQueue.Delete(SuperWindowShift); DataProvider.Data = CurrentData; List <IFeature> CurrentSuperFeatures = SuperFeatures[f]; foreach (IFeature superf in CurrentSuperFeatures) { superf.Compute(); FinalFeatures.Add(superf.Feature); } } if (SuperFeaturesComputed != null) { SubFeaturesComputedEventArgs e = new SubFeaturesComputedEventArgs(); e.ComputedFeatures = FinalFeatures; SuperFeaturesComputed.Invoke(this, e); } Classify(); AllFeatures.Add(new List <double>(FinalFeatures)); FinalFeatures.Clear(); if (SubResults.First().Value.Count > SuperWindowLength) { ComputeSuperFeatures(); } }
private void ComputeSubFeatures() { //DateTime d = DateTime.Now; List <double> CurrentData; CurrentData = this.SubData.Peek(SubWindowLength); this.SubData.Delete(SubWindowShift); DataProvider.Data = CurrentData; List <double> ComputedFeatures = new List <double>(); foreach (IFeature f in SubFeatures) { f.Compute(); SubResults[f].Enqueue(f.Feature); ComputedFeatures.Add(f.Feature); } //TimeSpan ts = DateTime.Now - d; //int ms = ts.Milliseconds; //SubFeaturesComputedEventArgs e = new SubFeaturesComputedEventArgs(); //e.ComputedFeatures = ComputedFeatures; //SubFeaturesComputed.Invoke(this, e); if (SubResults.First().Value.Count > SuperWindowLength) { ComputeSuperFeatures(); } if (this.SubData.Count > SubWindowLength) { ComputeSubFeatures(); } }