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.

29 wiersze
714B

  1. package gpudemod
  2. // BuildPolyphaseTapsPhaseMajor builds a phase-major polyphase tap layout:
  3. // tapsByPhase[p][k] = h[p + k*D]
  4. // Flattened as: [phase0 taps..., phase1 taps..., ...]
  5. func BuildPolyphaseTapsPhaseMajor(base []float32, decim int) []float32 {
  6. if decim <= 0 || len(base) == 0 {
  7. return nil
  8. }
  9. maxPhaseLen := (len(base) + decim - 1) / decim
  10. out := make([]float32, decim*maxPhaseLen)
  11. for p := 0; p < decim; p++ {
  12. for k := 0; k < maxPhaseLen; k++ {
  13. src := p + k*decim
  14. if src < len(base) {
  15. out[p*maxPhaseLen+k] = base[src]
  16. }
  17. }
  18. }
  19. return out
  20. }
  21. func PolyphasePhaseLen(baseLen int, decim int) int {
  22. if decim <= 0 || baseLen <= 0 {
  23. return 0
  24. }
  25. return (baseLen + decim - 1) / decim
  26. }