Monopulse Processing For Array
[1]:
%load_ext autoreload
%autoreload 2
from radar.components import geometry
from radar.utils.calculate import convert
from radar.utils.typing.enums import FrequencyUnit
from radar.utils.typing.units import Frequency
from radar.components import Element
from radar.utils.calculate import pattern
from radar.utils.typing import (
PhaseUnit,
DirectionDomain,
FigureType,
AmplitudeDomain,
Angle,
AmplitudeUnit,
)
from radar.components.array import Array
import polars as pl
from radar.utils.typing.constants import DataHeader
Create An Antenna Array With 2 Elements
Create Element
[2]:
az_bound = 60
el_bound = 60
az_bound_tuple = (Angle(-az_bound, PhaseUnit.DEGREE), Angle(az_bound, PhaseUnit.DEGREE))
el_bound_tuple = (Angle(-el_bound, PhaseUnit.DEGREE), Angle(el_bound, PhaseUnit.DEGREE))
element_pattern = pattern.Cosine(4)
freq = Frequency(1, FrequencyUnit.GIGAHERTZ)
antenna_element = Element(element_pattern, az_bound_tuple, el_bound_tuple, freq, 1)
antenna_element.plot.beam(
DirectionDomain.ANGLE,
PhaseUnit.DEGREE,
AmplitudeDomain.Gain,
AmplitudeUnit.DECIBEL,
FigureType.IMAGE,
freq,
)
Create Geometry
[3]:
from radar.utils.typing.enums import ArrayOrientation
cf = Frequency(1, FrequencyUnit.GIGAHERTZ)
distance = convert.cf_to_min_dist(cf)
geometry = geometry.Linear(2, ArrayOrientation.AZIMUTH, distance)
geometry.plot.geometry()
Create Array
[4]:
arr = Array(antenna_element, geometry)
arr.plot.beam(
DirectionDomain.ANGLE,
PhaseUnit.DEGREE,
AmplitudeDomain.Gain,
AmplitudeUnit.DECIBEL,
FigureType.IMAGE,
freq,
)
Calculate Monopulse
[5]:
# where true is sum, where false is diff
condition = pl.col(DataHeader.X_POS_M) >= 0.0
arr.plot.monopulse(
DirectionDomain.ANGLE,
PhaseUnit.DEGREE,
AmplitudeUnit.DECIBEL,
FigureType.SURFACE,
freq,
condition,
)