import numpy as np from scipy import signal, fft, linalg from typing import Tuple, List class AntiJammingSignalAlgo: @staticmethod def time_frequency_filter(rx_signal, sample_rate): """时频域联合滤波算法""" # 输入信号维度检查 if rx_signal.size == 0: return np.zeros_like(rx_signal) # 确保信号为1维数组 rx_signal = np.atleast_1d(rx_signal).ravel() spectrum = np.fft.fft(rx_signal) filtered_spectrum = spectrum * np.hamming(len(spectrum)) return np.fft.ifft(filtered_spectrum).real @staticmethod def adaptive_filter(rx_signal, reference_signal): """自适应滤波算法""" # 实现基于LMS的自适应滤波 lms_step = 0.01 weights = np.zeros(10) for i in range(len(rx_signal)-10): x = rx_signal[i:i+10] error = reference_signal[i] - np.dot(weights, x) weights += lms_step * error * x return np.convolve(weights, rx_signal, mode='valid') @staticmethod def polarization_filter(rx_signal, sample_rate, polarization_params): """极化滤波算法""" # 应用极化参数 angle_rad = np.deg2rad(polarization_params['angle']) ellipticity = polarization_params['ellipticity'] # 构建极化滤波矩阵 filter_matrix = np.array([ [np.cos(angle_rad), -ellipticity * np.sin(angle_rad)], [np.sin(angle_rad), ellipticity * np.cos(angle_rad)] ]) # 应用极化滤波 polarized_signal = filter_matrix @ rx_signal.reshape(2, -1) return polarized_signal[0].real