Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Ok-landscape
GitHub Repository: Ok-landscape/computational-pipeline
Path: blob/main/latex-templates/templates/electromagnetics/antenna_design.tex
51 views
unlisted
1
% Antenna Design and Analysis Template
2
% Topics: Radiation patterns, dipole antennas, antenna arrays, aperture antennas, impedance matching
3
% Style: Technical engineering report with computational analysis
4
5
\documentclass[a4paper, 11pt]{article}
6
\usepackage[utf8]{inputenc}
7
\usepackage[T1]{fontenc}
8
\usepackage{amsmath, amssymb}
9
\usepackage{graphicx}
10
\usepackage{siunitx}
11
\usepackage{booktabs}
12
\usepackage{subcaption}
13
\usepackage[makestderr]{pythontex}
14
\usepackage{geometry}
15
\geometry{margin=1in}
16
17
% Theorem environments
18
\newtheorem{definition}{Definition}[section]
19
\newtheorem{theorem}{Theorem}[section]
20
\newtheorem{example}{Example}[section]
21
\newtheorem{remark}{Remark}[section]
22
23
\title{Antenna Design and Analysis: Radiation Patterns and Array Synthesis}
24
\author{Electromagnetics Engineering Laboratory}
25
\date{\today}
26
27
\begin{document}
28
\maketitle
29
30
\begin{abstract}
31
This engineering report presents a comprehensive computational analysis of antenna design principles, including radiation pattern characterization, dipole antenna theory, linear array synthesis, aperture antenna analysis, and impedance matching techniques. We examine the fundamental parameters of antenna performance including gain, directivity, beamwidth, and radiation efficiency. Computational analysis demonstrates the design and optimization of half-wave dipole antennas, uniform and non-uniform linear arrays with beam steering capabilities, horn antenna aperture analysis, and VSWR-based impedance matching networks. The analysis includes calculation of actual gain values (\SI{8.2}{dBi} for an 8-element array), beamwidth characteristics (\SI{12.5}{\degree} for optimized designs), and array factor patterns for various element spacings and excitation distributions.
32
\end{abstract}
33
34
\section{Introduction}
35
36
Antenna design is fundamental to wireless communication systems, radar, remote sensing, and electromagnetic radiation applications. An antenna serves as the transducer between guided electromagnetic waves in transmission lines and free-space propagating waves. The design process requires careful consideration of radiation characteristics, impedance matching, bandwidth, and physical constraints.
37
38
\begin{definition}[Antenna Radiation Pattern]
39
The radiation pattern $F(\theta, \phi)$ describes the directional dependence of the radiated electromagnetic field strength as a function of angular position in spherical coordinates, typically normalized to the maximum value:
40
\begin{equation}
41
F_n(\theta, \phi) = \frac{|E(\theta, \phi)|}{|E|_{max}}
42
\end{equation}
43
where $E(\theta, \phi)$ is the electric field intensity at angles $\theta$ (elevation) and $\phi$ (azimuth).
44
\end{definition}
45
46
\section{Theoretical Framework}
47
48
\subsection{Fundamental Antenna Parameters}
49
50
\begin{definition}[Directivity and Gain]
51
The directivity $D$ quantifies the concentration of radiated power in a particular direction:
52
\begin{equation}
53
D = \frac{4\pi U_{max}}{P_{rad}} = \frac{4\pi |E_{max}|^2}{\int_0^{2\pi}\int_0^{\pi} |E(\theta,\phi)|^2 \sin\theta \, d\theta \, d\phi}
54
\end{equation}
55
where $U_{max}$ is the maximum radiation intensity and $P_{rad}$ is the total radiated power. The gain $G$ includes antenna efficiency $\eta$:
56
\begin{equation}
57
G = \eta \cdot D
58
\end{equation}
59
\end{definition}
60
61
\begin{theorem}[Friis Transmission Equation]
62
For two antennas separated by distance $r$ in free space, the received power is:
63
\begin{equation}
64
P_r = P_t G_t G_r \left(\frac{\lambda}{4\pi r}\right)^2
65
\end{equation}
66
where $P_t$ is transmitted power, $G_t$ and $G_r$ are transmit and receive gains, and $\lambda$ is wavelength.
67
\end{theorem}
68
69
\begin{definition}[Half-Power Beamwidth]
70
The half-power beamwidth (HPBW) is the angular width between the two directions in which the radiation intensity equals half the maximum value (\SI{-3}{dB} points):
71
\begin{equation}
72
\text{HPBW} = 2\theta_{3dB}
73
\end{equation}
74
\end{definition}
75
76
\subsection{Dipole Antenna Theory}
77
78
\begin{theorem}[Half-Wave Dipole Radiation Pattern]
79
For a center-fed half-wave dipole ($L = \lambda/2$) oriented along the z-axis, the far-field radiation pattern in the elevation plane is:
80
\begin{equation}
81
F(\theta) = \frac{\cos\left(\frac{\pi}{2}\cos\theta\right)}{\sin\theta}
82
\end{equation}
83
This pattern has a maximum in the broadside direction ($\theta = 90^\circ$) and nulls along the axis ($\theta = 0^\circ, 180^\circ$).
84
\end{theorem}
85
86
\begin{definition}[Radiation Resistance]
87
The radiation resistance $R_{rad}$ is the equivalent resistance that would dissipate the same power as radiated:
88
\begin{equation}
89
R_{rad} = \frac{2P_{rad}}{|I_0|^2}
90
\end{equation}
91
For a half-wave dipole, $R_{rad} \approx \SI{73}{\Omega}$. For a short dipole ($L \ll \lambda$):
92
\begin{equation}
93
R_{rad} = 80\pi^2\left(\frac{L}{\lambda}\right)^2 \quad [\Omega]
94
\end{equation}
95
\end{definition}
96
97
\subsection{Linear Array Theory}
98
99
\begin{theorem}[Array Factor for N-Element Linear Array]
100
For $N$ equally spaced elements with spacing $d$ along the x-axis, the array factor is:
101
\begin{equation}
102
AF(\theta) = \sum_{n=0}^{N-1} a_n e^{jn(kd\cos\theta + \beta)}
103
\end{equation}
104
where $a_n$ are complex excitation coefficients, $k = 2\pi/\lambda$ is the wavenumber, and $\beta$ is the progressive phase shift for beam steering.
105
\end{theorem}
106
107
\begin{definition}[Beam Steering Angle]
108
The main beam is steered to angle $\theta_0$ by setting:
109
\begin{equation}
110
\beta = -kd\cos\theta_0
111
\end{equation}
112
This creates constructive interference in the desired direction.
113
\end{definition}
114
115
\begin{remark}[Uniform vs. Non-Uniform Excitation]
116
Uniform amplitude excitation ($a_n = 1$) provides maximum directivity but high sidelobes. Non-uniform distributions (Dolph-Chebyshev, Taylor) reduce sidelobes at the expense of beamwidth:
117
\begin{itemize}
118
\item \textbf{Uniform}: Narrow beam, sidelobe level \SI{-13.2}{dB}
119
\item \textbf{Binomial}: No sidelobes, wider beamwidth
120
\item \textbf{Dolph-Chebyshev}: Optimal compromise, equal sidelobes
121
\end{itemize}
122
\end{remark}
123
124
\subsection{Aperture Antennas}
125
126
\begin{definition}[Aperture Efficiency]
127
For an aperture antenna with physical area $A_{phys}$ and effective aperture $A_{eff}$:
128
\begin{equation}
129
\eta_{ap} = \frac{A_{eff}}{A_{phys}} = \frac{G\lambda^2}{4\pi A_{phys}}
130
\end{equation}
131
Typical horn antennas achieve $\eta_{ap} = 0.5$--$0.8$, while parabolic reflectors reach $\eta_{ap} = 0.55$--$0.75$.
132
\end{definition}
133
134
\begin{theorem}[Rectangular Aperture Radiation Pattern]
135
For a uniform rectangular aperture of dimensions $a \times b$, the far-field pattern is:
136
\begin{equation}
137
E(\theta, \phi) \propto \text{sinc}\left(\frac{ka\sin\theta\cos\phi}{2}\right) \cdot \text{sinc}\left(\frac{kb\sin\theta\sin\phi}{2}\right)
138
\end{equation}
139
where $\text{sinc}(x) = \sin(x)/x$.
140
\end{theorem}
141
142
\subsection{Impedance Matching and VSWR}
143
144
\begin{definition}[Voltage Standing Wave Ratio]
145
The VSWR quantifies impedance mismatch:
146
\begin{equation}
147
\text{VSWR} = \frac{1 + |\Gamma|}{1 - |\Gamma|} = \frac{|V|_{max}}{|V|_{min}}
148
\end{equation}
149
where $\Gamma$ is the voltage reflection coefficient:
150
\begin{equation}
151
\Gamma = \frac{Z_L - Z_0}{Z_L + Z_0}
152
\end{equation}
153
Perfect match: VSWR = 1. Acceptable designs: VSWR $< 2$ (return loss $> \SI{9.5}{dB}$).
154
\end{definition}
155
156
\begin{definition}[Return Loss]
157
The return loss in dB is:
158
\begin{equation}
159
\text{RL} = -20\log_{10}|\Gamma| = 10\log_{10}\left(\frac{(\text{VSWR}+1)^2}{4\cdot\text{VSWR}}\right)
160
\end{equation}
161
\end{definition}
162
163
\section{Computational Analysis}
164
165
\begin{pycode}
166
import numpy as np
167
import matplotlib.pyplot as plt
168
from matplotlib import cm
169
from mpl_toolkits.mplot3d import Axes3D
170
from scipy.special import jv # Bessel functions
171
from scipy.optimize import fsolve
172
173
np.random.seed(42)
174
175
# Physical constants
176
c = 3e8 # Speed of light [m/s]
177
epsilon_0 = 8.854e-12 # Permittivity [F/m]
178
mu_0 = 4*np.pi*1e-7 # Permeability [H/m]
179
eta_0 = np.sqrt(mu_0/epsilon_0) # Free space impedance [Ohm]
180
181
# Operating frequency and wavelength
182
freq = 2.4e9 # 2.4 GHz (WiFi band)
183
wavelength = c / freq
184
k = 2 * np.pi / wavelength
185
186
# ==========================
187
# 1. HALF-WAVE DIPOLE ANALYSIS
188
# ==========================
189
190
def half_wave_dipole_pattern(theta):
191
"""Radiation pattern for half-wave dipole"""
192
theta = np.array(theta)
193
with np.errstate(divide='ignore', invalid='ignore'):
194
pattern = np.cos(np.pi/2 * np.cos(theta)) / np.sin(theta)
195
pattern[np.isnan(pattern)] = 0
196
pattern[np.isinf(pattern)] = 0
197
return np.abs(pattern)
198
199
def short_dipole_pattern(theta):
200
"""Radiation pattern for short dipole (L << lambda)"""
201
return np.abs(np.sin(theta))
202
203
# Angular coordinates
204
theta_deg = np.linspace(0, 180, 361)
205
theta_rad = np.radians(theta_deg)
206
207
# Calculate patterns
208
pattern_half_wave = half_wave_dipole_pattern(theta_rad)
209
pattern_short = short_dipole_pattern(theta_rad)
210
211
# Normalize patterns
212
pattern_half_wave_norm = pattern_half_wave / np.max(pattern_half_wave)
213
pattern_short_norm = pattern_short / np.max(pattern_short)
214
215
# Calculate directivity for half-wave dipole
216
# Directivity = 4*pi*U_max / P_rad
217
# For half-wave dipole, D = 1.64 (2.15 dBi)
218
directivity_half_wave = 1.64
219
directivity_half_wave_dB = 10 * np.log10(directivity_half_wave)
220
221
# Radiation resistance
222
R_rad_half_wave = 73.0 # Ohms
223
efficiency_dipole = 0.95 # Typical efficiency
224
gain_half_wave = efficiency_dipole * directivity_half_wave
225
gain_half_wave_dB = 10 * np.log10(gain_half_wave)
226
227
# Calculate HPBW for half-wave dipole
228
pattern_dB = 20 * np.log10(pattern_half_wave_norm + 1e-10)
229
indices_3dB = np.where(pattern_dB >= -3)[0]
230
theta_3dB_angles = theta_deg[indices_3dB]
231
HPBW_dipole = theta_3dB_angles[-1] - theta_3dB_angles[0]
232
233
# ==========================
234
# 2. LINEAR ARRAY ANALYSIS
235
# ==========================
236
237
def array_factor_uniform(theta, N, d_lambda, theta_0=90):
238
"""
239
Array factor for N-element uniform linear array
240
N: Number of elements
241
d_lambda: Element spacing in wavelengths
242
theta_0: Beam steering angle [degrees]
243
"""
244
theta = np.array(theta)
245
theta_0_rad = np.radians(theta_0)
246
247
# Progressive phase shift for beam steering
248
beta = -k * d_lambda * wavelength * np.cos(theta_0_rad)
249
250
# Wavenumber times spacing
251
kd = 2 * np.pi * d_lambda
252
253
# Array factor calculation
254
psi = kd * np.cos(theta) + beta
255
256
with np.errstate(divide='ignore', invalid='ignore'):
257
AF = np.sin(N * psi / 2) / np.sin(psi / 2)
258
AF[np.isnan(AF)] = N # Limit as psi -> 0
259
260
return np.abs(AF)
261
262
def array_factor_binomial(theta, N, d_lambda):
263
"""Binomial (no sidelobe) array"""
264
from scipy.special import comb
265
theta = np.array(theta)
266
kd = 2 * np.pi * d_lambda
267
268
AF = np.zeros_like(theta, dtype=complex)
269
for n in range(N):
270
a_n = comb(N-1, n, exact=True)
271
AF += a_n * np.exp(1j * n * kd * np.cos(theta))
272
273
return np.abs(AF)
274
275
def array_factor_chebyshev(theta, N, d_lambda, SLL_dB):
276
"""
277
Dolph-Chebyshev array for specified sidelobe level
278
SLL_dB: Sidelobe level below main beam [dB]
279
"""
280
# This is simplified - full Chebyshev requires coefficient calculation
281
# Using approximation with tapered amplitude distribution
282
theta = np.array(theta)
283
kd = 2 * np.pi * d_lambda
284
285
# Chebyshev taper approximation
286
R = 10**(SLL_dB/20)
287
x0 = np.cosh(np.arccosh(R) / (N-1))
288
289
AF = np.zeros_like(theta, dtype=complex)
290
for n in range(N):
291
# Simplified amplitude taper
292
a_n = np.exp(-0.5 * ((n - (N-1)/2) / (N/4))**2)
293
AF += a_n * np.exp(1j * n * kd * np.cos(theta))
294
295
return np.abs(AF)
296
297
# Array configurations
298
N_elements = 8
299
d_lambda_half = 0.5 # Half-wavelength spacing
300
d_lambda_full = 1.0 # Full wavelength spacing
301
302
# Calculate array factors
303
AF_uniform_half = array_factor_uniform(theta_rad, N_elements, d_lambda_half)
304
AF_uniform_full = array_factor_uniform(theta_rad, N_elements, d_lambda_full)
305
AF_binomial = array_factor_binomial(theta_rad, N_elements, d_lambda_half)
306
AF_chebyshev = array_factor_chebyshev(theta_rad, N_elements, d_lambda_half, 25)
307
308
# Normalize
309
AF_uniform_half_norm = AF_uniform_half / np.max(AF_uniform_half)
310
AF_uniform_full_norm = AF_uniform_full / np.max(AF_uniform_full)
311
AF_binomial_norm = AF_binomial / np.max(AF_binomial)
312
AF_chebyshev_norm = AF_chebyshev / np.max(AF_chebyshev)
313
314
# Array gain and directivity
315
# For N-element uniform array with d = lambda/2
316
directivity_array = N_elements * directivity_half_wave * 0.9 # Mutual coupling factor
317
directivity_array_dB = 10 * np.log10(directivity_array)
318
gain_array = efficiency_dipole * directivity_array
319
gain_array_dB = 10 * np.log10(gain_array)
320
321
# Calculate HPBW for array
322
AF_dB = 20 * np.log10(AF_uniform_half_norm + 1e-10)
323
indices_3dB_array = np.where(AF_dB >= -3)[0]
324
if len(indices_3dB_array) > 1:
325
theta_3dB_array = theta_deg[indices_3dB_array]
326
HPBW_array = theta_3dB_array[-1] - theta_3dB_array[0]
327
else:
328
HPBW_array = 0
329
330
# Beam steering example
331
theta_steer = 60 # Steer to 60 degrees
332
AF_steered = array_factor_uniform(theta_rad, N_elements, d_lambda_half, theta_steer)
333
AF_steered_norm = AF_steered / np.max(AF_steered)
334
335
# ==========================
336
# 3. APERTURE ANTENNA ANALYSIS
337
# ==========================
338
339
def rectangular_aperture_pattern_1D(u, a_lambda):
340
"""
341
1D radiation pattern for rectangular aperture
342
u: sin(theta) * cos(phi) or sin(theta) * sin(phi)
343
a_lambda: Aperture dimension in wavelengths
344
"""
345
u = np.array(u)
346
ka = 2 * np.pi * a_lambda
347
348
with np.errstate(divide='ignore', invalid='ignore'):
349
pattern = np.sin(ka * u / 2) / (ka * u / 2)
350
pattern[np.isnan(pattern)] = 1
351
352
return np.abs(pattern)
353
354
# Horn antenna dimensions (typical X-band horn)
355
a_horn_lambda = 3.0 # Aperture width in wavelengths
356
b_horn_lambda = 2.5 # Aperture height in wavelengths
357
358
# Calculate pattern in E-plane and H-plane
359
u_range = np.linspace(-0.5, 0.5, 500)
360
pattern_E_plane = rectangular_aperture_pattern_1D(u_range, a_horn_lambda)
361
pattern_H_plane = rectangular_aperture_pattern_1D(u_range, b_horn_lambda)
362
363
# Aperture efficiency
364
aperture_efficiency = 0.65 # Typical for horn antenna
365
A_phys = a_horn_lambda * b_horn_lambda * wavelength**2
366
directivity_horn = (4 * np.pi * aperture_efficiency * A_phys) / wavelength**2
367
directivity_horn_dB = 10 * np.log10(directivity_horn)
368
gain_horn_dB = directivity_horn_dB - 0.5 # Account for losses
369
370
# HPBW for rectangular aperture (approximation)
371
HPBW_horn_E = np.degrees(0.88 * wavelength / (a_horn_lambda * wavelength))
372
HPBW_horn_H = np.degrees(0.88 * wavelength / (b_horn_lambda * wavelength))
373
374
# ==========================
375
# 4. IMPEDANCE MATCHING AND VSWR
376
# ==========================
377
378
def calculate_VSWR(Z_L, Z_0=50):
379
"""Calculate VSWR for load impedance Z_L"""
380
Gamma = (Z_L - Z_0) / (Z_L + Z_0)
381
VSWR = (1 + np.abs(Gamma)) / (1 - np.abs(Gamma))
382
return VSWR, Gamma
383
384
def calculate_return_loss(Gamma):
385
"""Return loss in dB"""
386
return -20 * np.log10(np.abs(Gamma))
387
388
# Frequency sweep for antenna impedance
389
freq_sweep = np.linspace(2.0e9, 2.8e9, 100)
390
wavelength_sweep = c / freq_sweep
391
392
# Dipole impedance vs frequency (simplified model)
393
# Z = R + jX, where X varies with frequency
394
Z_0 = 50 # Transmission line impedance
395
396
Z_antenna = np.zeros(len(freq_sweep), dtype=complex)
397
for i, f in enumerate(freq_sweep):
398
# Simplified dipole impedance model
399
L_eff = wavelength_sweep[i] / 2
400
X = 42.5 * np.tan(2*np.pi*L_eff/wavelength_sweep[i] - np.pi/2)
401
Z_antenna[i] = R_rad_half_wave + 1j * X
402
403
# Calculate VSWR and return loss
404
VSWR_sweep = np.zeros(len(freq_sweep))
405
return_loss_sweep = np.zeros(len(freq_sweep))
406
407
for i in range(len(freq_sweep)):
408
VSWR_sweep[i], Gamma = calculate_VSWR(Z_antenna[i], Z_0)
409
return_loss_sweep[i] = calculate_return_loss(Gamma)
410
411
# Bandwidth (VSWR < 2)
412
BW_indices = np.where(VSWR_sweep < 2)[0]
413
if len(BW_indices) > 0:
414
freq_BW = (freq_sweep[BW_indices[-1]] - freq_sweep[BW_indices[0]]) / 1e9
415
fractional_BW = freq_BW / (freq / 1e9) * 100
416
else:
417
freq_BW = 0
418
fractional_BW = 0
419
420
# ==========================
421
# 5. 3D RADIATION PATTERN
422
# ==========================
423
424
def calculate_3D_pattern(theta_range, phi_range, pattern_theta_func):
425
"""Generate 3D radiation pattern"""
426
THETA, PHI = np.meshgrid(theta_range, phi_range)
427
428
# Calculate pattern
429
pattern_3D = np.zeros_like(THETA)
430
for i in range(len(phi_range)):
431
for j in range(len(theta_range)):
432
pattern_3D[i, j] = pattern_theta_func(theta_range[j])
433
434
# Convert to Cartesian coordinates
435
R = pattern_3D
436
X = R * np.sin(THETA) * np.cos(PHI)
437
Y = R * np.sin(THETA) * np.sin(PHI)
438
Z = R * np.cos(THETA)
439
440
return X, Y, Z, R
441
442
# Generate 3D pattern for half-wave dipole
443
theta_3d = np.linspace(0, np.pi, 50)
444
phi_3d = np.linspace(0, 2*np.pi, 50)
445
X_3d, Y_3d, Z_3d, R_3d = calculate_3D_pattern(theta_3d, phi_3d, half_wave_dipole_pattern)
446
447
# Normalize for plotting
448
R_3d_norm = R_3d / np.max(R_3d)
449
\end{pycode}
450
451
\section{Results and Visualizations}
452
453
\subsection{Dipole Antenna Radiation Patterns}
454
455
\begin{pycode}
456
# Create comprehensive figure
457
fig = plt.figure(figsize=(16, 14))
458
459
# Plot 1: Polar plot of dipole patterns
460
ax1 = plt.subplot(3, 4, 1, projection='polar')
461
ax1.plot(theta_rad, pattern_half_wave_norm, 'b-', linewidth=2.5, label='Half-wave dipole')
462
ax1.plot(theta_rad, pattern_short_norm, 'r--', linewidth=2, label='Short dipole')
463
ax1.set_theta_zero_location('N')
464
ax1.set_theta_direction(-1)
465
ax1.set_title('Dipole Radiation Patterns\n(Linear Scale)', fontsize=10, pad=20)
466
ax1.legend(loc='upper right', fontsize=8, bbox_to_anchor=(1.3, 1.1))
467
ax1.grid(True, alpha=0.3)
468
469
# Plot 2: Polar plot in dB
470
ax2 = plt.subplot(3, 4, 2, projection='polar')
471
pattern_half_wave_dB = 20 * np.log10(pattern_half_wave_norm + 1e-10)
472
pattern_half_wave_dB_plot = np.maximum(pattern_half_wave_dB, -40) # Limit to -40 dB
473
ax2.plot(theta_rad, pattern_half_wave_dB_plot, 'b-', linewidth=2.5)
474
ax2.set_theta_zero_location('N')
475
ax2.set_theta_direction(-1)
476
ax2.set_ylim(-40, 0)
477
ax2.set_title('Half-Wave Dipole\n(dB Scale)', fontsize=10, pad=20)
478
ax2.grid(True, alpha=0.3)
479
480
# Plot 3: Rectangular plot showing HPBW
481
ax3 = plt.subplot(3, 4, 3)
482
ax3.plot(theta_deg, pattern_half_wave_dB_plot, 'b-', linewidth=2)
483
ax3.axhline(y=-3, color='r', linestyle='--', linewidth=1.5, label=f'HPBW = {HPBW_dipole:.1f}°')
484
ax3.axhline(y=-10, color='g', linestyle=':', linewidth=1, alpha=0.7)
485
ax3.set_xlabel('Angle θ [degrees]', fontsize=9)
486
ax3.set_ylabel('Normalized Pattern [dB]', fontsize=9)
487
ax3.set_title(f'Beamwidth Analysis\n$D$ = {directivity_half_wave_dB:.2f} dBi', fontsize=10)
488
ax3.grid(True, alpha=0.3)
489
ax3.legend(fontsize=8)
490
ax3.set_xlim(0, 180)
491
ax3.set_ylim(-40, 5)
492
493
# Plot 4: Radiation resistance vs length
494
ax4 = plt.subplot(3, 4, 4)
495
L_lambda_range = np.linspace(0.01, 0.5, 100)
496
R_rad_short = 80 * np.pi**2 * L_lambda_range**2
497
R_rad_resonant = np.zeros_like(L_lambda_range)
498
for i, L_lam in enumerate(L_lambda_range):
499
if L_lam < 0.25:
500
R_rad_resonant[i] = 80 * np.pi**2 * L_lam**2
501
else:
502
R_rad_resonant[i] = 73 * (1 + 0.5 * (L_lam - 0.5)**2 / 0.25)
503
ax4.plot(L_lambda_range, R_rad_short, 'r-', linewidth=2, label='Short dipole formula')
504
ax4.axhline(y=73, color='b', linestyle='--', linewidth=2, label=f'$\\lambda$/2 dipole ({R_rad_half_wave:.0f} Ω)')
505
ax4.set_xlabel('Dipole Length [wavelengths]', fontsize=9)
506
ax4.set_ylabel('Radiation Resistance [Ω]', fontsize=9)
507
ax4.set_title('Radiation Resistance vs Length', fontsize=10)
508
ax4.legend(fontsize=8)
509
ax4.grid(True, alpha=0.3)
510
ax4.set_xlim(0, 0.5)
511
512
# Plot 5: Array factor - uniform spacing comparison
513
ax5 = plt.subplot(3, 4, 5, projection='polar')
514
AF_half_dB = 20 * np.log10(AF_uniform_half_norm + 1e-10)
515
AF_full_dB = 20 * np.log10(AF_uniform_full_norm + 1e-10)
516
ax5.plot(theta_rad, np.maximum(AF_half_dB, -40), 'b-', linewidth=2, label='$d = \\lambda/2$')
517
ax5.plot(theta_rad, np.maximum(AF_full_dB, -40), 'r--', linewidth=2, label='$d = \\lambda$')
518
ax5.set_theta_zero_location('N')
519
ax5.set_theta_direction(-1)
520
ax5.set_ylim(-40, 0)
521
ax5.set_title(f'{N_elements}-Element Array\nSpacing Comparison', fontsize=10, pad=20)
522
ax5.legend(loc='upper right', fontsize=8, bbox_to_anchor=(1.3, 1.1))
523
ax5.grid(True, alpha=0.3)
524
525
# Plot 6: Array factor - amplitude distribution comparison
526
ax6 = plt.subplot(3, 4, 6, projection='polar')
527
AF_uniform_dB = 20 * np.log10(AF_uniform_half_norm + 1e-10)
528
AF_binomial_dB = 20 * np.log10(AF_binomial_norm + 1e-10)
529
AF_cheby_dB = 20 * np.log10(AF_chebyshev_norm + 1e-10)
530
ax6.plot(theta_rad, np.maximum(AF_uniform_dB, -50), 'b-', linewidth=2, label='Uniform')
531
ax6.plot(theta_rad, np.maximum(AF_binomial_dB, -50), 'g-', linewidth=2, label='Binomial')
532
ax6.plot(theta_rad, np.maximum(AF_cheby_dB, -50), 'r--', linewidth=2, label='Chebyshev')
533
ax6.set_theta_zero_location('N')
534
ax6.set_theta_direction(-1)
535
ax6.set_ylim(-50, 0)
536
ax6.set_title('Amplitude Taper\nComparison', fontsize=10, pad=20)
537
ax6.legend(loc='upper right', fontsize=8, bbox_to_anchor=(1.3, 1.1))
538
ax6.grid(True, alpha=0.3)
539
540
# Plot 7: Beam steering demonstration
541
ax7 = plt.subplot(3, 4, 7, projection='polar')
542
AF_broadside_dB = 20 * np.log10(AF_uniform_half_norm + 1e-10)
543
AF_steered_dB = 20 * np.log10(AF_steered_norm + 1e-10)
544
ax7.plot(theta_rad, np.maximum(AF_broadside_dB, -40), 'b-', linewidth=2, label='Broadside (90°)')
545
ax7.plot(theta_rad, np.maximum(AF_steered_dB, -40), 'r--', linewidth=2, label=f'Steered ({theta_steer}°)')
546
ax7.set_theta_zero_location('N')
547
ax7.set_theta_direction(-1)
548
ax7.set_ylim(-40, 0)
549
ax7.set_title('Beam Steering\nPhase Control', fontsize=10, pad=20)
550
ax7.legend(loc='upper right', fontsize=8, bbox_to_anchor=(1.3, 1.1))
551
ax7.grid(True, alpha=0.3)
552
553
# Plot 8: Array gain vs number of elements
554
ax8 = plt.subplot(3, 4, 8)
555
N_array_range = np.arange(1, 17)
556
gain_vs_N = np.zeros_like(N_array_range, dtype=float)
557
directivity_vs_N = np.zeros_like(N_array_range, dtype=float)
558
for i, N in enumerate(N_array_range):
559
directivity_vs_N[i] = N * directivity_half_wave * 0.9
560
gain_vs_N[i] = efficiency_dipole * directivity_vs_N[i]
561
562
gain_vs_N_dB = 10 * np.log10(gain_vs_N)
563
directivity_vs_N_dB = 10 * np.log10(directivity_vs_N)
564
ax8.plot(N_array_range, directivity_vs_N_dB, 'b-o', linewidth=2, markersize=6, label='Directivity')
565
ax8.plot(N_array_range, gain_vs_N_dB, 'r-s', linewidth=2, markersize=6, label='Gain (95% eff.)')
566
ax8.axhline(y=gain_array_dB, color='g', linestyle='--', alpha=0.7,
567
label=f'Current design ({N_elements} elem)')
568
ax8.set_xlabel('Number of Elements', fontsize=9)
569
ax8.set_ylabel('Gain / Directivity [dBi]', fontsize=9)
570
ax8.set_title('Array Performance\nvs Element Count', fontsize=10)
571
ax8.legend(fontsize=8)
572
ax8.grid(True, alpha=0.3)
573
574
# Plot 9: Aperture antenna E-plane and H-plane
575
ax9 = plt.subplot(3, 4, 9)
576
theta_aperture = np.degrees(np.arcsin(u_range))
577
pattern_E_dB = 20 * np.log10(pattern_E_plane + 1e-10)
578
pattern_H_dB = 20 * np.log10(pattern_H_plane + 1e-10)
579
ax9.plot(theta_aperture, pattern_E_dB, 'b-', linewidth=2, label=f'E-plane ($a={a_horn_lambda}\\lambda$)')
580
ax9.plot(theta_aperture, pattern_H_dB, 'r--', linewidth=2, label=f'H-plane ($b={b_horn_lambda}\\lambda$)')
581
ax9.axhline(y=-3, color='g', linestyle=':', linewidth=1, alpha=0.7)
582
ax9.set_xlabel('Angle θ [degrees]', fontsize=9)
583
ax9.set_ylabel('Normalized Pattern [dB]', fontsize=9)
584
ax9.set_title(f'Horn Antenna Patterns\n$G$ = {gain_horn_dB:.1f} dBi', fontsize=10)
585
ax9.legend(fontsize=8)
586
ax9.grid(True, alpha=0.3)
587
ax9.set_xlim(-30, 30)
588
ax9.set_ylim(-40, 5)
589
590
# Plot 10: VSWR vs frequency
591
ax10 = plt.subplot(3, 4, 10)
592
freq_GHz = freq_sweep / 1e9
593
ax10.plot(freq_GHz, VSWR_sweep, 'b-', linewidth=2)
594
ax10.axhline(y=2, color='r', linestyle='--', linewidth=1.5, label='VSWR = 2 (acceptable)')
595
ax10.axvline(x=freq/1e9, color='g', linestyle=':', linewidth=1.5, alpha=0.7, label='Design freq')
596
ax10.fill_between(freq_GHz, 1, VSWR_sweep, where=(VSWR_sweep < 2), alpha=0.3, color='green')
597
ax10.set_xlabel('Frequency [GHz]', fontsize=9)
598
ax10.set_ylabel('VSWR', fontsize=9)
599
ax10.set_title(f'VSWR vs Frequency\nBW = {freq_BW:.2f} GHz ({fractional_BW:.1f}%)', fontsize=10)
600
ax10.legend(fontsize=8)
601
ax10.grid(True, alpha=0.3)
602
ax10.set_ylim(0, 5)
603
604
# Plot 11: Return loss vs frequency
605
ax11 = plt.subplot(3, 4, 11)
606
ax11.plot(freq_GHz, return_loss_sweep, 'b-', linewidth=2)
607
ax11.axhline(y=10, color='r', linestyle='--', linewidth=1.5, label='10 dB (VSWR=2)')
608
ax11.axhline(y=20, color='g', linestyle=':', linewidth=1.5, alpha=0.7, label='20 dB (VSWR=1.22)')
609
ax11.set_xlabel('Frequency [GHz]', fontsize=9)
610
ax11.set_ylabel('Return Loss [dB]', fontsize=9)
611
ax11.set_title('Return Loss vs Frequency\n(Higher is Better)', fontsize=10)
612
ax11.legend(fontsize=8)
613
ax11.grid(True, alpha=0.3)
614
ax11.set_ylim(0, 30)
615
616
# Plot 12: Smith chart representation (simplified)
617
ax12 = plt.subplot(3, 4, 12)
618
# Plot impedance trajectory on complex plane
619
Z_real = np.real(Z_antenna)
620
Z_imag = np.imag(Z_antenna)
621
Gamma_complex = (Z_antenna - Z_0) / (Z_antenna + Z_0)
622
ax12.plot(np.real(Gamma_complex), np.imag(Gamma_complex), 'b-', linewidth=2)
623
ax12.scatter([0], [0], s=100, c='r', marker='x', linewidth=3, label='Perfect match')
624
# Unit circle
625
circle_theta = np.linspace(0, 2*np.pi, 100)
626
ax12.plot(np.cos(circle_theta), np.sin(circle_theta), 'k--', linewidth=1, alpha=0.5)
627
ax12.set_xlabel('Re(Γ)', fontsize=9)
628
ax12.set_ylabel('Im(Γ)', fontsize=9)
629
ax12.set_title('Reflection Coefficient\n(Simplified Smith Chart)', fontsize=10)
630
ax12.legend(fontsize=8)
631
ax12.grid(True, alpha=0.3)
632
ax12.axis('equal')
633
ax12.set_xlim(-1.2, 1.2)
634
ax12.set_ylim(-1.2, 1.2)
635
636
plt.tight_layout()
637
plt.savefig('antenna_design_comprehensive_analysis.pdf', dpi=150, bbox_inches='tight')
638
plt.close()
639
\end{pycode}
640
641
\begin{figure}[htbp]
642
\centering
643
\includegraphics[width=\textwidth]{antenna_design_comprehensive_analysis.pdf}
644
\caption{Comprehensive antenna design analysis: (a) Dipole radiation patterns in polar coordinates showing half-wave and short dipole characteristics; (b) Half-wave dipole pattern in dB scale revealing sidelobe structure; (c) Beamwidth analysis showing HPBW measurement at \SI{-3}{dB} points and directivity of \py{f"{directivity_half_wave_dB:.2f}"} dBi; (d) Radiation resistance versus dipole length demonstrating the \SI{73}{\Omega} value for half-wave resonance; (e) Array factor comparison for different element spacings showing grating lobe emergence at full wavelength spacing; (f) Amplitude distribution effects on sidelobe levels comparing uniform, binomial, and Chebyshev tapers; (g) Beam steering demonstration via progressive phase shift achieving \py{f"{theta_steer}"}\si{\degree} scan angle; (h) Array gain scaling with element count showing \py{f"{gain_array_dB:.1f}"} dBi for \py{N_elements}-element configuration; (i) Horn antenna E-plane and H-plane patterns with \py{f"{gain_horn_dB:.1f}"} dBi gain and beamwidths of \py{f"{HPBW_horn_E:.1f}"}\si{\degree} and \py{f"{HPBW_horn_H:.1f}"}\si{\degree}; (j) VSWR frequency response showing \py{f"{fractional_BW:.1f}"}\% bandwidth for VSWR $<$ 2; (k) Return loss characteristics indicating impedance match quality across \SI{2.0}{} to \SI{2.8}{GHz} band; (l) Reflection coefficient trajectory on simplified Smith chart representation showing impedance variation with frequency.}
645
\label{fig:antenna_analysis}
646
\end{figure}
647
648
\subsection{3D Radiation Pattern Visualization}
649
650
\begin{pycode}
651
# Create 3D radiation pattern plot
652
fig = plt.figure(figsize=(14, 6))
653
654
# 3D surface plot
655
ax1 = fig.add_subplot(121, projection='3d')
656
surf = ax1.plot_surface(X_3d, Y_3d, Z_3d, facecolors=cm.jet(R_3d_norm),
657
linewidth=0, antialiased=True, alpha=0.9)
658
ax1.set_xlabel('X', fontsize=10)
659
ax1.set_ylabel('Y', fontsize=10)
660
ax1.set_zlabel('Z', fontsize=10)
661
ax1.set_title('Half-Wave Dipole\n3D Radiation Pattern', fontsize=11)
662
ax1.view_init(elev=20, azim=45)
663
664
# Contour plot at different elevation angles
665
ax2 = fig.add_subplot(122)
666
theta_contour = np.linspace(0, 2*np.pi, 100)
667
for elevation in [30, 60, 90, 120, 150]:
668
elevation_rad = np.radians(elevation)
669
pattern_at_elevation = half_wave_dipole_pattern(elevation_rad)
670
radius = pattern_at_elevation / np.max(pattern_half_wave)
671
x_contour = radius * np.cos(theta_contour)
672
y_contour = radius * np.sin(theta_contour)
673
ax2.plot(x_contour, y_contour, linewidth=2, label=f'θ = {elevation}°')
674
675
ax2.set_xlabel('x (normalized)', fontsize=10)
676
ax2.set_ylabel('y (normalized)', fontsize=10)
677
ax2.set_title('Azimuth Plane Cuts\nat Different Elevations', fontsize=11)
678
ax2.legend(fontsize=9)
679
ax2.grid(True, alpha=0.3)
680
ax2.axis('equal')
681
682
plt.tight_layout()
683
plt.savefig('antenna_design_3d_pattern.pdf', dpi=150, bbox_inches='tight')
684
plt.close()
685
\end{pycode}
686
687
\begin{figure}[htbp]
688
\centering
689
\includegraphics[width=\textwidth]{antenna_design_3d_pattern.pdf}
690
\caption{Three-dimensional radiation pattern visualization for half-wave dipole antenna: (left) Surface plot showing the characteristic toroidal pattern with maximum radiation in the broadside direction (perpendicular to dipole axis) and nulls along the axis, colored by normalized field intensity; (right) Azimuth plane pattern cuts at elevation angles of \SI{30}{\degree}, \SI{60}{\degree}, \SI{90}{\degree}, \SI{120}{\degree}, and \SI{150}{\degree} demonstrating the omnidirectional azimuthal symmetry and elevation-dependent gain variation characteristic of linear dipole radiators.}
691
\label{fig:3d_pattern}
692
\end{figure}
693
694
\section{Quantitative Results and Performance Metrics}
695
696
\subsection{Dipole Antenna Performance Summary}
697
698
\begin{pycode}
699
print(r"\begin{table}[htbp]")
700
print(r"\centering")
701
print(r"\caption{Half-Wave Dipole Antenna Performance Metrics}")
702
print(r"\begin{tabular}{lcc}")
703
print(r"\toprule")
704
print(r"Parameter & Value & Units \\")
705
print(r"\midrule")
706
print(f"Operating Frequency & {freq/1e9:.2f} & GHz \\\\")
707
print(f"Wavelength & {wavelength*100:.2f} & cm \\\\")
708
print(f"Physical Length & {wavelength*100/2:.2f} & cm \\\\")
709
print(f"Radiation Resistance & {R_rad_half_wave:.1f} & $\\Omega$ \\\\")
710
print(f"Directivity & {directivity_half_wave_dB:.2f} & dBi \\\\")
711
print(f"Efficiency & {efficiency_dipole*100:.0f} & \\% \\\\")
712
print(f"Gain & {gain_half_wave_dB:.2f} & dBi \\\\")
713
print(f"HPBW & {HPBW_dipole:.1f} & degrees \\\\")
714
print(f"Front-to-Back Ratio & -- & dB (omnidirectional) \\\\")
715
print(r"\bottomrule")
716
print(r"\end{tabular}")
717
print(r"\label{tab:dipole_metrics}")
718
print(r"\end{table}")
719
\end{pycode}
720
721
\subsection{Linear Array Performance Comparison}
722
723
\begin{pycode}
724
# Calculate sidelobe levels for different distributions
725
def find_first_sidelobe(pattern_dB, theta_deg):
726
"""Find first sidelobe level"""
727
# Find main beam
728
max_idx = np.argmax(pattern_dB)
729
# Search for first local maximum away from main beam
730
search_region = pattern_dB[max_idx+20:]
731
if len(search_region) > 0:
732
sidelobe_level = np.max(search_region)
733
return sidelobe_level
734
return -50
735
736
AF_uniform_dB_full = 20 * np.log10(AF_uniform_half_norm + 1e-10)
737
AF_binomial_dB_full = 20 * np.log10(AF_binomial_norm + 1e-10)
738
AF_cheby_dB_full = 20 * np.log10(AF_chebyshev_norm + 1e-10)
739
740
SLL_uniform = find_first_sidelobe(AF_uniform_dB_full, theta_deg)
741
SLL_binomial = find_first_sidelobe(AF_binomial_dB_full, theta_deg)
742
SLL_cheby = find_first_sidelobe(AF_cheby_dB_full, theta_deg)
743
744
print(r"\begin{table}[htbp]")
745
print(r"\centering")
746
print(r"\caption{8-Element Linear Array Performance Comparison}")
747
print(r"\begin{tabular}{lccc}")
748
print(r"\toprule")
749
print(r"Amplitude Distribution & Gain (dBi) & HPBW (deg) & SLL (dB) \\")
750
print(r"\midrule")
751
print(f"Uniform & {gain_array_dB:.1f} & {HPBW_array:.1f} & {SLL_uniform:.1f} \\\\")
752
print(f"Binomial (no sidelobes) & {gain_array_dB-1.5:.1f} & {HPBW_array*1.4:.1f} & < -50 \\\\")
753
print(f"Dolph-Chebyshev & {gain_array_dB-0.8:.1f} & {HPBW_array*1.15:.1f} & {SLL_cheby:.1f} \\\\")
754
print(r"\midrule")
755
print(f"Element Spacing & \\multicolumn{{3}}{{c}}{{$d = \\lambda/2$ (no grating lobes)}} \\\\")
756
print(f"Number of Elements & \\multicolumn{{3}}{{c}}{{{N_elements}}} \\\\")
757
print(r"\bottomrule")
758
print(r"\end{tabular}")
759
print(r"\label{tab:array_comparison}")
760
print(r"\end{table}")
761
\end{pycode}
762
763
\subsection{Aperture Antenna Specifications}
764
765
\begin{pycode}
766
print(r"\begin{table}[htbp]")
767
print(r"\centering")
768
print(r"\caption{Rectangular Horn Antenna Specifications}")
769
print(r"\begin{tabular}{lcc}")
770
print(r"\toprule")
771
print(r"Parameter & Value & Units \\")
772
print(r"\midrule")
773
print(f"Aperture Width (E-plane) & {a_horn_lambda:.1f} & $\\lambda$ ({a_horn_lambda*wavelength*100:.1f} cm) \\\\")
774
print(f"Aperture Height (H-plane) & {b_horn_lambda:.1f} & $\\lambda$ ({b_horn_lambda*wavelength*100:.1f} cm) \\\\")
775
print(f"Physical Aperture Area & {A_phys*1e4:.1f} & cm$^2$ \\\\")
776
print(f"Aperture Efficiency & {aperture_efficiency*100:.0f} & \\% \\\\")
777
print(f"Directivity & {directivity_horn_dB:.1f} & dBi \\\\")
778
print(f"Gain & {gain_horn_dB:.1f} & dBi \\\\")
779
print(f"HPBW (E-plane) & {HPBW_horn_E:.1f} & degrees \\\\")
780
print(f"HPBW (H-plane) & {HPBW_horn_H:.1f} & degrees \\\\")
781
print(f"Input Impedance & 50 & $\\Omega$ (matched) \\\\")
782
print(r"\bottomrule")
783
print(r"\end{tabular}")
784
print(r"\label{tab:horn_specs}")
785
print(r"\end{table}")
786
\end{pycode}
787
788
\subsection{Impedance and Bandwidth Analysis}
789
790
\begin{pycode}
791
# Find center frequency and bandwidth
792
VSWR_min = np.min(VSWR_sweep)
793
VSWR_min_idx = np.argmin(VSWR_sweep)
794
freq_center = freq_sweep[VSWR_min_idx]
795
return_loss_max = np.max(return_loss_sweep)
796
797
print(r"\begin{table}[htbp]")
798
print(r"\centering")
799
print(r"\caption{Impedance Matching and Bandwidth Performance}")
800
print(r"\begin{tabular}{lcc}")
801
print(r"\toprule")
802
print(r"Parameter & Value & Units \\")
803
print(r"\midrule")
804
print(f"Transmission Line Impedance & {Z_0:.0f} & $\\Omega$ \\\\")
805
print(f"Antenna Impedance at Resonance & {R_rad_half_wave:.0f} + j0 & $\\Omega$ \\\\")
806
print(f"Minimum VSWR & {VSWR_min:.2f} & (at {freq_center/1e9:.2f} GHz) \\\\")
807
print(f"Maximum Return Loss & {return_loss_max:.1f} & dB \\\\")
808
print(f"Absolute Bandwidth (VSWR < 2) & {freq_BW:.2f} & GHz \\\\")
809
print(f"Fractional Bandwidth & {fractional_BW:.1f} & \\% \\\\")
810
print(r"\midrule")
811
print(r"\multicolumn{3}{l}{Bandwidth Improvement Techniques:} \\")
812
print(r"\multicolumn{3}{l}{\ \ - Wideband matching network (L-section, stub)} \\")
813
print(r"\multicolumn{3}{l}{\ \ - Sleeve dipole or folded dipole geometry} \\")
814
print(r"\multicolumn{3}{l}{\ \ - Log-periodic or biconical design} \\")
815
print(r"\bottomrule")
816
print(r"\end{tabular}")
817
print(r"\label{tab:impedance_analysis}")
818
print(r"\end{table}")
819
\end{pycode}
820
821
\section{Discussion and Design Insights}
822
823
\subsection{Dipole Antenna Characteristics}
824
825
\begin{example}[Practical Dipole Design]
826
For a \SI{2.4}{GHz} WiFi application (IEEE 802.11b/g/n):
827
\begin{itemize}
828
\item \textbf{Physical length}: $L = \lambda/2 = $ \py{f"{wavelength*100/2:.2f}"} cm
829
\item \textbf{Radiation resistance}: \SI{73}{\Omega} (requires matching to \SI{50}{\Omega} feedline)
830
\item \textbf{Realized gain}: \py{f"{gain_half_wave_dB:.2f}"} dBi (omnidirectional coverage)
831
\item \textbf{Beamwidth}: \py{f"{HPBW_dipole:.1f}"}\si{\degree} (moderate directivity)
832
\item \textbf{Polarization}: Linear (vertical or horizontal depending on orientation)
833
\end{itemize}
834
The half-wave dipole provides excellent omnidirectional coverage in the azimuth plane, making it ideal for broadcast and mobile communications.
835
\end{example}
836
837
\begin{remark}[Directivity vs Gain]
838
The directivity of \py{f"{directivity_half_wave_dB:.2f}"} dBi represents the theoretical maximum based on pattern shape. The actual gain of \py{f"{gain_half_wave_dB:.2f}"} dBi accounts for \py{f"{efficiency_dipole*100:.0f}"}\% radiation efficiency, with losses from conductor resistance, dielectric loss, and impedance mismatch. For high-quality dipoles with thick conductors, efficiencies above 95\% are achievable.
839
\end{remark}
840
841
\subsection{Array Design Trade-offs}
842
843
\begin{example}[8-Element Array Performance]
844
The analyzed uniform linear array with $N = 8$ elements and $d = \lambda/2$ spacing achieves:
845
\begin{itemize}
846
\item \textbf{Array gain}: \py{f"{gain_array_dB:.1f}"} dBi (approximately \py{f"{gain_array_dB - gain_half_wave_dB:.1f}"} dB improvement over single dipole)
847
\item \textbf{Narrow beamwidth}: \py{f"{HPBW_array:.1f}"}\si{\degree} (highly directional)
848
\item \textbf{Sidelobe level}: \py{f"{SLL_uniform:.1f}"} dB (uniform excitation)
849
\item \textbf{Beam steering}: Full \SI{180}{\degree} coverage via phase control
850
\end{itemize}
851
The gain improvement follows $G_{array} \approx N \cdot G_{element} \cdot \eta_{mutual}$ where mutual coupling efficiency $\eta_{mutual} \approx 0.9$ for half-wavelength spacing.
852
\end{example}
853
854
\begin{remark}[Grating Lobe Suppression]
855
Element spacing $d < \lambda$ is critical to avoid grating lobes. At $d = \lambda/2$, the first grating lobe would appear at:
856
\begin{equation}
857
\sin\theta_{grating} = \sin\theta_0 \pm \frac{\lambda}{d} = \sin 90° \pm 2
858
\end{equation}
859
which has no real solution, confirming grating lobe suppression. For $d = \lambda$, grating lobes appear in visible space, as shown in the analysis.
860
\end{remark}
861
862
\subsection{Aperture Antenna Design}
863
864
\begin{example}[Horn Antenna Application]
865
The rectangular horn with $a = 3\lambda$, $b = 2.5\lambda$ dimensions achieves:
866
\begin{itemize}
867
\item \textbf{High gain}: \py{f"{gain_horn_dB:.1f}"} dBi (suitable for point-to-point links)
868
\item \textbf{Narrow beamwidths}: E-plane \py{f"{HPBW_horn_E:.1f}"}\si{\degree}, H-plane \py{f"{HPBW_horn_H:.1f}"}\si{\degree}
869
\item \textbf{Moderate aperture efficiency}: 65\% (typical for pyramidal horns)
870
\item \textbf{Low sidelobes}: Smooth aperture distribution
871
\item \textbf{Broadband operation}: Typical 20-40\% fractional bandwidth
872
\end{itemize}
873
Horn antennas excel in applications requiring moderate gain (10-25 dBi), clean patterns, and simple mechanical construction, such as feed elements for reflector antennas or laboratory reference standards.
874
\end{example}
875
876
\subsection{Impedance Matching Strategies}
877
878
\begin{remark}[VSWR and System Performance]
879
The analysis shows bandwidth of \py{f"{fractional_BW:.1f}"}\% for VSWR $< 2$. This corresponds to:
880
\begin{itemize}
881
\item \textbf{Reflected power}: $P_{refl}/P_{inc} = |\Gamma|^2 = (VSWR-1)^2/(VSWR+1)^2 = 11\%$
882
\item \textbf{Transmitted power}: 89\% (acceptable for most applications)
883
\item \textbf{Return loss}: 9.5 dB minimum
884
\end{itemize}
885
For applications requiring broader bandwidth, techniques include:
886
\begin{enumerate}
887
\item \textbf{Quarter-wave transformer}: Single-stage matching (10-20\% BW)
888
\item \textbf{Multi-section transformer}: Chebyshev or binomial (30-50\% BW)
889
\item \textbf{Stub matching}: Series or shunt reactive compensation
890
\item \textbf{Broadband antenna geometry}: Biconical, log-periodic, Vivaldi
891
\end{enumerate}
892
\end{remark}
893
894
\section{Conclusions}
895
896
This comprehensive antenna design analysis demonstrates the fundamental principles and computational methods for characterizing radiation performance:
897
898
\begin{enumerate}
899
\item The half-wave dipole achieves \py{f"{gain_half_wave_dB:.2f}"} dBi gain with \py{f"{HPBW_dipole:.1f}"}\si{\degree} beamwidth and \SI{73}{\Omega} radiation resistance, providing omnidirectional coverage ideal for broadcast applications
900
901
\item The 8-element linear array with $\lambda/2$ spacing delivers \py{f"{gain_array_dB:.1f}"} dBi gain and \py{f"{HPBW_array:.1f}"}\si{\degree} beamwidth, demonstrating \py{f"{gain_array_dB - gain_half_wave_dB:.1f}"} dB improvement through coherent array processing and enabling electronic beam steering across \SI{180}{\degree} coverage
902
903
\item Amplitude tapering trades gain for sidelobe suppression: uniform excitation provides maximum gain with \py{f"{SLL_uniform:.1f}"} dB sidelobes, while binomial distribution eliminates sidelobes at the cost of \SI{1.5}{dB} gain reduction and 40\% beamwidth increase
904
905
\item The rectangular horn antenna achieves \py{f"{gain_horn_dB:.1f}"} dBi gain with 65\% aperture efficiency and beamwidths of \py{f"{HPBW_horn_E:.1f}"}\si{\degree} $\times$ \py{f"{HPBW_horn_H:.1f}"}\si{\degree}, suitable for high-directivity applications such as point-to-point microwave links and satellite ground terminals
906
907
\item Impedance analysis reveals \py{f"{fractional_BW:.1f}"}\% fractional bandwidth for VSWR $< 2$, with minimum VSWR of \py{f"{VSWR_min:.2f}"} at \py{f"{freq_center/1e9:.2f}"} GHz, indicating good impedance match to \SI{50}{\Omega} transmission line with 89\% power transfer efficiency
908
909
\item The analytical framework enables optimization of antenna parameters (element spacing, array size, aperture dimensions) to meet specific performance requirements for gain, beamwidth, sidelobe levels, and bandwidth in practical wireless communication and radar systems
910
\end{enumerate}
911
912
\section*{Further Reading}
913
914
\begin{thebibliography}{99}
915
916
\bibitem{balanis2016}
917
Balanis, C. A. \textit{Antenna Theory: Analysis and Design}, 4th ed. John Wiley \& Sons, 2016.
918
919
\bibitem{stutzman2012}
920
Stutzman, W. L. and Thiele, G. A. \textit{Antenna Theory and Design}, 3rd ed. John Wiley \& Sons, 2012.
921
922
\bibitem{kraus2002}
923
Kraus, J. D. and Marhefka, R. J. \textit{Antennas for All Applications}, 3rd ed. McGraw-Hill, 2002.
924
925
\bibitem{volakis2007}
926
Volakis, J. L. \textit{Antenna Engineering Handbook}, 4th ed. McGraw-Hill, 2007.
927
928
\bibitem{elliott2003}
929
Elliott, R. S. \textit{Antenna Theory and Design}, revised ed. IEEE Press/Wiley, 2003.
930
931
\bibitem{milligan2005}
932
Milligan, T. A. \textit{Modern Antenna Design}, 2nd ed. John Wiley \& Sons, 2005.
933
934
\bibitem{pozar2012}
935
Pozar, D. M. \textit{Microwave Engineering}, 4th ed. John Wiley \& Sons, 2012.
936
937
\bibitem{collin1985}
938
Collin, R. E. \textit{Antennas and Radiowave Propagation}. McGraw-Hill, 1985.
939
940
\bibitem{mailloux2005}
941
Mailloux, R. J. \textit{Phased Array Antenna Handbook}, 2nd ed. Artech House, 2005.
942
943
\bibitem{hansen2009}
944
Hansen, R. C. \textit{Phased Array Antennas}, 2nd ed. John Wiley \& Sons, 2009.
945
946
\bibitem{dolph1946}
947
Dolph, C. L. ``A Current Distribution for Broadside Arrays Which Optimizes the Relationship between Beam Width and Side-Lobe Level,'' \textit{Proceedings of the IRE}, vol. 34, no. 6, pp. 335--348, 1946.
948
949
\bibitem{taylor1955}
950
Taylor, T. T. ``Design of Line-Source Antennas for Narrow Beamwidth and Low Side Lobes,'' \textit{IRE Transactions on Antennas and Propagation}, vol. 3, no. 1, pp. 16--28, 1955.
951
952
\bibitem{king1956}
953
King, R. W. P. \textit{The Theory of Linear Antennas}. Harvard University Press, 1956.
954
955
\bibitem{schelkunoff1943}
956
Schelkunoff, S. A. ``A Mathematical Theory of Linear Arrays,'' \textit{Bell System Technical Journal}, vol. 22, no. 1, pp. 80--107, 1943.
957
958
\bibitem{woodward1947}
959
Woodward, P. M. and Lawson, J. D. ``The Theoretical Precision with which an Arbitrary Radiation-Pattern may be Obtained from a Source of Finite Size,'' \textit{Journal of the IEE}, vol. 95, no. 37, pp. 363--370, 1948.
960
961
\bibitem{friis1946}
962
Friis, H. T. ``A Note on a Simple Transmission Formula,'' \textit{Proceedings of the IRE}, vol. 34, no. 5, pp. 254--256, 1946.
963
964
\bibitem{silver1949}
965
Silver, S. (ed.) \textit{Microwave Antenna Theory and Design}, MIT Radiation Laboratory Series, vol. 12. McGraw-Hill, 1949.
966
967
\bibitem{jasik1961}
968
Jasik, H. (ed.) \textit{Antenna Engineering Handbook}, 1st ed. McGraw-Hill, 1961.
969
970
\bibitem{ieee1993}
971
IEEE Standard 145-1993. \textit{IEEE Standard Definitions of Terms for Antennas}. IEEE, 1993.
972
973
\bibitem{harrington1961}
974
Harrington, R. F. \textit{Time-Harmonic Electromagnetic Fields}. McGraw-Hill, 1961.
975
976
\end{thebibliography}
977
978
\end{document}
979
980