isce3 0.25.0
Loading...
Searching...
No Matches
isce3::antenna::ElNullRangeEst Class Reference

A class for forming Null power patterns in EL direction from both a pair of adjacent El-cut antenna patterns as well as the respective raw echoes of two adjacent RX channels. More...

#include <ElNullRangeEst.h>

Public Types

using RowMatrixXcf = isce3::core::EMatrix2D<std::complex<float>>
 

Public Member Functions

 ElNullRangeEst (double wavelength, double sr_spacing, double chirp_rate, double chirp_dur, const isce3::core::Orbit &orbit, const isce3::core::Attitude &attitude, const isce3::geometry::DEMInterpolator &dem_interp={}, const Frame &ant_frame={}, const isce3::core::Ellipsoid &ellips={}, double el_res=8.726646259971648e-06, double abs_tol_dem=1.0, int max_iter_dem=20, int polyfit_deg=6)
 A constructor.
 
std::tuple< isce3::core::DateTime, NullProduct, NullProduct, NullConvergenceFlags, NullPowPatternsgenNullRangeDoppler (const Eigen::Ref< const RowMatrixXcf > &echo_left, const Eigen::Ref< const RowMatrixXcf > &echo_right, const Eigen::Ref< const Eigen::ArrayXcd > &el_cut_left, const Eigen::Ref< const Eigen::ArrayXcd > &el_cut_right, double sr_start, double el_ang_start, double el_ang_step, double az_ang, std::optional< double > az_time={}) const
 Generate null products from echo (measured) and antenna (nominal/expected).
 
double waveLength () const
 
double slantRangeSpacing () const
 
std::string gridTypeName () const
 
Eigen::ArrayXcf chirpSampleRef () const
 
std::string refEpoch () const
 
double demRefHeight () const
 
double midTimeOrbit () const
 
double maxElSpacing () const
 
double atolDEM () const
 
int maxIterDEM () const
 
double atolNull () const
 
int maxIterNull () const
 
int polyfitDeg () const
 

Protected Types

using Linspace_t = isce3::core::Linspace<double>
 
using tuple_null
 

Protected Attributes

double _wavelength
 
double _sr_spacing
 
isce3::core::Orbit _orbit
 
isce3::core::Attitude _attitude
 
isce3::geometry::DEMInterpolator _dem_interp
 
Frame _ant_frame
 
isce3::core::Ellipsoid _ellips
 
double _el_res_max
 
double _abs_tol_dem
 
int _max_iter_dem
 
int _polyfit_deg
 
std::vector< std::complex< float > > _chirp_ref
 
double _az_time_mid
 
isce3::core::DateTime _ref_epoch
 
const double _ftol_newton {1e-5}
 
const int _max_iter_newton {25}
 

Detailed Description

A class for forming Null power patterns in EL direction from both a pair of adjacent El-cut antenna patterns as well as the respective raw echoes of two adjacent RX channels.

The location of null in both antenna and echo domain will be estimated and their respective values in EL angle, slant range, and Doppler will be reported at a specific azimuth time in orbit. See the following citation and its references for algorithm, simulation and analyses, [NullPatternElPointDoc]

Member Typedef Documentation

◆ tuple_null

using isce3::antenna::ElNullRangeEst::tuple_null
protected
Initial value:
Data structure to store date time to nano-sec precision.
Definition DateTime.h:18
A set of flags indicating convergence of iterative operations used in EL null product formation.
Definition ElNullRangeEst.h:41
EL Null Power Patterns for both echo and antenna as a function of EL angles.
Definition ElNullRangeEst.h:52
EL null product.
Definition ElNullRangeEst.h:26

Constructor & Destructor Documentation

◆ ElNullRangeEst()

isce3::antenna::ElNullRangeEst::ElNullRangeEst ( double wavelength,
double sr_spacing,
double chirp_rate,
double chirp_dur,
const isce3::core::Orbit & orbit,
const isce3::core::Attitude & attitude,
const isce3::geometry::DEMInterpolator & dem_interp = {},
const Frame & ant_frame = {},
const isce3::core::Ellipsoid & ellips = {},
double el_res = 8.726646259971648e-06,
double abs_tol_dem = 1.0,
int max_iter_dem = 20,
int polyfit_deg = 6 )

A constructor.

Parameters
[in]wavelengthwavelength in (m)
[in]sr_spacingslant range spacing in (m)
[in]chirp_ratechirp rate in (Hz/sec)
[in]chirp_durchirp duration in (sec)
[in]orbitisce3 Orbit object
[in]attitudeisce3 Attitude object for quaternions from antenna to ECEF
[in]dem_interp(optional) isce3 DEMInterpolator object. Default is 0.0 (m) or reference ellipsoid.
[in]ant_frame(optional) isce3 antenna Frame object. Default is "EL_AND_AZ" antenna coordinate system.
[in]ellips(optional) isce3 Ellipsoid object. Default is WGS84 ellipsoid.
[in]el_res(optional) max EL angle resolution in (rad) used for all EL angles. Default is 8.726646259971648e-06 (rad) equivalent to 0.5 (mdeg). Note that if antenna patterns have finer EL angle step then this value will be ignored!
[in]abs_tol_dem(optional) absolute DEM height tolerance in (m). Default is 1. This is used in a recursive process of transformation from antenna angle to slant range in the presence of topography/DEM data.
[in]max_iter_dem(optional) max number of iteration in meeting above DEM height tolerance. Default is 20.
[in]polyfit_deg(optional) degree of polyfit used for smoothing of echo null power pattern and locating its null/min location. Default is 6. The even orders equal or larger than 2 is required.
Exceptions
InvalidArgument

Member Function Documentation

◆ atolDEM()

double isce3::antenna::ElNullRangeEst::atolDEM ( ) const
inline
Returns
Absolute tolerance (m) in DEM height estimation used in geometry transformation

◆ atolNull()

double isce3::antenna::ElNullRangeEst::atolNull ( ) const
inline
Returns
Absolute tolerance (-) in Newton method used in estimating null location from echo null pattern

◆ chirpSampleRef()

Eigen::ArrayXcf isce3::antenna::ElNullRangeEst::chirpSampleRef ( ) const
inline
Returns
complex Hann-windowed chirp samples used as chirp ref in rangecomp

◆ demRefHeight()

double isce3::antenna::ElNullRangeEst::demRefHeight ( ) const
inline
Returns
reference DEM height in (m)

◆ genNullRangeDoppler()

ElNullRangeEst::tuple_null isce3::antenna::ElNullRangeEst::genNullRangeDoppler ( const Eigen::Ref< const RowMatrixXcf > & echo_left,
const Eigen::Ref< const RowMatrixXcf > & echo_right,
const Eigen::Ref< const Eigen::ArrayXcd > & el_cut_left,
const Eigen::Ref< const Eigen::ArrayXcd > & el_cut_right,
double sr_start,
double el_ang_start,
double el_ang_step,
double az_ang,
std::optional< double > az_time = {} ) const

Generate null products from echo (measured) and antenna (nominal/expected).

The null product consists of azimuth time tag, null relative magnitude and its location in EL and slant range, plus its Doppler value given azimuth (antenna geometry)/squint(Radar geometry) angle.

Parameters
[in]echo_leftis complex 2-D array of raw echo samples (pulse by range) for the left RX channel corresponding to the left beam.
[in]echo_rightis complex 2-D array of raw echo samples (pulse by range) for the right RX channel corresponding to the right beam. Must have the same shape as of that of left one!
[in]el_cut_leftis complex array of uniformly-sampled relative or absolute EL-cut antenna pattern on the left side.
[in]el_cut_rightis complex array of uniformly-sampled relative or absolute EL-cut antenna pattern on the right side. It must have the same size as left one!
[in]sr_startis start slant range (m) for both uniformly-sampled echoes in range.
[in]el_ang_startis start elevation angle for left/right EL patterns in (rad)
[in]el_ang_stepis step elevation angle for left/right EL patterns in (rad)
[in]az_angazimuth angle in antenna frame (similar to squint angle in radar geometry) in (rad). This angle determines the final Doppler centroid on top of slant range value for both echo and antenna nulls.
[in]az_time(optional) azimuth time of echoes in (sec) w.r.t reference epoch of orbit. If not specified, the mid azimuth time of orbit will be used instead.
Returns
isce3 DateTime object representing the azimuth time tag of the null.
isce3::antenna::NullProduct with members: slant_range (m), el_angle (rad), doppler (Hz), and magnitude(linear) for measured/estimated null product from a pair of raw echoes.
isce3::antenna::NullProduct with members: slant_range (m), el_angle (rad), doppler (Hz), and magnitude(linear) for expected/nomial null product from a pair of EL antenna patterns.
isce3::antenna::NullConvergenceFlags with members: newton-solver, geometry_echo and geometry_antenna related to ant2rgdop convergence flag.
isce3::antenna::NullPowPatterns with members: ant, echo, and el representing null power patterns (linear) for both antenna and echo as a function of EL angles (radians).
Exceptions
InvalidArgument,RuntimeError

◆ gridTypeName()

std::string isce3::antenna::ElNullRangeEst::gridTypeName ( ) const
inline
Returns
name of antenna spherical grid type

◆ maxElSpacing()

double isce3::antenna::ElNullRangeEst::maxElSpacing ( ) const
inline
Returns
Max EL angle spacing or resolution (rad)

◆ maxIterDEM()

int isce3::antenna::ElNullRangeEst::maxIterDEM ( ) const
inline
Returns
Max iteration in DEM height estimation used in geometry transformation

◆ maxIterNull()

int isce3::antenna::ElNullRangeEst::maxIterNull ( ) const
inline
Returns
Max iteration in Newton method used in estimating null location from echo null pattern

◆ midTimeOrbit()

double isce3::antenna::ElNullRangeEst::midTimeOrbit ( ) const
inline
Returns
mid azimuth time of the orbit in (sec)

◆ polyfitDeg()

int isce3::antenna::ElNullRangeEst::polyfitDeg ( ) const
inline
Returns
poly-fit degree used in polyfitting echo null pattern

◆ refEpoch()

std::string isce3::antenna::ElNullRangeEst::refEpoch ( ) const
inline
Returns
reference epoch UTC time in ISO8601 format

◆ slantRangeSpacing()

double isce3::antenna::ElNullRangeEst::slantRangeSpacing ( ) const
inline
Returns
slant range spacing in (m)

◆ waveLength()

double isce3::antenna::ElNullRangeEst::waveLength ( ) const
inline
Returns
wavelength in (m)

The documentation for this class was generated from the following files:

Generated for ISCE3.0 by doxygen 1.13.2.