Wideband autonomous SDR analysis engine forked from sdr-visual-suite
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

38 lines
715B

  1. package main
  2. import "sdr-wideband-suite/internal/pipeline"
  3. func buildWindowStats(windows []pipeline.RefinementWindow) *RefinementWindowStats {
  4. if len(windows) == 0 {
  5. return nil
  6. }
  7. stats := &RefinementWindowStats{Sources: map[string]int{}}
  8. minSpan := 0.0
  9. maxSpan := 0.0
  10. sum := 0.0
  11. for i, w := range windows {
  12. span := w.SpanHz
  13. if span <= 0 {
  14. continue
  15. }
  16. if i == 0 || span < minSpan {
  17. minSpan = span
  18. }
  19. if i == 0 || span > maxSpan {
  20. maxSpan = span
  21. }
  22. sum += span
  23. stats.Count++
  24. if w.Source != "" {
  25. stats.Sources[w.Source]++
  26. }
  27. }
  28. if stats.Count == 0 {
  29. return nil
  30. }
  31. stats.MinSpan = minSpan
  32. stats.MaxSpan = maxSpan
  33. stats.AvgSpan = sum / float64(stats.Count)
  34. return stats
  35. }