Engee 文档
Notebook

天线模式(第 3 部分)

该示例演示了天线元件加权算法的应用,以改善天线模式 (DN) 特性。

连接库和辅助功能

In [ ]:
using Pkg; Pkg.add("Statistics");Pkg.add("SpecialFunctions")
using SpecialFunctions,Statistics

让我们使用函数include 将文件 "helper_weight_failed_array.jl"与其他函数连接起来:

In [ ]:
include("$(@__DIR__)/helper_weight_failed_array.jl")
   Resolving package versions...
  No Changes to `~/.project/Project.toml`
  No Changes to `~/.project/Manifest.toml`
Out[0]:
viewURA (generic function with 1 method)

初始天线参数

在建立 DND 模型之前,我们设置了天线元件的基本参数:

In [ ]:
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,:); # диапазон по углу места

我们选择一个各向同性元件作为天线阵列元件:

In [ ]:
element = EngeePhased.IsotropicAntennaElement(
    FrequencyRange = freq_rng, # частотный диапазон
    BackBaffled=false # обратное рассеяние
)
Out[0]:
IsotropicAntennaElement: FrequencyRange=[5.0e7 1.0e9] BackBaffled=false

我们选择矩形天线阵的几何形状URA 。设置 2 个相同的天线阵列:sURA--不带加权的参考天线阵列,sURAweight--带加权的参考天线阵列。

In [ ]:
size_array = [16 16] # размер антенной решетки

sURA = EngeePhased.URA(
    Size = size_array,
    ElementSpacing = [lambda/2 lambda/2] # задание расстояние между элементами
)
# дублирование антенной решетки
sURAweightElements = deepcopy(sURA) 
Out[0]:
URA:
    Element=IsotropicAntennaElement: FrequencyRange=[0.0 1.0e20] BackBaffled=false
    Size=[16 16]
    ElementSpacing=[0.5 0.5]
    Lattice=Rectangular
    ArrayNormal=x
    Taper=1

此外,我们使用函数calcElemetPosition 计算天线元件的位置

In [ ]:
pos_array = calcElemetPosition(sURA)
Out[0]:
3×256 Matrix{Float64}:
  0.0    0.0    0.0    0.0    0.0   …   0.0    0.0    0.0    0.0    0.0
 -3.75  -3.75  -3.75  -3.75  -3.75      3.75   3.75   3.75   3.75   3.75
  3.75   3.25   2.75   2.25   1.75     -1.75  -2.25  -2.75  -3.25  -3.75

使用函数可视化空间中的 ARviewURA

In [ ]:
viewURA(pos_array) 
Out[0]:

1.矩形天线阵列的加权

作为加权函数,我们选择泰勒窗函数 "泰勒频谱窗"。

In [ ]:
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
Out[0]:
16×16 Matrix{Float64}:
 0.524908  0.605639  0.74989  0.928736  …  0.74989  0.605639  0.524908
 0.524908  0.605639  0.74989  0.928736     0.74989  0.605639  0.524908
 0.524908  0.605639  0.74989  0.928736     0.74989  0.605639  0.524908
 0.524908  0.605639  0.74989  0.928736     0.74989  0.605639  0.524908
 0.524908  0.605639  0.74989  0.928736     0.74989  0.605639  0.524908
 0.524908  0.605639  0.74989  0.928736  …  0.74989  0.605639  0.524908
 0.524908  0.605639  0.74989  0.928736     0.74989  0.605639  0.524908
 0.524908  0.605639  0.74989  0.928736     0.74989  0.605639  0.524908
 0.524908  0.605639  0.74989  0.928736     0.74989  0.605639  0.524908
 0.524908  0.605639  0.74989  0.928736     0.74989  0.605639  0.524908
 0.524908  0.605639  0.74989  0.928736  …  0.74989  0.605639  0.524908
 0.524908  0.605639  0.74989  0.928736     0.74989  0.605639  0.524908
 0.524908  0.605639  0.74989  0.928736     0.74989  0.605639  0.524908
 0.524908  0.605639  0.74989  0.928736     0.74989  0.605639  0.524908
 0.524908  0.605639  0.74989  0.928736     0.74989  0.605639  0.524908
 0.524908  0.605639  0.74989  0.928736  …  0.74989  0.605639  0.524908

让我们构建加权函数的曲面:

In [ ]:
surface(weight,title="Оконная функция Гаусса")
Out[0]:

这个窗口加强了中心要素的影响,削弱了横向要素的影响,从而改善了 AR 的方向特性。接下来,我们绘制加权前后方位角平面上的方向图横截面:

In [ ]:
plot_pattern2_arrray(sURA,sURAweightElements,c,fc,["Без взвешивания" "После взвешивания"])
Out[0]:

从图中可以看出,加权后的方向图与未加权的方向图相比,侧叶明显减少。

2. 元素失效模拟

在评估雷达系统的可靠性时,有必要分析 AR 几何结构对随机天线元件失效的抵抗能力。在加权的帮助下,可以模拟天线阵列随机元素失效的情况。

使用函数rand 设置天线阵列中任何元件失效的概率为 10

In [ ]:
release!(sURA) # обновление системного объекта АР
sURAfailedElements = deepcopy(sURA)  # дублирование антенной решетки

# Имитация выхода из строя элементов с вероятностью 10%
sURAfailedElements.Taper  = Float64.(rand(size_array...) .> 0.1)
Out[0]:
16×16 Matrix{Float64}:
 1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  …  1.0  1.0  1.0  1.0  1.0  1.0  1.0
 1.0  0.0  0.0  1.0  1.0  1.0  1.0  1.0     1.0  1.0  1.0  1.0  1.0  1.0  1.0
 1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0     1.0  1.0  1.0  1.0  1.0  1.0  1.0
 1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0     0.0  1.0  1.0  1.0  1.0  1.0  1.0
 0.0  1.0  1.0  1.0  1.0  0.0  1.0  1.0     1.0  1.0  1.0  1.0  1.0  1.0  1.0
 1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  …  1.0  1.0  1.0  1.0  1.0  1.0  1.0
 1.0  1.0  0.0  1.0  0.0  1.0  1.0  1.0     1.0  1.0  1.0  1.0  1.0  1.0  1.0
 1.0  1.0  1.0  0.0  1.0  0.0  1.0  0.0     1.0  1.0  1.0  1.0  1.0  1.0  0.0
 1.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0     1.0  1.0  1.0  1.0  1.0  1.0  1.0
 0.0  1.0  1.0  0.0  1.0  1.0  1.0  1.0     1.0  1.0  1.0  1.0  1.0  1.0  1.0
 1.0  1.0  1.0  1.0  1.0  0.0  1.0  1.0  …  1.0  1.0  1.0  1.0  1.0  1.0  0.0
 1.0  0.0  1.0  1.0  1.0  1.0  1.0  1.0     0.0  1.0  1.0  1.0  1.0  1.0  1.0
 0.0  0.0  1.0  1.0  1.0  1.0  1.0  1.0     0.0  0.0  1.0  1.0  1.0  1.0  1.0
 1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0     1.0  1.0  1.0  0.0  1.0  1.0  1.0
 1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0     0.0  1.0  1.0  1.0  0.0  0.0  1.0
 1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  …  1.0  1.0  1.0  1.0  1.0  1.0  0.0
In [ ]:
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)) %) ")
Общее количество элементов: 256
Количество сломанных элементов: 31 (12.0 %) 

为了直观地显示破损的元素,我们将使用前面提到的函数viewURA ,并将参数的标志true is_failed

In [ ]:
viewURA(
    pos_array; # координаты элементов
    is_failed=true, # флаг учета сломанных элементов
    weight = sURAfailedElements.Taper # коэффициенты работы элементов
)
Out[0]:

从图中可以看出,断裂元素在天线阵列的几何图形上随机分布。

现在,让我们来分析断裂元素的影响:

In [ ]:
plot_pattern2_arrray(sURA,sURAfailedElements,c,fc,["При полной работе" "После выхода из строя"])
Out[0]:

从图中可以看出,主叶几乎没有变化,而侧叶的水平略有上升。

结论

因此,在专门讨论构建天线元件 DN 和 AR 的最后一部分中,考虑了天线阵列元件的加权方法,该方法可改善天线的方向特性。此外,这种方法还允许我们模拟和评估在给定故障概率下单个元件故障的影响程度。