Source code for sorts.signals
#!/usr/bin/env python
'''This module is used to define the radar network configuration.
'''
import numpy as np
import scipy.constants
[docs]def hard_target_rcs(wavelength, diameter):
'''Determine the radar cross section for a hard target.
Assume a smooth transition between Rayleigh and optical scattering.
Ignore Mie regime and use either optical or Rayleigh scatter.
:param float wavelength: radar wavelength (meters)
:param float/numpy.ndarray diameter: diameter in meters of the objects.
'''
is_rayleigh = diameter < wavelength/(np.pi*np.sqrt(3.0))
is_optical = diameter >= wavelength/(np.pi*np.sqrt(3.0))
optical_rcs = np.pi*diameter**2.0/4.0
rayleigh_rcs = np.pi*diameter**2.0*7.11/4.0*(np.pi*diameter/wavelength)**4
rcs = is_rayleigh*rayleigh_rcs + is_optical*optical_rcs
return rcs
[docs]def hard_target_snr(gain_tx, gain_rx,
wavelength, power_tx,
range_tx_m, range_rx_m,
diameter=0.01, bandwidth=10,
rx_noise_temp=150.0):
'''
Determine the signal-to-noise ratio (energy-to-noise) ratio for a hard target.
Assume a smooth transition between Rayleigh and optical scattering.
Ignore Mie regime and use either optical or Rayleigh scatter.
:param float/numpy.ndarray gain_tx: transmit antenna gain, linear
:param float/numpy.ndarray gain_rx: receiver antenna gain, linear
:param float wavelength: radar wavelength (meters)
:param float power_tx: transmit power (W)
:param float/numpy.ndarray range_tx_m: range from transmitter to target (meters)
:param float/numpy.ndarray range_rx_m: range from target to receiver (meters)
:param float diameter: object diameter (meters)
:param float bandwidth: effective receiver noise bandwidth for incoherent integration (tx_len*n_ipp/sample_rate)
:param float rx_noise_temp: receiver noise temperature (K)
:return: signal-to-noise ratio
:rtype: float/numpy.ndarray
**Reference:** Markkanen et.al., 1999
'''
is_rayleigh = diameter < wavelength/(np.pi*np.sqrt(3.0))
is_optical = diameter >= wavelength/(np.pi*np.sqrt(3.0))
rayleigh_power = (9.0*power_tx*(((gain_tx*gain_rx)*(np.pi**2.0)*(diameter**6.0))/(256.0*(wavelength**2.0)*(range_rx_m**2.0*range_tx_m**2.0))))
optical_power = (power_tx*(((gain_tx*gain_rx)*(wavelength**2.0)*(diameter**2.0)))/(256.0*(np.pi**2)*(range_rx_m**2.0*range_tx_m**2.0)))
rx_noise = scipy.constants.k*rx_noise_temp*bandwidth
snr = ((is_rayleigh)*rayleigh_power + (is_optical)*optical_power)/rx_noise
return snr