Wideband autonomous SDR analysis engine forked from sdr-visual-suite
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

40 wiersze
1.1KB

  1. package gpudemod
  2. import "testing"
  3. func requireComplexSlicesCloseHarness(t *testing.T, a []complex64, b []complex64, tol float64) {
  4. t.Helper()
  5. if len(a) != len(b) {
  6. t.Fatalf("length mismatch: %d vs %d", len(a), len(b))
  7. }
  8. for i := range a {
  9. d := CompareComplexSlices([]complex64{a[i]}, []complex64{b[i]})
  10. if d.MaxAbsErr > tol {
  11. t.Fatalf("slice mismatch at %d: %v vs %v (tol=%f)", i, a[i], b[i], tol)
  12. }
  13. }
  14. }
  15. func TestHarnessChunkedCPUOraclePolyphase(t *testing.T) {
  16. cfg := OracleHarnessConfig{
  17. SignalID: 1,
  18. ConfigHash: 123,
  19. NCOPhase: 0,
  20. Decim: 20,
  21. NumTaps: 65,
  22. PhaseInc: 0.017,
  23. }
  24. iq := MakeDeterministicIQ(150000)
  25. mk := func() *CPUOracleState { return MakeCPUOracleState(cfg) }
  26. mono := CPUOracleExtractPolyphase(iq, mk(), cfg.PhaseInc)
  27. chunked := RunChunkedCPUOraclePolyphase(iq, []int{4096, 5000, 8192, 27307}, mk, cfg.PhaseInc)
  28. requireComplexSlicesCloseHarness(t, mono, chunked, 1e-5)
  29. }
  30. func TestHarnessToneIQ(t *testing.T) {
  31. iq := MakeToneIQ(1024, 0.05)
  32. if len(iq) != 1024 {
  33. t.Fatalf("unexpected tone iq length: %d", len(iq))
  34. }
  35. }