Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

29 строки
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{}) }