Antenna patterns (part 3)
The example demonstrates the application of an algorithm for weighting antenna elements to improve antenna pattern (DN) characteristics.
Connecting libraries and auxiliary functions
using Pkg; Pkg.add("Statistics");Pkg.add("SpecialFunctions")
using SpecialFunctions,Statistics
Let's connect the file "helper_weight_failed_array.jl" with additional functions using the function include
:
include("$(@__DIR__)/helper_weight_failed_array.jl")
Initial antenna parameters
Before modelling the DND we 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 choose an isotropic element as the antenna array element:
element = EngeePhased.IsotropicAntennaElement(
FrequencyRange = freq_rng, # частотный диапазон
BackBaffled=false # обратное рассеяние
)
Let's choose rectangular antenna array geometry URA
. Let's set 2 identical antenna arrays: sURA - will be the reference AR without weighting, sURAweight - with weighting.
size_array = [16 16] # размер антенной решетки
sURA = EngeePhased.URA(
Size = size_array,
ElementSpacing = [lambda/2 lambda/2] # задание расстояние между элементами
)
# дублирование антенной решетки
sURAweightElements = deepcopy(sURA)
Additionally, using the function calcElemetPosition
we calculate the position of antenna elements
pos_array = calcElemetPosition(sURA)
Visualise the AR in space using the function viewURA
viewURA(pos_array)
1. Weighting of the rectangular antenna array
As a weighted function we choose the Taylor window function "TaylorSpectrumWindow"
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 build the surface of the weighted function:
surface(weight,title="Оконная функция Гаусса")
This window strengthens the influence of the central elements and weakens the lateral ones, which improves the directional properties of the AR. Next, we plot the cross section of the directional diagram in the azimuthal plane before and after weighting:
plot_pattern2_arrray(sURA,sURAweightElements,c,fc,["Без взвешивания" "После взвешивания"])
It can be seen from the graph that the directional pattern after weighting has a significantly lower level of side lobes compared to the unweighted pattern.
2. simulation of element failure
When assessing the reliability of a radar system, it is useful to analyse how resistant the AR geometry is to the failure of random antenna elements. With the help of weighting it is possible to simulate the situation of failure of random elements of the antenna array.
Using the function rand
set the probability of 10% of 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 visualise the broken elements, we will use the previously mentioned function viewURA
with the flag true
of the parameter is_failed
viewURA(
pos_array; # координаты элементов
is_failed=true, # флаг учета сломанных элементов
weight = sURAfailedElements.Taper # коэффициенты работы элементов
)
The figure shows that the broken elements are distributed randomly over the antenna array geometry.
Now, let us analyse the effect of the broken elements:
plot_pattern2_arrray(sURA,sURAfailedElements,c,fc,["При полной работе" "После выхода из строя"])
The graph shows that the main lobe remained almost unchanged, while the level of the side lobes increased slightly.
Conclusion
Thus, in the final part devoted to the construction of the DN of antenna elements and AR, the method of weighting the elements of the antenna array was considered, which allows to improve the directional characteristics of the antenna. Also, this method allowed us to model and evaluate the degree of influence of failure of individual elements with a given probability of failure.