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.6+
- No third-party dependencies (uses the standard library
mathmodule 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=Trueto 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)
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")
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file antenna_pnf-0.1.0.tar.gz.
File metadata
- Download URL: antenna_pnf-0.1.0.tar.gz
- Upload date:
- Size: 4.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: pdm/2.26.7 CPython/3.14.3 Linux/6.14.0-1017-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e053c69db53313fd9350e1739dc56b5af6f5895aa3d963ce542f5594963468a9
|
|
| MD5 |
f71076cb3915dcdbb1650d965e1f6278
|
|
| BLAKE2b-256 |
4a23b767dd9db31376f8a25033b26d21b8d640fd1628bdf131dd81b8a9f62694
|
File details
Details for the file antenna_pnf-0.1.0-py3-none-any.whl.
File metadata
- Download URL: antenna_pnf-0.1.0-py3-none-any.whl
- Upload date:
- Size: 4.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: pdm/2.26.7 CPython/3.14.3 Linux/6.14.0-1017-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
113d340ce98cf4b33a2f172a1c797294c02f6709f3e1f7efa1020a5022fe574e
|
|
| MD5 |
d13b3f18d83c3d84a495c2d1fce9e242
|
|
| BLAKE2b-256 |
84532a3c9b0ab7c029981d4ddf3fa87ad14c37fda296400bc29e896bbf1fcca6
|