Диаграммы направленности антенн (часть 3)
В примере демонстрируется применение алгоритма взвешивания антенных элементов с целью улучшения характеристик диаграммы направленности (ДН).
Подключение библиотек и вспомогательных функций
using Pkg; Pkg.add("Statistics");Pkg.add("SpecialFunctions")
using SpecialFunctions,Statistics
Подключим с помощью функции include
файл "helper_weight_failed_array.jl" с дополнительными функциями:
include("$(@__DIR__)/helper_weight_failed_array.jl")
Исходные параметры антенны
Перед моделированием ДН зададим основные параметры антенных элементов:
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,:); # диапазон по углу места
В качестве элемента антенной решетки выберем изотропный элемент:
element = EngeePhased.IsotropicAntennaElement(
FrequencyRange = freq_rng, # частотный диапазон
BackBaffled=false # обратное рассеяние
)
Геометрию антенной решетки выберем прямоугольную URA
. Зададим 2 индентичные антенные решетки: sURA - будет эталонной АР без взвешивания, sURAweight - со взвешиванием.
size_array = [16 16] # размер антенной решетки
sURA = EngeePhased.URA(
Size = size_array,
ElementSpacing = [lambda/2 lambda/2] # задание расстояние между элементами
)
# дублирование антенной решетки
sURAweightElements = deepcopy(sURA)
Дополнительно, с помощью функции calcElemetPosition
вычислим положение антенных элементов
pos_array = calcElemetPosition(sURA)
Визуализируем АР в пространстве при помощи функции viewURA
viewURA(pos_array)
1. Взвешивание прямоугольной антенной решетки
В качестве взвешиваемой функции выберем оконную функцию Тейлора "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
Построим поверхность взвешанной функции:
surface(weight,title="Оконная функция Гаусса")
Данное окно усиливает влияние центральных элементов и ослабляет боковые, что позволяет улучшить направелнные свойства АР. Далее, построим сечение диаграммы направелности в азимутальной плоскости до и после взвешивания:
plot_pattern2_arrray(sURA,sURAweightElements,c,fc,["Без взвешивания" "После взвешивания"])
На графике можно заметить, что ДН после взвешивания имеет существенно ниже уровень боковых лепестков по сравнению с невзвешанной.
2. Имитация выхода из строя элементов
При оценки надежности радиолокационной системы целесообразно проанализировать насколько устойчива геометрия АР к поломке случайных антенных элементов. С помощью взвешивания возможно смоделировать ситуацию выхода из строя случайных элементов антенной решетки.
С помощью функции rand
зададим вероятность 10% выхода из строя любого элемента антенной решетки
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)) %) ")
Для визуализации сломанных элементов, воспользуемся ранее упомянутой функцией viewURA
c флагом true
параметра is_failed
viewURA(
pos_array; # координаты элементов
is_failed=true, # флаг учета сломанных элементов
weight = sURAfailedElements.Taper # коэффициенты работы элементов
)
На рисунке видно, что сломанные элементы распределены случайным образом по геометрии антенной решетке.
Теперь, проанализируем влияние поломки данных элементов:
plot_pattern2_arrray(sURA,sURAfailedElements,c,fc,["При полной работе" "После выхода из строя"])
На графике видно, что главный лепесток остался практически без изменений, при этом уровень боковых лепестков несколько увеличился.
Заключение
Таким образом, в заключительной части, посвященной построению ДН антенных элементов и АР, был рассмотрен метод взвешивания элементов антенной решетки, позволяющий улучшить направленные характеристики антенны. Также, данный метод позволил смоделировать и оценить степень влияния выхода из строя отдельных элементов с заданной вероятностью поломки.