Skip to main content

Planar Near-Field Antenna Measurement Functions

Project description

antenna-pnf

A Python utility module for planar near-field (PNF) antenna measurement calculations. It provides helper methods to determine key measurement parameters such as separation distance, sampling spacing, scan length, and angle of view, based on IEEE standards.


Requirements

  • Python 3.8+
  • No third-party dependencies (uses the standard library math module only)

Installation

pip install antenna-pnf

Usage

import antenna_pnf as pnf

API Reference

All methods are static and accessible directly on the antenna-pnf class without instantiation.


seperation_distance(frequency, coeff)

Computes an arbitrary separation distance as a multiple of the wavelength.

Parameter Type Unit Description
frequency float Hz Frequency of interest
coeff float Wavelength multiplier coefficient

Returns: float — separation distance in meters [m]

Formula:

$$R_{nf} = k \times \lambda = k \times c_0 / f$$

d = pnf.seperation_distance(10e9, 10)  # 10 wavelengths at 10 GHz

min_seperation_distance(frequency, three_lambda=False)

Returns the minimum recommended separation distance between the antenna under test (AUT) and the probe, per IEEE 1720-2012 Section 5.3.1.4.

Parameter Type Unit Description
frequency float Hz Frequency of interest
three_lambda bool Use 3λ criterion instead of the default 5λ

Returns: float — minimum separation distance in meters [m]

Formula:

$$R_{nf} = 5 \times \lambda = 5 \times c_0 / f$$

Note: The standard recommends choosing between 3λ and 5λ. The default (5λ) is used to ensure sufficient decoupling between the AUT and the probe. Set three_lambda=True to use the relaxed 3λ criterion.

d_min = pnf.min_seperation_distance(10e9)           # 5λ (default)
d_min = pnf.min_seperation_distance(10e9, three_lambda=True)  # 3λ

angle_of_view(a, d, L)

Computes the reliable far-field angle-of-view achievable from a planar near-field scan, per IEEE 149-2021 Eq. 99 and IEEE 1720-2012 Eq. 27.

Parameter Type Unit Description
a float m Antenna cross-section length
d float m Separation distance between AUT and probe
L float m Scan region length

Returns: float — angle of view in degrees [deg]

Raises: ValueError — if L <= a (scan length must exceed antenna size)

Formula:

$$\theta = \arctan\left(\frac{L - a}{2d}\right)$$

Note: The scan region is assumed to be centered on the AUT.

theta = pnf.angle_of_view(a=0.3, d=0.15, L=1.2)

sampling_spacing(frequency)

Returns the maximum allowable sampling interval (grid spacing) for a near-field scan, per IEEE 149-2021 and IEEE 1720-2012 Eq. 25.

Parameter Type Unit Description
frequency float Hz Frequency of interest

Returns: float — maximum sampling spacing in meters [m]

Formula:

$$\Delta = \lambda / 2 = 0.5 \times c_0 / f$$

delta = pnf.sampling_spacing(10e9)

scan_length(a, d, theta)

Computes the required scan length to achieve a desired angle-of-view, per IEEE 149-2021 Eq. 99 and IEEE 1720-2012 Eq. 27.

Parameter Type Unit Description
a float m Antenna cross-section length
d float m Separation distance between AUT and probe
theta float deg Desired pattern view angle (one side)

Returns: float — required scan length in the same unit as inputs [m]

Formula:

$$L = 2d \cdot \tan\theta + a$$

Note: The scan region is assumed to be centered on the AUT.

L = pnf.scan_length(a=0.3, d=0.15, theta=45.0)

sampling_parameters_for_length(frequency, L)

Computes the sampling parameters (start position, stop position, count, and spacing) for a planar near-field scan based on the desired minimum scan length.

Parameter Type Unit Description
frequency float Hz Frequency of interest
L float m Desired minimum scan length

Returns: tuple — (Lm, Lp, N, Delta) where Lm is sampling start position in meters [m], Lp is sampling stop position in meters [m], N is sampling count, Delta is spatial sampling length in millimeters [mm]

Note: The scan region is assumed to be centered on the AUT. The sampling spacing is floored to the nearest millimeter, and the scan length is adjusted to ensure proper sampling.

Lm, Lp, N, Delta = pnf.sampling_parameters_for_length(10e9, 1.2)

sampling_parameters_for_angle(frequency, a, d, theta)

Computes the sampling parameters (start position, stop position, count, and spacing) for a planar near-field scan to achieve a desired angle-of-view.

Parameter Type Unit Description
frequency float Hz Frequency of interest
a float m Antenna cross-section length
d float m Separation distance between AUT and probe
theta float deg Desired pattern view angle (one side)

Returns: tuple — (Lm, Lp, N, Delta) where Lm is sampling start position in meters [m], Lp is sampling stop position in meters [m], N is sampling count, Delta is spatial sampling length in millimeters [mm]

Note: The scan region is assumed to be centered on the AUT. This function first computes the required scan length using scan_length, then determines the sampling parameters.

Lm, Lp, N, Delta = pnf.sampling_parameters_for_angle(10e9, 0.3, 0.15, 45.0)

Usage Example

from antenna-pnf import antenna-pnf

frequency = 10e9  # 10 GHz

# Minimum separation distance (5 wavelengths)
d = pnf.min_seperation_distance(frequency)
print(f"Min separation distance : {d*100:.2f} cm")

# Maximum sampling spacing
delta = pnf.sampling_spacing(frequency)
print(f"Max sampling spacing    : {delta*1000:.2f} mm")

# Required scan length for ±45° angle-of-view with a 30 cm antenna
antenna_size = 0.30  # m
L = pnf.scan_length(a=antenna_size, d=d, theta=45.0)
print(f"Required scan length    : {L:.4f} m")

# Achieved angle-of-view
theta = pnf.angle_of_view(a=antenna_size, d=d, L=L)
print(f"Angle of view           : {theta:.2f} deg")

# Sampling parameters for a desired scan length
Lm, Lp, N, Delta = pnf.sampling_parameters_for_length(9.5e9, 8.730)
print(f"Sampling start position : {Lm:.3f} m")
print(f"Sampling stop position  : {Lp:.3f} m")
print(f"Sampling count          : {N}")
print(f"Sampling spacing        : {Delta} mm")

# Sampling parameters for a desired angle-of-view
Lm, Lp, N, Delta = pnf.sampling_parameters_for_angle(9.5e9, 0.5, 0.15, 60.0)
print(f"Sampling start position : {Lm:.3f} m")
print(f"Sampling stop position  : {Lp:.3f} m")
print(f"Sampling count          : {N}")
print(f"Sampling spacing        : {Delta} mm")

Standards References

Standard Title
IEEE 149-2021 Recommended Practice for Antenna Measurements
IEEE 1720-2012 Recommended Practice for Near-Field Antenna Measurements

Constants

Symbol Value Description
C0 299 792 458 m/s Speed of light in vacuum

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

antenna_pnf-0.2.0.tar.gz (5.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

antenna_pnf-0.2.0-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file antenna_pnf-0.2.0.tar.gz.

File metadata

  • Download URL: antenna_pnf-0.2.0.tar.gz
  • Upload date:
  • Size: 5.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: pdm/2.26.7 CPython/3.14.3 Linux/6.17.0-1008-azure

File hashes

Hashes for antenna_pnf-0.2.0.tar.gz
Algorithm Hash digest
SHA256 74c836a2372717cbbe40d0dbe643ca95f9c42642a532c19f19a907858a858edd
MD5 cb040dbab39b74721f466f5db164a392
BLAKE2b-256 6cd8b02c3440f8c5ff9295ceca038b8667b99f3e2dbd6eb58f2b0703eaf783d5

See more details on using hashes here.

File details

Details for the file antenna_pnf-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: antenna_pnf-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 5.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: pdm/2.26.7 CPython/3.14.3 Linux/6.17.0-1008-azure

File hashes

Hashes for antenna_pnf-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f4880eca52f095b6452057c371616243150babf57118260fd3e5815d82c542ef
MD5 0b322b86a026483943d74119a82baef6
BLAKE2b-256 381fc841ff4ce35aa8a6d4cf3242d7a971f5fa325b9823d520923b8ff4179e0b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page