Skip to content

flex_rf.tidy3d.LobeMeasurer

Type: class Base(s): MicrowaveBaseModel

Tool for detecting and analyzing lobes in antenna radiation patterns, along with their characteristics such as direction and beamwidth.

theta = np.linspace(0, 2 * np.pi, 301, endpoint=False)
Urad = np.cos(theta) ** 2 * np.cos(3 * theta) ** 2
lobe_measurer = LobeMeasurer(
angle=theta,
radiation_pattern=Urad)
lobe_measures = lobe_measurer.lobe_measures
angle [ArrayFloat1D]

A 1-dimensional array of angles in radians. The angles should be in the range [0, 2π] and should be sorted in ascending order.

radiation_pattern [ArrayFloat1D]

A 1-dimensional array of real values representing the radiation pattern of the antenna measured on a linear scale.

apply_cyclic_extension [bool] = True

To enable accurate peak finding near boundaries of the angle array, we need to extend the signal using its periodicity. If lobes near the boundaries are not of interest, this can be set to False.

width_measure [float] = 0.5

Relative magnitude of the lobes at which the beamwidth is measured. Default value of 0.5 corresponds with the half-power beamwidth.

min_lobe_height [float] = DEFAULT_MIN_LOBE_REL_HEIGHT

Only lobes in the radiation pattern with heights above this value are found. Lobe heights are measured relative to the maximum value in radiation_pattern.

null_threshold [float] = DEFAULT_NULL_THRESHOLD

The threshold for detecting nulls, which is relative to the maximum value in the radiation_pattern.

main_lobe [DataFrame]

Properties of the main lobe.

side_lobes [DataFrame]

Properties of all side lobes.

sidelobe_level [float | None]

The sidelobe level returned on a linear scale.

cyclic_extension(angle: ArrayLike, signal: ArrayLike)

This helper function extends the given signal array by leveraging its periodic nature. It ensures that the peak finding algorithm in Scipy can reliably detect peaks near the minimum and maximum values of the angle array. The returned arrays are extended to the range [-π, 3π).

lobe_measures()

The lobe measures as a pandas pandas.DataFrame with the following columns:

plot(lobe_index: int, ax: Ax, include_beamwidth: bool = True, include_FNWB: bool = True)

Annotate an existing matplotlib axis with lobe locations and widths.