Processing¶
- radarsimpy.processing.cfar_ca_1d(data, guard, trailing, pfa=1e-05, axis=0, offset=None)¶
1-D Cell Averaging CFAR (CA-CFAR)
- Parameters:
data (numpy.1darray or numpy.2darray) – Radar data
guard (int) – Number of guard cells on one side, total guard cells are
2*guard
trailing (int) – Number of trailing cells on one side, total trailing cells are
2*trailing
pfa (float) – Probability of false alarm.
default 1e-5
axis (int) – The axis to calculat CFAR.
default 0
offset (float) – CFAR threshold offset. If offect is None, threshold offset is
2*trailing(pfa^(-1/2/trailing)-1)
.default None
- Returns:
CFAR threshold. The dimension is the same as
data
- Return type:
numpy.1darray or numpy.2darray
- radarsimpy.processing.cfar_ca_2d(data, guard, trailing, pfa=1e-05, offset=None)¶
2-D Cell Averaging CFAR (CA-CFAR)
- Parameters:
data (numpy.1darray or numpy.2darray) – Radar data
guard (int or list[int]) – Number of guard cells on one side, total guard cells are
2*guard
. Whenguard
is a list,guard[0]
is for axis 0, andguard[1]
is for axis 1. Ifguard
is a number, axis 0 and axis 1 are the sametrailing (int or list[int]) – Number of trailing cells on one side, total trailing cells are
2*trailing
. Whentrailing
is a list,trailing[0]
is for axis 0, andtrailing[1]
is for axis 1. Iftrailing
is a number, axis 0 and axis 1 are the samepfa (float) – Probability of false alarm.
default 1e-5
offset (float) – CFAR threshold offset. If offect is None, threshold offset is
2*trailing(pfa^(-1/2/trailing)-1)
.default None
- Returns:
CFAR threshold. The dimension is the same as
data
- Return type:
numpy.1darray or numpy.2darray
- radarsimpy.processing.cfar_os_1d(data, guard, trailing, k, pfa=1e-05, axis=0, offset=None)¶
1-D Ordered Statistic CFAR (OS-CFAR)
For edge cells, use rollovered cells to fill the missing cells.
- Parameters:
data (numpy.1darray or numpy.2darray) – Radar data
guard (int) – Number of guard cells on one side, total guard cells are
2*guard
trailing (int) – Number of trailing cells on one side, total trailing cells are
2*trailing
k (int) – Rank in the order.
k
is usuall chosen to satisfyN/2 < k < N
. Typically,k
is on the order of0.75N
pfa (float) – Probability of false alarm.
default 1e-5
axis (int) – The axis to calculat CFAR.
default 0
offset (float) – CFAR threshold offset. If offect is None, threshold offset is calculated from
pfa
.default None
- Returns:
CFAR threshold. The dimension is the same as
data
- Return type:
numpy.1darray or numpy.2darray
Reference
[1] H. Rohling, “Radar CFAR Thresholding in Clutter and Multiple Target Situations,” IEEE Trans. Aerosp. Electron. Syst., vol. AES-19, no. 4, pp. 608-621, 1983.
- radarsimpy.processing.cfar_os_2d(data, guard, trailing, k, pfa=1e-05, offset=None)¶
2-D Ordered Statistic CFAR (OS-CFAR)
For edge cells, use rollovered cells to fill the missing cells.
- Parameters:
data (numpy.1darray or numpy.2darray) – Radar data
guard (int or list[int]) – Number of guard cells on one side, total guard cells are
2*guard
. Whenguard
is a list,guard[0]
is for axis 0, andguard[1]
is for axis 1. Ifguard
is a number, axis 0 and axis 1 are the sametrailing (int or list[int]) – Number of trailing cells on one side, total trailing cells are
2*trailing
. Whentrailing
is a list,trailing[0]
is for axis 0, andtrailing[1]
is for axis 1. Iftrailing
is a number, axis 0 and axis 1 are the samek (int) – Rank in the order.
k
is usuall chosen to satisfyN/2 < k < N
. Typically,k
is on the order of0.75N
pfa (float) – Probability of false alarm.
default 1e-5
offset (float) – CFAR threshold offset. If offect is None, threshold offset is calculated from
pfa
.default None
- Returns:
CFAR threshold. The dimension is the same as
data
- Return type:
numpy.1darray or numpy.2darray
Reference
[1] H. Rohling, “Radar CFAR Thresholding in Clutter and Multiple Target Situations,” IEEE Trans. Aerosp. Electron. Syst., vol. AES-19, no. 4, pp. 608-621, 1983.
- radarsimpy.processing.doa_bartlett(covmat, spacing=0.5, scanangles=range(-90, 91))¶
Bartlett beamforming for a uniform linear array (ULA)
- Parameters:
covmat (numpy.2darray) – Sensor covariance matrix, specified as a complex-valued, positive- definite M-by-M matrix. The quantity M is the number of elements in the ULA array
spacing (float) – Distance (wavelength) between array elements.
default 0.5
scanangles (numpy.1darray) – Broadside search angles, specified as a real-valued vector in degrees. Angles must lie in the range [-90°,90°] and must be in increasing order. ``default [-90°,90°] ``
- Returns:
spectrum in dB
- Return type:
numpy.1darray
- radarsimpy.processing.doa_capon(covmat, spacing=0.5, scanangles=range(-90, 91))¶
Capon (MVDR) beamforming for a uniform linear array (ULA)
- Parameters:
covmat (numpy.2darray) – Sensor covariance matrix, specified as a complex-valued, positive- definite M-by-M matrix. The quantity M is the number of elements in the ULA array
spacing (float) – Distance (wavelength) between array elements.
default 0.5
scanangles (numpy.1darray) – Broadside search angles, specified as a real-valued vector in degrees. Angles must lie in the range [-90°,90°] and must be in increasing order. ``default [-90°,90°] ``
- Returns:
spectrum in dB
- Return type:
numpy.1darray
- radarsimpy.processing.doa_esprit(covmat, nsig, spacing=0.5)¶
Estimate arrival directions of signals using ESPRIT for a uniform linear array (ULA)
- Parameters:
covmat (numpy.2darray) – Sensor covariance matrix, specified as a complex-valued, positive- definite M-by-M matrix. The quantity M is the number of elements in the ULA array
nsig (int) – Number of arriving signals, specified as a positive integer. The number of signals must be smaller than the number of elements in the ULA array
spacing (float) – Distance (wavelength) between array elements.
default 0.5
- Returns:
doa angles in degrees
- Return type:
list
- radarsimpy.processing.doa_music(covmat, nsig, spacing=0.5, scanangles=range(-90, 91))¶
Estimate arrival directions of signals using MUSIC for a uniform linear array (ULA)
- Parameters:
covmat (numpy.2darray) – Sensor covariance matrix, specified as a complex-valued, positive- definite M-by-M matrix. The quantity M is the number of elements in the ULA array
nsig (int) – Number of arriving signals, specified as a positive integer. The number of signals must be smaller than the number of elements in the ULA array
spacing (float) – Distance (wavelength) between array elements.
default 0.5
scanangles (numpy.1darray) – Broadside search angles, specified as a real-valued vector in degrees. Angles must lie in the range [-90°,90°] and must be in increasing order. ``default [-90°,90°] ``
- Returns:
doa angles in degrees, doa index, pseudo spectrum (dB)
- Return type:
list, list, numpy.1darray
- radarsimpy.processing.doa_root_music(covmat, nsig, spacing=0.5)¶
Estimate arrival directions of signals using root-MUSIC for a uniform linear array (ULA)
- Parameters:
covmat (numpy.2darray) – Sensor covariance matrix, specified as a complex-valued, positive- definite M-by-M matrix. The quantity M is the number of elements in the ULA array
nsig (int) – Number of arriving signals, specified as a positive integer. The number of signals must be smaller than the number of elements in the ULA array
spacing (float) – Distance (wavelength) between array elements.
default 0.5
- Returns:
doa angles in degrees
- Return type:
list
- radarsimpy.processing.doppler_fft(data, dwin=None, n=None)¶
Calculate range-Doppler matrix
- Parameters:
data (numpy.3darray) – Range profile matrix,
[channels, pulses, adc_samples]
dwin (numpy.1darray) – Window for FFT, length should be equal to adc_samples. (default is a square window)
n (int) – FFT size, if n > adc_samples, zero-padding will be applied. (default is None)
- Returns:
A 3D array of range-Doppler map,
[channels, Doppler, range]
- Return type:
numpy.3darray
- radarsimpy.processing.get_polar_image(image, range_bins, angle_bins, fov_deg)¶
Convert cartesian coordinate to polar
- Parameters:
image (numpy.2darray) – Data with cartesian coordinate, [range, angle]
range_bins (int) – Number of range bins
angle_bins (int) – Number of angle bins
fov_deg (float) – Field of view (deg)
- Returns:
A 2D image with polar coordinate
- Return type:
numpy.2darray
- radarsimpy.processing.range_doppler_fft(data, rwin=None, dwin=None, rn=None, dn=None)¶
Range-Doppler processing
- Parameters:
data (numpy.3darray) – Baseband data,
[channels, pulses, adc_samples]
rwin (numpy.1darray) – Range window for FFT, length should be equal to adc_samples. (default is a square window)
dwin (numpy.1darray) – Doppler window for FFT, length should be equal to adc_samples. (default is a square window)
rn (int) – Range FFT size, if n > adc_samples, zero-padding will be applied. (default is None)
dn (int) – Doppler FFT size, if n > adc_samples, zero-padding will be applied. (default is None)
- Returns:
A 3D array of range-Doppler map,
[channels, Doppler, range]
- Return type:
numpy.3darray
- radarsimpy.processing.range_fft(data, rwin=None, n=None)¶
Calculate range profile matrix
- Parameters:
data (numpy.3darray) – Baseband data,
[channels, pulses, adc_samples]
rwin (numpy.1darray) – Window for FFT, length should be equal to adc_samples. (default is a square window)
n (int) – FFT size, if n > adc_samples, zero-padding will be applied. (default is None)
- Returns:
A 3D array of range profile,
[channels, pulses, range]
- Return type:
numpy.3darray