Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

43 рядки
803B

  1. //go:build cufft
  2. package gpudemod
  3. import (
  4. "math/cmplx"
  5. "sdr-visual-suite/internal/dsp"
  6. )
  7. func ValidateFIR(iq []complex64, taps []float32, filtered []complex64, tol float64) bool {
  8. if len(iq) != len(filtered) {
  9. return false
  10. }
  11. ftaps := make([]float64, len(taps))
  12. for i, v := range taps {
  13. ftaps[i] = float64(v)
  14. }
  15. ref := dsp.ApplyFIR(iq, ftaps)
  16. for i := range ref {
  17. if cmplx.Abs(complex128(ref[i]-filtered[i])) > tol {
  18. return false
  19. }
  20. }
  21. return true
  22. }
  23. func ValidateDecimate(iq []complex64, factor int, decimated []complex64, tol float64) bool {
  24. if factor <= 0 {
  25. return false
  26. }
  27. ref := dsp.Decimate(iq, factor)
  28. if len(ref) != len(decimated) {
  29. return false
  30. }
  31. for i := range ref {
  32. if cmplx.Abs(complex128(ref[i]-decimated[i])) > tol {
  33. return false
  34. }
  35. }
  36. return true
  37. }