Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private void ExactNoise(List<TmData> data)
- {
- for (int i = 0; i < data.Count - 1; i++)
- {
- if (float.IsNaN(data[i].FuelLevel) || float.IsNaN(data[i].Noise))
- continue;
- double sum = 0;
- int streak=0;
- var time = data[i].Timestamp;
- while ( (data[i+streak].Timestamp-time)<TimeSpan.FromMinutes(5) && Math.Abs(sum)<5.0)
- {
- streak++;
- if (i+streak >= data.Count || float.IsNaN(data[i+streak].Noise))
- {
- streak--;
- break;
- }
- sum += (data[i-1+streak].Noise + data[i+streak].Noise) * (data[i + streak].Timestamp - data[i-1+streak].Timestamp).TotalMinutes / 2;
- }
- data[i].FilterNoise = 0;
- if (Math.Abs(sum/(data[i + streak].Timestamp - time).TotalMinutes)<1.0) continue;
- int l = i;
- int r = i + streak;
- int sgn = Math.Sign(sum);
- while (l > 0 && Math.Sign(data[l].Noise) == sgn) l--;
- while (r < data.Count && Math.Sign(data[l].Noise) == sgn) r++; //debug все плохо если слив
- //fill from r to l
- var newsum = data[r-1].SmoothFuelTime - data[l].SmoothFuelTime;
- if (Math.Abs(newsum) < 5.0) continue;
- for (int k = l; k < r; k++)
- {
- data[k].FilterNoise = newsum;
- data[k].Cuted = true;
- }
- i = r;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement