jammer_radar_20250421153801.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import numpy as np
  2. from scipy.signal import find_peaks
  3. # ==================== 干扰雷达类 ====================
  4. class JammerRadar:
  5. def __init__(self, usrp, rx, tx):
  6. self.usrp = usrp
  7. self.rx = rx
  8. self.tx = tx
  9. def execute_countermeasures(self, rx_signal: np.ndarray, algorithm: callable, sample_rate: float,
  10. **kwargs) -> np.ndarray:
  11. """
  12. 执行抗干扰信号处理
  13. :param rx_signal: 接收信号
  14. :param algorithm: 抗干扰算法
  15. :param sample_rate: 采样率
  16. :param kwargs: 算法需要的额外参数(如参考信号、极化参数等)
  17. """
  18. processed_signal = algorithm(
  19. rx_signal=rx_signal,
  20. sample_rate=sample_rate,
  21. **kwargs
  22. )
  23. return processed_signal.astype(np.complex64)
  24. #封装一个发送信号的函数
  25. def send_signal(self, tx_signal, duration, center_freq, sample_rate, gain):
  26. # 发送信号
  27. self.usrp.send_waveform(tx_signal, duration, center_freq, sample_rate, self.tx, gain)
  28. print('干扰雷达已发送信号')
  29. # 封装一个接收信号的函数
  30. def recv_signal(self, num_samples, sample_rate, center_freq):
  31. rx_signal = self.usrp.recv_num_samps(num_samples, center_freq,sample_rate,self.rx)
  32. print('侦查雷达已接收信号')
  33. return rx_signal