phased-array-modeling 1.0.0__tar.gz → 1.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {phased_array_modeling-1.0.0/phased_array_modeling.egg-info → phased_array_modeling-1.2.0}/PKG-INFO +20 -4
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.2.0}/README.md +19 -3
- phased_array_modeling-1.2.0/phased_array/__init__.py +225 -0
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.2.0}/phased_array/beamforming.py +4 -2
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.2.0}/phased_array/core.py +4 -2
- phased_array_modeling-1.2.0/phased_array/export.py +680 -0
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.2.0}/phased_array/geometry.py +4 -3
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.2.0}/phased_array/impairments.py +3 -2
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.2.0}/phased_array/utils.py +2 -1
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.2.0}/phased_array/visualization.py +219 -4
- phased_array_modeling-1.2.0/phased_array/wideband.py +732 -0
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.2.0/phased_array_modeling.egg-info}/PKG-INFO +20 -4
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.2.0}/phased_array_modeling.egg-info/SOURCES.txt +5 -1
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.2.0}/pyproject.toml +1 -1
- phased_array_modeling-1.2.0/tests/test_export.py +285 -0
- phased_array_modeling-1.2.0/tests/test_wideband.py +333 -0
- phased_array_modeling-1.0.0/phased_array/__init__.py +0 -263
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.2.0}/LICENSE +0 -0
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.2.0}/phased_array_modeling.egg-info/dependency_links.txt +0 -0
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.2.0}/phased_array_modeling.egg-info/requires.txt +0 -0
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.2.0}/phased_array_modeling.egg-info/top_level.txt +0 -0
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.2.0}/setup.cfg +0 -0
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.2.0}/tests/test_beamforming.py +0 -0
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.2.0}/tests/test_core.py +0 -0
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.2.0}/tests/test_geometry.py +0 -0
- {phased_array_modeling-1.0.0 → phased_array_modeling-1.2.0}/tests/test_impairments.py +0 -0
{phased_array_modeling-1.0.0/phased_array_modeling.egg-info → phased_array_modeling-1.2.0}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: phased-array-modeling
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: Comprehensive Python library for phased array antenna modeling and visualization
|
|
5
5
|
Author-email: John Hodge <jah70@vt.edu>
|
|
6
6
|
License: MIT
|
|
@@ -42,9 +42,12 @@ Dynamic: license-file
|
|
|
42
42
|
# Phased Array Antenna Modeling
|
|
43
43
|
|
|
44
44
|
[](https://github.com/jman4162/Phased-Array-Antenna-Model/actions/workflows/ci.yml)
|
|
45
|
+
[](https://pypi.org/project/phased-array-modeling/)
|
|
46
|
+
[](https://pypi.org/project/phased-array-modeling/)
|
|
45
47
|
[](https://www.python.org/downloads/)
|
|
46
48
|
[](https://opensource.org/licenses/MIT)
|
|
47
49
|
[](https://colab.research.google.com/github/jman4162/Phased-Array-Antenna-Model/blob/main/Phased_Array_Demo.ipynb)
|
|
50
|
+
[](https://phased-array-antenna-model.streamlit.app/)
|
|
48
51
|
|
|
49
52
|
A comprehensive Python library for computing and visualizing phased array antenna radiation patterns. Features **125x faster** vectorized computations, multiple array geometries, advanced beamforming, and interactive 3D visualization.
|
|
50
53
|
|
|
@@ -56,23 +59,36 @@ A comprehensive Python library for computing and visualizing phased array antenn
|
|
|
56
59
|
- **Realistic Impairments**: Mutual coupling, phase quantization, element failures, scan blindness
|
|
57
60
|
- **Visualization**: 2D matplotlib, interactive 3D Plotly, UV-space representation
|
|
58
61
|
- **Subarray Support**: Subarray-level beamforming with quantized phase shifters
|
|
62
|
+
- **Data Export**: CSV, JSON, and NumPy formats for patterns, weights, and geometry
|
|
63
|
+
|
|
64
|
+
## Try it Online
|
|
65
|
+
|
|
66
|
+
**[Launch Interactive Web App](https://phased-array-antenna-model.streamlit.app/)** - No installation required!
|
|
67
|
+
|
|
68
|
+
The Streamlit app provides an interactive interface for:
|
|
69
|
+
- Designing array geometries (rectangular, triangular, circular, concentric rings, elliptical)
|
|
70
|
+
- Beam steering with real-time pattern visualization
|
|
71
|
+
- Amplitude tapering with sidelobe comparison
|
|
72
|
+
- Impairment simulation (phase quantization, element failures, mutual coupling)
|
|
73
|
+
- UV-space pattern analysis
|
|
74
|
+
- Export data to CSV for further analysis
|
|
59
75
|
|
|
60
76
|
## Installation
|
|
61
77
|
|
|
62
78
|
### From GitHub (recommended)
|
|
63
79
|
|
|
64
80
|
```bash
|
|
65
|
-
pip install
|
|
81
|
+
pip install phased-array-modeling
|
|
66
82
|
```
|
|
67
83
|
|
|
68
84
|
### With optional dependencies
|
|
69
85
|
|
|
70
86
|
```bash
|
|
71
87
|
# Include Plotly for 3D visualization
|
|
72
|
-
pip install "phased-array[plotting]
|
|
88
|
+
pip install "phased-array-modeling[plotting]"
|
|
73
89
|
|
|
74
90
|
# Include all optional dependencies
|
|
75
|
-
pip install "phased-array[full]
|
|
91
|
+
pip install "phased-array-modeling[full]"
|
|
76
92
|
```
|
|
77
93
|
|
|
78
94
|
### For development
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
# Phased Array Antenna Modeling
|
|
2
2
|
|
|
3
3
|
[](https://github.com/jman4162/Phased-Array-Antenna-Model/actions/workflows/ci.yml)
|
|
4
|
+
[](https://pypi.org/project/phased-array-modeling/)
|
|
5
|
+
[](https://pypi.org/project/phased-array-modeling/)
|
|
4
6
|
[](https://www.python.org/downloads/)
|
|
5
7
|
[](https://opensource.org/licenses/MIT)
|
|
6
8
|
[](https://colab.research.google.com/github/jman4162/Phased-Array-Antenna-Model/blob/main/Phased_Array_Demo.ipynb)
|
|
9
|
+
[](https://phased-array-antenna-model.streamlit.app/)
|
|
7
10
|
|
|
8
11
|
A comprehensive Python library for computing and visualizing phased array antenna radiation patterns. Features **125x faster** vectorized computations, multiple array geometries, advanced beamforming, and interactive 3D visualization.
|
|
9
12
|
|
|
@@ -15,23 +18,36 @@ A comprehensive Python library for computing and visualizing phased array antenn
|
|
|
15
18
|
- **Realistic Impairments**: Mutual coupling, phase quantization, element failures, scan blindness
|
|
16
19
|
- **Visualization**: 2D matplotlib, interactive 3D Plotly, UV-space representation
|
|
17
20
|
- **Subarray Support**: Subarray-level beamforming with quantized phase shifters
|
|
21
|
+
- **Data Export**: CSV, JSON, and NumPy formats for patterns, weights, and geometry
|
|
22
|
+
|
|
23
|
+
## Try it Online
|
|
24
|
+
|
|
25
|
+
**[Launch Interactive Web App](https://phased-array-antenna-model.streamlit.app/)** - No installation required!
|
|
26
|
+
|
|
27
|
+
The Streamlit app provides an interactive interface for:
|
|
28
|
+
- Designing array geometries (rectangular, triangular, circular, concentric rings, elliptical)
|
|
29
|
+
- Beam steering with real-time pattern visualization
|
|
30
|
+
- Amplitude tapering with sidelobe comparison
|
|
31
|
+
- Impairment simulation (phase quantization, element failures, mutual coupling)
|
|
32
|
+
- UV-space pattern analysis
|
|
33
|
+
- Export data to CSV for further analysis
|
|
18
34
|
|
|
19
35
|
## Installation
|
|
20
36
|
|
|
21
37
|
### From GitHub (recommended)
|
|
22
38
|
|
|
23
39
|
```bash
|
|
24
|
-
pip install
|
|
40
|
+
pip install phased-array-modeling
|
|
25
41
|
```
|
|
26
42
|
|
|
27
43
|
### With optional dependencies
|
|
28
44
|
|
|
29
45
|
```bash
|
|
30
46
|
# Include Plotly for 3D visualization
|
|
31
|
-
pip install "phased-array[plotting]
|
|
47
|
+
pip install "phased-array-modeling[plotting]"
|
|
32
48
|
|
|
33
49
|
# Include all optional dependencies
|
|
34
|
-
pip install "phased-array[full]
|
|
50
|
+
pip install "phased-array-modeling[full]"
|
|
35
51
|
```
|
|
36
52
|
|
|
37
53
|
### For development
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Phased Array Antenna Modeling Package
|
|
3
|
+
|
|
4
|
+
A comprehensive Python library for computing and visualizing phased array
|
|
5
|
+
antenna radiation patterns, including:
|
|
6
|
+
|
|
7
|
+
- Vectorized array factor computation (50-100x faster than loops)
|
|
8
|
+
- FFT-based pattern computation for uniform rectangular arrays
|
|
9
|
+
- Various array geometries (rectangular, circular, conformal, sparse)
|
|
10
|
+
- Beamforming techniques (tapering, null steering, multi-beam)
|
|
11
|
+
- Realistic impairments (mutual coupling, quantization, failures, scan blindness)
|
|
12
|
+
- Interactive 3D visualization with Plotly
|
|
13
|
+
- UV-space pattern representation
|
|
14
|
+
|
|
15
|
+
Example
|
|
16
|
+
-------
|
|
17
|
+
>>> import phased_array as pa
|
|
18
|
+
>>> import numpy as np
|
|
19
|
+
>>>
|
|
20
|
+
>>> # Create a 10x10 rectangular array, half-wavelength spacing
|
|
21
|
+
>>> geom = pa.create_rectangular_array(10, 10, dx=0.5, dy=0.5)
|
|
22
|
+
>>>
|
|
23
|
+
>>> # Compute steering weights for 30 deg scan
|
|
24
|
+
>>> k = pa.wavelength_to_k(1.0) # normalized wavelength
|
|
25
|
+
>>> weights = pa.steering_vector(k, geom.x, geom.y, theta0_deg=30, phi0_deg=0)
|
|
26
|
+
>>>
|
|
27
|
+
>>> # Apply Taylor taper for sidelobe control
|
|
28
|
+
>>> taper = pa.taylor_taper_2d(10, 10, sidelobe_dB=-30)
|
|
29
|
+
>>> weights = weights * taper
|
|
30
|
+
>>>
|
|
31
|
+
>>> # Compute and plot pattern
|
|
32
|
+
>>> theta, phi, pattern_dB = pa.compute_full_pattern(geom.x, geom.y, weights, k)
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
__version__ = "1.2.0"
|
|
36
|
+
|
|
37
|
+
# Beamforming functions
|
|
38
|
+
from .beamforming import ( # Amplitude tapers; Null steering; Multiple beams
|
|
39
|
+
apply_taper_to_geometry, chebyshev_taper_1d, chebyshev_taper_2d,
|
|
40
|
+
compute_beam_isolation, compute_null_depth, compute_taper_directivity_loss,
|
|
41
|
+
compute_taper_efficiency, cosine_on_pedestal_taper_1d,
|
|
42
|
+
cosine_on_pedestal_taper_2d, cosine_taper_1d, cosine_taper_2d,
|
|
43
|
+
gaussian_taper_1d, gaussian_taper_2d, hamming_taper_1d, hamming_taper_2d,
|
|
44
|
+
hanning_taper_1d, hanning_taper_2d, monopulse_weights,
|
|
45
|
+
multi_beam_weights_orthogonal, multi_beam_weights_superposition,
|
|
46
|
+
null_steering_lcmv, null_steering_projection, taylor_taper_1d,
|
|
47
|
+
taylor_taper_2d)
|
|
48
|
+
# Core computation functions
|
|
49
|
+
from .core import (array_factor_fft, array_factor_uv, array_factor_vectorized,
|
|
50
|
+
compute_directivity, compute_full_pattern,
|
|
51
|
+
compute_half_power_beamwidth, compute_pattern_cuts,
|
|
52
|
+
element_pattern, element_pattern_cosine_tapered,
|
|
53
|
+
steering_vector, total_pattern)
|
|
54
|
+
# Export functions
|
|
55
|
+
from .export import (export_array_config_json, export_coupling_matrix_csv,
|
|
56
|
+
export_geometry_csv, export_pattern_2d_csv,
|
|
57
|
+
export_pattern_csv, export_pattern_npz,
|
|
58
|
+
export_summary_report, export_uv_pattern_csv,
|
|
59
|
+
export_weights_csv, load_pattern_npz)
|
|
60
|
+
# Geometry classes and functions
|
|
61
|
+
from .geometry import (ArrayGeometry, SubarrayArchitecture,
|
|
62
|
+
array_factor_conformal, compute_subarray_weights,
|
|
63
|
+
create_circular_array, create_concentric_rings_array,
|
|
64
|
+
create_cylindrical_array, create_elliptical_array,
|
|
65
|
+
create_rectangular_array, create_rectangular_subarrays,
|
|
66
|
+
create_spherical_array, create_triangular_array,
|
|
67
|
+
thin_array_density_tapered,
|
|
68
|
+
thin_array_genetic_algorithm, thin_array_random)
|
|
69
|
+
# Impairment models
|
|
70
|
+
from .impairments import ( # Mutual coupling; Phase quantization; Element failures; Scan blindness
|
|
71
|
+
active_element_pattern, analyze_graceful_degradation,
|
|
72
|
+
analyze_quantization_effect, apply_mutual_coupling, apply_scan_blindness,
|
|
73
|
+
compute_scan_loss, mutual_coupling_matrix_measured,
|
|
74
|
+
mutual_coupling_matrix_theoretical, quantization_rms_error,
|
|
75
|
+
quantization_sidelobe_increase, quantize_phase, scan_blindness_model,
|
|
76
|
+
simulate_element_failures, surface_wave_scan_angle)
|
|
77
|
+
# Utility functions
|
|
78
|
+
from .utils import (azel_to_thetaphi, create_theta_phi_grid, create_uv_grid,
|
|
79
|
+
db_to_linear, deg2rad, frequency_to_k,
|
|
80
|
+
frequency_to_wavelength, is_visible_region, linear_to_db,
|
|
81
|
+
normalize_pattern, rad2deg, theta_phi_to_uv,
|
|
82
|
+
thetaphi_to_azel, uv_to_theta_phi, wavelength_to_k)
|
|
83
|
+
# Visualization functions
|
|
84
|
+
from .visualization import ( # 2D matplotlib plots; UV-space; 3D Plotly plots; Wideband
|
|
85
|
+
compute_pattern_uv_space, create_pattern_animation_plotly,
|
|
86
|
+
plot_array_geometry, plot_array_geometry_3d_plotly, plot_beam_squint,
|
|
87
|
+
plot_comparison_patterns, plot_pattern_2d,
|
|
88
|
+
plot_pattern_3d_cartesian_plotly, plot_pattern_3d_plotly,
|
|
89
|
+
plot_pattern_contour, plot_pattern_polar, plot_pattern_uv_plotly,
|
|
90
|
+
plot_pattern_uv_space, plot_pattern_vs_frequency,
|
|
91
|
+
plot_pattern_vs_frequency_plotly, plot_subarray_delays)
|
|
92
|
+
# Wideband / TTD functions
|
|
93
|
+
from .wideband import (analyze_instantaneous_bandwidth, compare_steering_modes,
|
|
94
|
+
compute_beam_squint, compute_pattern_vs_frequency,
|
|
95
|
+
compute_subarray_delays_ttd,
|
|
96
|
+
compute_subarray_weights_hybrid, steering_delays_ttd,
|
|
97
|
+
steering_vector_hybrid, steering_vector_ttd)
|
|
98
|
+
|
|
99
|
+
__all__ = [
|
|
100
|
+
# Version
|
|
101
|
+
"__version__",
|
|
102
|
+
# Core
|
|
103
|
+
"steering_vector",
|
|
104
|
+
"array_factor_vectorized",
|
|
105
|
+
"array_factor_uv",
|
|
106
|
+
"array_factor_fft",
|
|
107
|
+
"element_pattern",
|
|
108
|
+
"element_pattern_cosine_tapered",
|
|
109
|
+
"total_pattern",
|
|
110
|
+
"compute_pattern_cuts",
|
|
111
|
+
"compute_full_pattern",
|
|
112
|
+
"compute_directivity",
|
|
113
|
+
"compute_half_power_beamwidth",
|
|
114
|
+
# Utils
|
|
115
|
+
"deg2rad",
|
|
116
|
+
"rad2deg",
|
|
117
|
+
"azel_to_thetaphi",
|
|
118
|
+
"thetaphi_to_azel",
|
|
119
|
+
"theta_phi_to_uv",
|
|
120
|
+
"uv_to_theta_phi",
|
|
121
|
+
"is_visible_region",
|
|
122
|
+
"wavelength_to_k",
|
|
123
|
+
"frequency_to_wavelength",
|
|
124
|
+
"frequency_to_k",
|
|
125
|
+
"db_to_linear",
|
|
126
|
+
"linear_to_db",
|
|
127
|
+
"normalize_pattern",
|
|
128
|
+
"create_theta_phi_grid",
|
|
129
|
+
"create_uv_grid",
|
|
130
|
+
# Geometry
|
|
131
|
+
"ArrayGeometry",
|
|
132
|
+
"SubarrayArchitecture",
|
|
133
|
+
"create_rectangular_array",
|
|
134
|
+
"create_triangular_array",
|
|
135
|
+
"create_elliptical_array",
|
|
136
|
+
"create_circular_array",
|
|
137
|
+
"create_concentric_rings_array",
|
|
138
|
+
"create_cylindrical_array",
|
|
139
|
+
"create_spherical_array",
|
|
140
|
+
"thin_array_random",
|
|
141
|
+
"thin_array_density_tapered",
|
|
142
|
+
"thin_array_genetic_algorithm",
|
|
143
|
+
"create_rectangular_subarrays",
|
|
144
|
+
"compute_subarray_weights",
|
|
145
|
+
"array_factor_conformal",
|
|
146
|
+
# Beamforming
|
|
147
|
+
"taylor_taper_1d",
|
|
148
|
+
"taylor_taper_2d",
|
|
149
|
+
"chebyshev_taper_1d",
|
|
150
|
+
"chebyshev_taper_2d",
|
|
151
|
+
"hamming_taper_1d",
|
|
152
|
+
"hamming_taper_2d",
|
|
153
|
+
"hanning_taper_1d",
|
|
154
|
+
"hanning_taper_2d",
|
|
155
|
+
"cosine_taper_1d",
|
|
156
|
+
"cosine_taper_2d",
|
|
157
|
+
"cosine_on_pedestal_taper_1d",
|
|
158
|
+
"cosine_on_pedestal_taper_2d",
|
|
159
|
+
"gaussian_taper_1d",
|
|
160
|
+
"gaussian_taper_2d",
|
|
161
|
+
"compute_taper_efficiency",
|
|
162
|
+
"compute_taper_directivity_loss",
|
|
163
|
+
"apply_taper_to_geometry",
|
|
164
|
+
"null_steering_projection",
|
|
165
|
+
"null_steering_lcmv",
|
|
166
|
+
"compute_null_depth",
|
|
167
|
+
"multi_beam_weights_superposition",
|
|
168
|
+
"multi_beam_weights_orthogonal",
|
|
169
|
+
"compute_beam_isolation",
|
|
170
|
+
"monopulse_weights",
|
|
171
|
+
# Impairments
|
|
172
|
+
"mutual_coupling_matrix_theoretical",
|
|
173
|
+
"mutual_coupling_matrix_measured",
|
|
174
|
+
"apply_mutual_coupling",
|
|
175
|
+
"active_element_pattern",
|
|
176
|
+
"quantize_phase",
|
|
177
|
+
"quantization_rms_error",
|
|
178
|
+
"quantization_sidelobe_increase",
|
|
179
|
+
"analyze_quantization_effect",
|
|
180
|
+
"simulate_element_failures",
|
|
181
|
+
"analyze_graceful_degradation",
|
|
182
|
+
"surface_wave_scan_angle",
|
|
183
|
+
"scan_blindness_model",
|
|
184
|
+
"apply_scan_blindness",
|
|
185
|
+
"compute_scan_loss",
|
|
186
|
+
# Visualization
|
|
187
|
+
"plot_pattern_2d",
|
|
188
|
+
"plot_pattern_polar",
|
|
189
|
+
"plot_pattern_contour",
|
|
190
|
+
"plot_array_geometry",
|
|
191
|
+
"compute_pattern_uv_space",
|
|
192
|
+
"plot_pattern_uv_space",
|
|
193
|
+
"plot_pattern_3d_plotly",
|
|
194
|
+
"plot_pattern_3d_cartesian_plotly",
|
|
195
|
+
"plot_array_geometry_3d_plotly",
|
|
196
|
+
"plot_pattern_uv_plotly",
|
|
197
|
+
"plot_comparison_patterns",
|
|
198
|
+
"create_pattern_animation_plotly",
|
|
199
|
+
# Export
|
|
200
|
+
"export_pattern_csv",
|
|
201
|
+
"export_pattern_2d_csv",
|
|
202
|
+
"export_uv_pattern_csv",
|
|
203
|
+
"export_weights_csv",
|
|
204
|
+
"export_geometry_csv",
|
|
205
|
+
"export_array_config_json",
|
|
206
|
+
"export_pattern_npz",
|
|
207
|
+
"load_pattern_npz",
|
|
208
|
+
"export_coupling_matrix_csv",
|
|
209
|
+
"export_summary_report",
|
|
210
|
+
# Wideband / TTD
|
|
211
|
+
"steering_vector_ttd",
|
|
212
|
+
"steering_delays_ttd",
|
|
213
|
+
"steering_vector_hybrid",
|
|
214
|
+
"compute_subarray_delays_ttd",
|
|
215
|
+
"compute_beam_squint",
|
|
216
|
+
"analyze_instantaneous_bandwidth",
|
|
217
|
+
"compute_pattern_vs_frequency",
|
|
218
|
+
"compute_subarray_weights_hybrid",
|
|
219
|
+
"compare_steering_modes",
|
|
220
|
+
# Wideband visualization
|
|
221
|
+
"plot_beam_squint",
|
|
222
|
+
"plot_pattern_vs_frequency",
|
|
223
|
+
"plot_pattern_vs_frequency_plotly",
|
|
224
|
+
"plot_subarray_delays",
|
|
225
|
+
]
|
|
@@ -4,11 +4,13 @@ Beamforming functions for phased arrays.
|
|
|
4
4
|
Includes amplitude tapering, null steering, and multiple simultaneous beams.
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
|
+
from typing import List, Optional, Tuple, Union
|
|
8
|
+
|
|
7
9
|
import numpy as np
|
|
8
10
|
from scipy import signal
|
|
9
|
-
|
|
10
|
-
from .geometry import ArrayGeometry
|
|
11
|
+
|
|
11
12
|
from .core import steering_vector
|
|
13
|
+
from .geometry import ArrayGeometry
|
|
12
14
|
|
|
13
15
|
ArrayLike = Union[np.ndarray, float]
|
|
14
16
|
|
|
@@ -5,9 +5,11 @@ Includes vectorized array factor, FFT-based computation, steering vectors,
|
|
|
5
5
|
and element patterns.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
+
from typing import Optional, Tuple, Union
|
|
9
|
+
|
|
8
10
|
import numpy as np
|
|
9
|
-
|
|
10
|
-
from .utils import
|
|
11
|
+
|
|
12
|
+
from .utils import create_theta_phi_grid, linear_to_db, theta_phi_to_uv
|
|
11
13
|
|
|
12
14
|
ArrayLike = Union[np.ndarray, float]
|
|
13
15
|
|