Модель радиолокационной системы на системных объектах
作者
using DSP
function initRadarParam()
# Среда распространения
propSpeed = 299792458 # Propagation speed
fc = 1e10 # Operating frequency
lambda = propSpeed/fc
# Параметры устройства
maxRange = 5000 # Максимальная дальность обнаружения
rangeRes = 50 # Разрешение по дальности
pd = 0.9 # Вероятность правильного обнаружения
pfa = 1e-6 # Вероятность ложной тревоги
tgtRcs = 1 # Эффективная площадь рассения
numPulseInt = 10 # Количество импульсов накопления
# Параметры сигнала
pulseBw = propSpeed/(2*rangeRes) # Полоса сигнала
pulseWidth = 1/pulseBw # Ширина импульса
prf = propSpeed/(2*maxRange) # Частота следования импульсов
fs = 2*pulseBw
# Параметры передатчика
snrMin = albersheim(pd, pfa, numPulseInt)
txGain = 40
peakPower = ((4*pi)^3*noisepow(1/pulseWidth)*maxRange^4* DSP.db2pow(snrMin))/(DSP.db2pow(2*txGain)*tgtRcs*lambda^2)
peakPower = 5.2265e3
# Параметры согласованной фильтрации
matchingCoeff = [1,1]
# Delay introduced due to filter
matchingDelay = size(matchingCoeff,1)-1;
# Time varying gain parameters
fastTimeGrid = Vector(0:1/fs:(1/prf-1/fs))
rangeGates = fastTimeGrid.*propSpeed/2;
metersPerSample = rangeGates[2];
rangeOffset = -rangeGates[2]*matchingDelay;
rangeLoss = 2fspl(rangeGates,lambda);
referenceLoss = 2fspl(maxRange,lambda);
rangeLoss = 2*20log10.(4*pi*rangeGates./lambda).*Integer.(rangeGates./lambda .!= 0)
referenceLoss = 2*20log10.(4*pi*maxRange./lambda)
gain = 20
lossFactor = 0
referenceTemperature = 290
# Radar parameters
target1Rcs = 0.6
target1Pos = [1.9887e3; 0; 0]
target1Vel = [0; 0; 0]
# Additional params
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,
target1Rcs = target1Rcs, target1Pos = target1Pos,
target1Vel = target1Vel, radar_pos = radar_pos,
radar_vel = radar_vel, gain = gain, lossFactor = lossFactor,
referenceTemperature = referenceTemperature, maxRange = maxRange,
numPulseInt = numPulseInt, rangeGates = rangeGates)
end