Системная модель однопозиционной радиолокационной системы с
作者
function calcParams()
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); # Kelvin
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 = 4pi*rcs / (lambda^2)
g = pow2db(g)
return g
end
# Environment
propSpeed = 299792458 # Propagation speed
fc = 1e10 # Operating frequency
lambda = propSpeed/fc # Length wave
# Constraints
maxRange = 5000 # Maximum unambiguous range
rangeRes = 50 # Required range resolution
pd = 0.9 # Probability of detection
pfa = 1e-6 # Probability of false alarm
tgtRcs = 1 # Required target radar cross section
numPulseInt = 10 # Integrate 10 pulses at a time
# Waveform parameters
pulseBw = propSpeed/(2*rangeRes) # Pulse bandwidth
pulseWidth = 1/pulseBw # Pulse width
prf = propSpeed/(2*maxRange) # Pulse repetition frequency
fs = 2*pulseBw
# Transmitter parameters
snrMin = albersheim(pd, pfa, numPulseInt)
txGain = 20
peakPower = ((4*pi)^3*noisepow(1/pulseWidth)*maxRange^4* db2pow(snrMin))/(db2pow(2*txGain)*tgtRcs*lambda^2)
# Matched filter parameters
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 = 2FreeSpacePathLoss(rangeGates,lambda);
referenceLoss = 2FreeSpacePathLoss(maxRange,lambda);
# Radar parameters
targetRcs = [0.6 2.2 1.05 .5]
targetPos = [1988.66 3532.630 3845.04 1045.04;0 0 0 0 ; 0 0 0 0 ]
targetVel = zeros(3,4)
return (propSpeed = propSpeed ,
fc = fc,
lambda = lambda,
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)
end