Системная модель однопозиционной радиолокационной системы
Автор
function calcParamRadar()
# Реализация функции Альберсгейма
function albersheim(pd, pfa, N)
A = log(0.62/pfa)
B = log(pd/(1-pd))
ABfactor = (A + 0.12*A*B + 1.7*B)
N1 = 1/sqrt(N)
N2 = (6.2+4.54/sqrt(N+0.44))/10
snr = N1*ABfactor^N2
snr = (10 .*log10(snr)+300)-300
end
# Реализация функции температуры системы
function systemp(nf :: Number, reftemp :: Number = 290)
nf >= 0 || error("Invalid input")
nfLinear = db2pow(nf)
stemp = reftemp * nfLinear # Кельвины
return stemp
end
# Реализация функции шумовой мощности
function noisepow(nbw :: Number, nf :: Number = 0, reftemp :: Number = 290)
B = 1.380649e-23
npow = B * systemp(nf, reftemp) * nbw
return npow
end
# Реализация функции потерь в свободном пространстве
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
# Реализация функции перевода мощности в децибелы
function pow2db(y)
all(y .<= 0) && error("Invalid input")
return (10 .*log10(y)+300)-300
end
# Реализация функции перевода децибелов в мощность
function db2pow(ydB)
return 10 .^(ydB/10)
end
# Реализация функции преобразования площади апертуры в коэффициент усиления
function aperture2gain(rcs, lambda)
g = 4π * rcs / (lambda^2)
g = pow2db(g)
return g
end
# Определение окружающей среды
propSpeed = 299792458 # Скорость распространения
fc = 1e10 # Рабочая частота
lambda = propSpeed/fc
# Ограничения
maxRange = 5000 # Максимальная неоднозначная дальность
rangeRes = 50 # Требуемое разрешение по дальности
pd = 0.9 # Вероятность обнаружения
pfa = 1e-6 # Вероятность ложной тревоги
tgtRcs = 1 # Требуемый РЭП цели
numPulseInt = 10 # Интегрировать 10 импульсов за раз
# Параметры волны
pulseBw = propSpeed/(2 * rangeRes) # Ширина импульса
pulseWidth = 1/pulseBw # Длительность импульса
prf = propSpeed/(2 * maxRange) # Частота повторения импульсов
fs = 2 * pulseBw
# Параметры передатчика
snrMin = albersheim(pd, pfa, numPulseInt)
txGain = 20
peakPower = ((4π)^3 * noisepow(1/pulseWidth) * maxRange^4 * db2pow(snrMin)) / (db2pow(2 * txGain) * tgtRcs * lambda^2)
# Параметры фильтра согласования
matchingCoeff = [1, 1]
# Задержка, внесенная фильтром
matchingDelay = size(matchingCoeff, 1) - 1
# Параметры временно-переменного усиления
fastTimeGrid = Vector(0:1/fs:(1/prf-1/fs))
rangeGates = fastTimeGrid .* propSpeed/2
metersPerSample = rangeGates[2]
rangeOffset = -rangeGates[2] * matchingDelay
rangeLoss = 2 * FreeSpacePathLoss(rangeGates, lambda)
referenceLoss = 2 * FreeSpacePathLoss(maxRange, lambda)
RxGain = 30
lossFactor = 0
referenceTemperature = 290
# Параметры радара
targetRcs = 0.6
targetPos = [1.98866e3; 0; 0]
targetVel = [0; 0; 10]
# Дополнительные параметры
radar_pos = [0; 0; 0]
radar_vel = [0; 0; 0]
return (propSpeed = propSpeed, fc = fc, pulseBw = pulseBw, prf = prf,
fs = fs, txGain = txGain, peakPower = peakPower, matchingCoeff = matchingCoeff,
metersPerSample = metersPerSample, rangeOffset = rangeOffset, rangeLoss = rangeLoss,
referenceLoss = referenceLoss, targetRcs = targetRcs, targetPos = targetPos,
targetVel = targetVel, radar_pos = radar_pos, radar_vel = radar_vel, RxGain = RxGain,
lossFactor = lossFactor, referenceTemperature = referenceTemperature, maxRange = maxRange,
numPulseInt = numPulseInt, rangeGates = rangeGates, pulseWidth = pulseWidth)
end