anti_jamming_signal_algo_20250421120144.py 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. import numpy as np
  2. from scipy import signal, fft, linalg
  3. from typing import Tuple, List
  4. class AntiJammingSignalAlgo:
  5. @staticmethod
  6. def time_frequency_filter(rx_signal, sample_rate):
  7. """时频域联合滤波算法"""
  8. # 实现频域滤波与时域平滑的组合处理
  9. spectrum = np.fft.fft(signal)
  10. filtered_spectrum = spectrum * np.hamming(len(spectrum))
  11. return np.fft.ifft(filtered_spectrum).real
  12. @staticmethod
  13. def adaptive_filter(rx_signal, reference_signal):
  14. """自适应滤波算法"""
  15. # 实现基于LMS的自适应滤波
  16. lms_step = 0.01
  17. weights = np.zeros(10)
  18. for i in range(len(rx_signal)-10):
  19. x = rx_signal[i:i+10]
  20. error = reference_signal[i] - np.dot(weights, x)
  21. weights += lms_step * error * x
  22. return np.convolve(weights, rx_signal, mode='valid')
  23. @staticmethod
  24. def polarization_filter(signal, polarization_params):
  25. """极化滤波算法"""
  26. # 实现极化域滤波处理
  27. covariance = np.cov(signal.reshape(2, -1))
  28. eig_vals, eig_vecs = np.linalg.eig(covariance)
  29. return eig_vecs[:, np.argmax(eig_vals)] @ signal.reshape(2, -1)