Antenna radiation patterns (Part 3)
The example demonstrates the application of an algorithm for weighing antenna elements in order to improve the characteristics of the radiation pattern.
Connecting libraries and auxiliary functions
using Pkg; Pkg.add("Statistics");Pkg.add("SpecialFunctions")
using SpecialFunctions,Statistics
We will connect using the function include the file "helper_weight_failed_array.jl" with additional functions:
include("$(@__DIR__)/helper_weight_failed_array.jl")
Initial antenna parameters
Before modeling the DN, we will set the basic parameters of the antenna elements.:
fc = 300e6 # частота излучения антенны
c = 3e8 # скорость распространения сигнала
lambda = c/fc # длина волны
freq_rng = [50e6 1000e6] # частотный диапазон антенны
azim_ang = reshape(Vector(-180:180),1,:) # диапазон азимутальных углов
elev_ang = reshape(Vector(-90:90),1,:); # диапазон по углу места
We will choose an isotropic element as an element of the antenna array.:
element = EngeePhased.IsotropicAntennaElement(
FrequencyRange = freq_rng, # частотный диапазон
BackBaffled=false # обратное рассеяние
)
Let's choose a rectangular antenna array geometry. URA. Let's set 2 identical antenna arrays: sURA - will be the reference AP without weighing, sURAweight - with weighing.
size_array = [16 16] # размер антенной решетки
sURA = EngeePhased.URA(
Size = size_array,
ElementSpacing = [lambda/2 lambda/2] # задание расстояние между элементами
)
# дублирование антенной решетки
sURAweightElements = deepcopy(sURA)
Additionally, using the function calcElemetPosition calculate the position of the antenna elements
pos_array = calcElemetPosition(sURA)
We visualize AR in space using the function viewURA
viewURA(pos_array)
1. Weighing of a rectangular antenna array
Let's choose the Taylor window function "TaylorSpectrumWindow" as the weighted function.
nbar = 3 # количество боковых лепестков постоянного уровня
sll = -25 # максимальный уровень боковых лепестков (дБ)
weight = zeros(size_array...) # выделение памяти под весовые коэффициенты
# Расчет весовых коэффициентов и взвешивание АР sURAweightElements
[weight[i,:].=TaylorSpectrumWindow(size_array[1],nbar, -sll) for i in 1:(size_array[2])]
sURAweightElements.Taper = weight
Let's construct the surface of a weighted function:
surface(weight,title="Оконная функция Гаусса")
This window enhances the influence of the central elements and weakens the lateral ones, which makes it possible to improve the directional properties of the AR. Next, we will plot the cross section of the directional pattern in the azimuthal plane before and after weighing:
plot_pattern2_arrray(sURA,sURAweightElements,c,fc,["Без взвешивания" "После взвешивания"])
On the graph, you can see that the bottom after weighing has a significantly lower level of side lobes compared to the unweighted one.
2. Simulation of the failure of the elements
When assessing the reliability of a radar system, it is advisable to analyze how resistant the AR geometry is to breakage of random antenna elements. With the help of weighing, it is possible to simulate the situation of failure of random elements of the antenna array.
Using the function rand let's set the probability of 10% failure of any element of the antenna array.
release!(sURA) # обновление системного объекта АР
sURAfailedElements = deepcopy(sURA) # дублирование антенной решетки
# Имитация выхода из строя элементов с вероятностью 10%
sURAfailedElements.Taper = Float64.(rand(size_array...) .> 0.1)
num_element = prod(size_array) # всего элементов
# количество сломанных элементов
num_failed_element = length(sURAfailedElements.Taper[sURAfailedElements.Taper.==0])
# вывод статистики сломанных элементов
println("Общее количество элементов: $(num_element)")
println("Количество сломанных элементов: $(num_failed_element) ($(round(num_failed_element/num_element*100)) %) ")
To visualize the broken elements, use the previously mentioned function. viewURA with a flag true the parameter is_failed
viewURA(
pos_array; # координаты элементов
is_failed=true, # флаг учета сломанных элементов
weight = sURAfailedElements.Taper # коэффициенты работы элементов
)
The figure shows that the broken elements are randomly distributed according to the geometry of the antenna array.
Now, let's analyze the impact of the breakdown of these elements.:
plot_pattern2_arrray(sURA,sURAfailedElements,c,fc,["При полной работе" "После выхода из строя"])
The graph shows that the main lobe remained virtually unchanged, while the level of the side lobes increased slightly.
Conclusion
Thus, in the final part devoted to the construction of the bottom antenna elements and AR, the method of weighing the elements of the antenna array was considered, which makes it possible to improve the directional characteristics of the antenna. Also, this method made it possible to simulate and evaluate the degree of impact of the failure of individual elements with a given probability of failure.