Визуализация данных о дальности и доплеровской частоте в РЛС
Автор
function calcParamRadarVisual()
function FreeSpacePathLoss(R, lambda)
typeof(lambda) <: Array ? lambda = lambda : lambda = [lambda]
typeof(R) <: Array ? R = R : R = [R]
L = Array(4π*R[:] .* ((1 ./ lambda[:]')))
for it ∈ eachindex(L)
if L[it] < 1
L[it] = 1
end
end
return 20log10.(length(L) == 1 ? L[1] : L)
end
# Задание ТТХ РЛС
range_res = 50 # Требуемое разрешение по диапазону
max_range = 5000 # Максимальный дальность однозначного обнаружения
fc = 10e9 # Несущая частота сигнала
tx_gain = 20 # Усиление передатчика
peak_power = 5500.0 # Пиковая мощность излучения передатчика
c = 299_792_458 # скорость распространения ЭМ-волны в пространстве
lambda = c/fc # Длина волны
pulse_bw = c/(2*range_res) # Ширина импульса в полосе частот
pulse_length = 1/pulse_bw # Длительность импульса
fs = 2*pulse_bw # Частота дискретизации сигнала
noise_bw = pulse_bw # Шумовая полоса
num_pulse_int = 10 # Количество импульсов накопления
prf = c/(2*max_range) # Частота следования импульсов
fast_time = Vector(0:1/fs:1/prf)[1:end-1] # Сетка быстрого времени (в пределах длительности импульса)
range_bins = c*fast_time/2 # Количество дискретов в сетке по дальности
rng_res = c/(2*fs) # Максимальное разрешение по дальности
DopplerFFTbins = 32 # Количество дискретов в сетке разрешения по скорости
DopplerRes = (prf/DopplerFFTbins)/2 # Разрешение по доплеровской частоте
DopplerOff = -prf/4 # Начальный сдвиг по частоте Доплера
# Параметры цели
RCS = [1.6 2.2 1.05 ] # ЭПР цели
targetPos = [2000.66 3532.63 3845.04; 0 0 0; 0 0 0] # Начальное положение
targetVel = [1500 -1500 0; 0 0 0; 0 0 0] # Скорость цели
timeRes = 10/prf
rngRes = 25
rangeLoss = 2*FreeSpacePathLoss(range_bins,lambda) # Введение потерь в зависимости от изменения дальности
referenceLoss = 2*FreeSpacePathLoss(max_range,lambda) # потери при распространении при максимальной дальности
return (max_range = max_range,fc = fc,tx_gain = tx_gain,peak_power = peak_power,
c = c,lambda = lambda,pulse_bw = pulse_bw,pulse_length = pulse_length,fs = fs,
noise_bw = noise_bw,num_pulse_int = num_pulse_int,prf = prf,range_bins = range_bins,
rng_res = rng_res,DopplerFFTbins = DopplerFFTbins,DopplerRes = DopplerRes,DopplerOff = DopplerOff,
RCS = RCS,targetPos = targetPos, targetVel = targetVel,timeRes = timeRes,rngRes = rngRes,
rangeLoss = rangeLoss,referenceLoss = referenceLoss)
end
paramRadarVisual = calcParamRadarVisual()
t_step = 1/paramRadarVisual.prf
t_sim = 0.5