Linear Array Polar Gain Pattern

using GLMakie
using ArrayRadiation

element_separation_λ = 1/2;

# Place elements symmetrically around zero
element_count = 32;

r = ArrayRadiation.linear_array(element_count, element_separation_λ)

angleRad = LinRange(π / 2, -π / 2, 501);
angleDeg = rad2deg.(angleRad);

element_gain_approximation = AntennaElement.cos_taper.(angleRad)

# Uniform weights
W = ones(element_count)


# Calculate K-space vectors
k_xyz = 2π*Kspace.elevation2k_hat.(angleRad)

# Map K-space gain calculation function.
GΩ(k) = Kspace.gain_1D(k, 1, r, W)
GΩ_lin = broadcast(GΩ, k_xyz).*element_gain_approximation

GΩ_dB = DspUtility.pow2db.(abs.(GΩ_lin))

# Clamp dB values for readability
y_lower_limit = -30
GΩ_dB = clamp.(GΩ_dB, y_lower_limit, Inf)

f = Figure()
ax = PolarAxis(f[1, 1],
    title = "Linear Array, Uniform Weights, $element_count Elements",
    thetalimits = (-pi/2, pi/2),
    radius_at_origin = y_lower_limit,
    theta_0 = -pi/2,
    direction = -1,
)
lines!(ax, angleRad, GΩ_dB, color = :blue, linewidth = 2)
f  # Display figure
Example block output