1234567891011121314151617181920212223242526272829303132333435 |
- import numpy as np
- class JammingSignalAlgo:
- @staticmethod
- def generate_noise_jam(bandwidth, duration, sample_rate):
- num_samples = int(duration * sample_rate)
- return np.random.normal(0, 1, num_samples)
- @staticmethod
- def generate_amplitude_noise_jam(bandwidth, duration, sample_rate):
- t = np.arange(0, duration, 1/sample_rate)
- carrier = np.sin(2 * np.pi * bandwidth * t)
- noise = 0.5 * np.random.normal(0, 1, len(t))
- return carrier * noise
- @staticmethod
- def generate_velocity_deceptive_jam(bandwidth, duration, sample_rate):
- t = np.arange(0, duration, 1/sample_rate)
- phase_shift = np.cumsum(np.random.uniform(-0.1, 0.1, len(t)))
- return np.sin(2 * np.pi * bandwidth * t + phase_shift)
- @staticmethod
- def generate_deceptive_jam(bandwidth, duration, sample_rate):
- t = np.arange(0, duration, 1/sample_rate)
- delay = np.random.uniform(0.1, 0.5) # 随机延迟0.1-0.5秒
- amplitude = np.random.uniform(0.5, 2.0) # 随机幅度调制
- return amplitude * np.sin(2 * np.pi * bandwidth * (t - delay))
- @staticmethod
- def frequency_modulation(bandwidth, duration, sample_rate, modulation_index=0.5):
- """噪声调频干扰算法"""
- t = np.arange(0, duration, 1/sample_rate)
- baseband = np.random.normal(0, 1, len(t))
- modulated = np.sin(2 * np.pi * bandwidth * t + modulation_index * np.cumsum(baseband))
- return modulated
|