Importers

Here we provide a collection of several importers to conveniently create EADF objects from various data formats. For this purpose we provide a set of so called handshake formats, which can be seen as intermediate formats, which facilitate the construction of importers, since for these handshake formats we already provide tested conversion routines to the internal data format.

For these formats there are readily available and tested importers. See the respective importer methods for further details.

  • Regular (in space) Angular Data: 2*co-ele x azi x pol x freq x elem.
    This format is simply handled by the EADF class initialization. So, if your data is already in that format, just call EADF() with it.
  • Regular (in space) Spatial Fourier Data: 2*co-ele-sptfreq x azi-sptfreq x pol x freq x elem
  • Angle List Data: Ang x Pol x Freq x Elem
  • Regular (in space) Variation 2 Angular Data: ele x azi x elem x pol x freq.
  • Wideband Angular Data as struct from .mat file:
    This format accounts for array pattern information stored with a .mat file containing a Matlab structured array (struct) with ‘Value’ field having dimensions; ele x azi x elem x pol x freq.
  • Narrowband Angular Data as struct from .mat file:
    This format accounts for array pattern information stored with a .mat file containing a Matlab structured array (struct) with ‘Value’ field having dimensions; ele x azi x elem x pol.
  • HFSS export (.csv Files)
eadf.importers.fromAngleListData(arrCoEleData: numpy.ndarray, arrAziData: numpy.ndarray, arrAngleListData: numpy.ndarray, arrFreqData: numpy.ndarray, arrPos: numpy.ndarray, numCoEle: int, numAzi: int, numErrorTol=0.0001, method='SH', **eadfOptions) → eadf.eadf.EADF

Importer from the Angle List Data Handshake format

This format allows to specify a list of angles (ele, azi)_i and beam pattern values v_i = (pol, freq, elem)_i which are then interpolated along the two angular domains to get a regular grid in azimuth and co-elevation. By default this is done using vector spherical harmonics, since they can deal with irregular sampling patterns quite nicely. In this format for each angular sampling point, we need to have excited the array elements with the same frequencies.

Parameters:
  • arrCoEleData (np.ndarray) – Sampled Co-elevation Angles in radians
  • arrAziData (np.ndarray) – Sampled Azimuth Angles in radians
  • arrAngleListData (np.ndarray) – List in Angle x Freq x Pol x Element format
  • arrFreqData (np.ndarray) – Frequencies the array was excited with in ascending order
  • arrPos (np.ndarray) – Positions of the array elements
  • numCoEle (int) – number of regular elevation samples used during interpolation > 0
  • numAzi (int) – number of regular azimuth samples used during interpolation > 0
  • numErrorTol (float) – error tolerance for coefficients fitting > 0
  • method (string) – Interpolation Method, default=’SH’
  • eadfOptions – Things to tell the EADF constructor
Returns:

Created Array

Return type:

EADF

eadf.importers.fromWidebandAngData(path: str, **kwargs) → eadf.eadf.EADF

This format defines angular data over uniformly sampled ele and azi for a range of antenna ports elem, with v and/or h-polarization pol for frequency range freq. Using the importer it is possible to choose the respective indices for antenna ports, polarization and frequency to derive the EADF.

The .mat file which utilizes this importer is expected to consist of a struct named ‘pattern’ which includes the fields: ‘Dim’, ‘Value’, ‘Description’, ‘Unit’, and ‘Date’.

The ‘Dim’ field is itself a struct which describes the dimensions of the 5-dimensional ‘Value’ tensor. ‘Dim’ contains Name-Value pairs corresponding to and ordered as ‘Elevation’, ‘Azimuth’, ‘Element’, ‘Polarization’, and ‘Frequency’.

The ‘Elevation’ and ‘Azimuth’ fields contain the vectors with the range of their respective angles.The ‘Element’ field contains the indices of the measured array ports starting from 1, while the ‘Polarization’ field is a cell array structured as {‘h’} and/or {‘v’}. The ‘Frequency’ field contains an array of the available frequency points.

The ‘Value’ field is a tensor containing complex-double type data and is of the size (numEle x numAzi x numElem x numPol x numFreq).

The ‘Description’ field contains a string describing what data is included in the file. Typically, it is ‘sqrt of abs of complex realised gain’.

The ‘Unit’ field is a string denoting if the data is in the linear or logarithmic units. Typically, it is expected to be ‘linear’.

The ‘Date’ field is a string denoting the date and time when the measurement campaign was completed and the data was stored.

Parameters:
  • path (string) – Directory location and name of .mat file containing measurement data
  • arrPorInd (numpy.array, default = [], optional) – Indices of antenna ports
  • arrPol (numpy.array, default = ['h','v'], optional) – Strings corresponding to polarization (‘h’ and/or ‘v’)
  • arrFreq (numpy.array, default = 0, optional) – Frequency points in Hertz
Returns:

Created Array

Return type:

EADF

eadf.importers.fromNarrowBandAngData(path: str, **kwargs) → eadf.eadf.EADF

This format defines angular data over uniformly sampled ele and azi for a range of antenna ports elem, with v and/or h-polarization pol. Using the importer it is possible to choose the respective indices for antenna ports, polarization to derive the EADF.

The .mat file which utilizes this importer is expected to consist of a struct named ‘pattern’ which includes the fields: ‘Dim’, ‘Value’.

The ‘Dim’ field is itself a struct which describes the dimensions of the 4-dimensional ‘Value’ tensor. ‘Dim’ contains Name-Value pairs corresponding to and ordered as ‘Elevation’, ‘Azimuth’, ‘Element’, and ‘Polarization’.

The ‘Elevation’ and ‘Azimuth’ fields contain the vectors with the range of their respective angles.The ‘Element’ field contains the indices of the measured array ports starting from 1, while the ‘Polarization’ field is a cell array structured as {‘h’} and/or {‘v’}.

The ‘Value’ field is a tensor containing complex-double type data and is of the size (numEle x numAzi x numElem x numPol).

Parameters:
  • path (string) – Directory location and name of .mat file containing measurement data
  • arrPorInd (numpy.array, default = [], optional) – Indices of antenna ports
  • arrPol (numpy.array, default = ['h','v'], optional) – Strings corresponding to polarization (‘h’ and/or ‘v’)
Returns:

Created Array

Return type:

EADF

eadf.importers.fromArraydefData(path: str) → eadf.eadf.EADF

Import from Matlab arraydef structure used for calibrated arrays at TUI.

Parameters:path (str) – path to .mat-file
Returns:EADF object from the respective data
Return type:EADF
eadf.importers.fromHFSS(*filenames, **options)

Importer from HFSS .csv exports.

This format allows to specify a list of angles (azi, ele)_i and beam pattern values v_i = (pol, freq, elem)_i which are then interpolated along the two angular domains to get a regular grid in azimuth and co-elevation. By default this is done using vector spherical harmonics, since they can deal with irregular sampling patterns quite nicely. In this format for each angular sampling point, we need to have excited the array elements with the same frequencies.

Parameters:
  • *filenames (str) – One or multiple filenames, corresponding to .csv HFSS output files.
  • key_CoElevation (str, optional) –

    The HFSS parameter name corresponding to the Azimuth dimension.

    Defaults to Theta.

  • key_Azimuth (str, optional) –

    The HFSS parameter name corresponding to the Co-Elevation dimension.

    Defaults to phi.

  • key_Frequency (str, optional) –

    The HFSS parameter name corresponding to the frequency dimension.

    Defaults to freq.

  • key_Polarization (tuple of str, optional) –

    An immutable tuple of HFSS type identifiers, that shall populate the polarization dimension of the EADF tensor.

    Defaults to (‘rEPhi’, ‘rETheta’).

  • position (numpy.ndarray, optional) – The position of the antenna, given in [3 x 1] coordinates.
  • **options (kwargs) – Further key-worded arguments will be passed on to the construction of the EADF object
Returns:

Created Array

Return type:

EADF