Wideband autonomous SDR analysis engine forked from sdr-visual-suite
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

29 Zeilen
538B

  1. package demod
  2. import "math"
  3. type AM struct{}
  4. func (AM) Name() string { return "AM" }
  5. func (AM) OutputSampleRate() int { return 48000 }
  6. func (AM) Demod(iq []complex64, sampleRate int) []float32 {
  7. if len(iq) == 0 {
  8. return nil
  9. }
  10. out := make([]float32, len(iq))
  11. var mean float64
  12. for i, v := range iq {
  13. mag := math.Hypot(float64(real(v)), float64(imag(v)))
  14. mean += mag
  15. out[i] = float32(mag)
  16. }
  17. mean /= float64(len(iq))
  18. for i := range out {
  19. out[i] -= float32(mean)
  20. }
  21. return out
  22. }
  23. func init() { Register(AM{}) }