Antenna Arrays¶

Simulated antenna arrays are the simulation module’s extension of
the core AnteannaArray
decsription by RfChain models
and polarimetric antenna descriptions.
They are used to configure the frontend description of
SimulatedDevices.
The current implementation supports two types of antenna arrays:
Array Model |
Description |
|---|---|
Custom antenna array with aribtray antenna types, positions and orientations |
|
Uniformly antenna array with equidistantly spaced antennas of the same type |
They can be configured by assigning them to the antennas attribute
of a SimulatedDevice:
1simulation = Simulation()
2device = simulation.new_device(carrier_frequency=1e8)
3device.antennas = SimulatedAntennaArray()
The SimulatedAntennaArray in this example snippet has to be replaced by one of the
available implementations.
During simulation runtime, the aforementioned antennas
property can be exploited to compare the performance of different antenna array models:
1uniform_array = SimulatedUniformArray(SimulatedIdealAntenna, 1e-2, [2, 2, 1])
2
3custom_array = SimulatedCustomArray()
4for x, y in np.ndindex((2, 2)):
5 custom_array.add_antenna(SimulatedIdealAntenna(
6 pose=Transformation.From_Translation(np.array([x*1e-2, y*1e-2, 0])),
7 ))
8
9simulation.new_dimension('antennas', [uniform_array, custom_array], device)
In this case, every configured performance evaluator wille be executed for both antenna array models, collecting evaluation samples for each of them.
- class SimulatedAntennaArray(pose=None)[source]¶
Bases:
AntennaArray[SimulatedAntenna]Array of simulated antennas.
- Parameters:
pose (
Transformation|None) – The antenna array’s position and orientation with respect to its device. If not specified, the same orientation and position as the device is assumed.
- calculate_power(carrier_frequency, arg_0, arg_1=None, *, aoi)[source]¶
Calculate antenna array’s radiated or received power.
- Parameters:
carrier_frequency (
float) – The carrier frequency of the signal to be transmitted / received in Hz.arg_0 (
Literal[<AntennaMode.TX: 0>] |Literal[<AntennaMode.RX: 1>] |TransmitBeamformer|ReceiveBeamformer) –mode: The antenna mode of the array (Transmission or Reception).
OR
beamformer: The beamformer to be used for beamforming.
beamforming_weights.
The beamforming weights to be used for beamforming. If not specified, the weights are assumed to be \(1+0\mathrm{j}\). Not required when arg_0 is a beamformer.
aoi (
ndarray) – An array that contains the angles of interest.
- Return type:
- plot_pattern(carrier_frequency, arg_0, arg_1=None, *, title=None, slice_list=None)[source]¶
Plot the antenna array’s radiation pattern.
- Parameters:
carrier_frequency (
float) – The carrier frequency of the signal to be transmitted / received in Hz.arg_0 (
Literal[<AntennaMode.TX: 0>] |Literal[<AntennaMode.RX: 1>] |TransmitBeamformer|ReceiveBeamformer) –mode : The antenna mode to be plotted.
OR
beamformer :The beamformer to be used for beamforming.
beamforming_weights.
The beamforming weights to be used for beamforming. If not specified, the weights are assumed to be \(1+0\mathrm{j}\). Not required when arg_0 is a beamformer.
title (
str|None) – The title of the plot. If not specified, a default title is assumed.slice_list (
list[tuple[tuple,tuple]] |None) – A list that defines the parameterisation of the slicing planes to plot the radiation pattern in 2D. Each element of the list is a tuple with two tuple elements. The first tuple corrresponds to the starting point (azimuth,zenith) of the slicing circle. The second tuple corresponds to the repective slicing directions of azimuth and zenith. If slice_list is not specified, 3D pattern is plotted.
- Return type:
- transmit(signal)[source]¶
Transmit a signal over the antenna array.
The transmission may be distorted by the antennas impulse response / frequency characteristics, as well as by the RF chains connected to the array’s ports.
- Parameters:
signal (
Signal) – The signal model to be transmitted.- Return type:
- Returns:
The signal model emerging from the antenna array’s transmit antennas.
- Raises:
ValueError – If the number of signal streams does not match the number of transmit ports.