Engee 文档
Notebook

基于相移的光束整形

此示例演示如何将经典相移波束成形应用于天线阵列接收的窄带信号。 系统模型包括接收机自身的噪声。

辅助功能

In [ ]:
# запуск симуляцик системной модели
function run_model( name_model, path_to_folder ) # определение функции для прогона модели
    Path = path_to_folder * "/" * name_model * ".engee"
    if name_model in [m.name for m in engee.get_all_models()] # Проверка условия загрузки модели в ядро
        model = engee.open( name_model ) # Открыть модель
        model_output = engee.run( model, verbose=true ); # Запустить модель
        engee.close( name_model, force=true ); # Закрыть модель
    else
        model = engee.load( Path, force=true ) # Загрузить модель
        model_output = engee.run( model, verbose=true ); # Запустить модель
        engee.close( name_model, force=true ); # Закрыть модель
    end
    return model_output
end;

# считывание выходных данных
function calc_array_out(out, name)
    array = zeros(eltype(out[name].value[1]),size(out[name].value[1],1),size(out[name].value[2],2),length(out[name].value))
    [array[:,:,i] = collect(out[name].value[i]) for i in eachindex(out[name].value)]
    return array
end

# построение выходных графиков
function plot_result(out, title, number, t_step = 0.3)
    t = Vector(0:t_step/size(out, 1):t_step*(1-1/size(out, 1)))*10^3 # сетка времени в мс
    plot(t, out[:, 1, number], label = title, title = title,size=(500,250))
    plot!(t, out_ref_pulse[:, 1, number], label = "Эталонный сигнал", 
        xlabel = "Время (мс)", уlabel = "Амплитуда (В)"
    )
end;

图中示出了具有参考脉冲的单个元件(没有波束成形)的输出和具有参考脉冲的波束成形器的输出。 当接收信号不是由波束产生时,由于噪声而不能检测到脉冲。 波束形成器输出的图像显示波束产生的信号噪声大得多。 输出SNR大约是单个天线接收到的信号的10倍,因为10单元阵列的增益为10。

1. 模型结构的描述

该模型模拟了10元均匀线性天线阵列(AR)上具有偏移延迟的矩形脉冲的接收。 脉冲源位于:方位角为45度和仰角为0度的方向。 0.5瓦的噪声被添加到网格的每个单元处的信号中。 然后应用波束成形器,其考虑到AP的元件之间的相移。 该示例将波束形成器的输出与天线的一个元件接收的信号进行比较。

该系统的框图如下所示。

image_3.png

该系统的实现包括对接收信号建模、接收信号和处理信号。 以下块对应于模型的每个阶段:

信号建模:

*矩形脉冲发生器(矩形)-创建矩形脉冲。

*延迟(偏移波形)-延迟单元将每个脉冲延迟150个计数。

信号接收:

*使用相控阵接收窄带辐射(窄带Rx阵列)-模拟在AR上接收的信号。 该块的第一个输入是包含接收脉冲的列向量。 假设脉冲是窄带的,载波频率等于单元对话框中指定的工作频率。 第二个输入"Ang"设置脉冲下降的方向。 天线阵列配置在设备对话框面板的"传感器阵列"选项卡中创建。 输出数据的每列对应于在天线阵列的每个元件上接收的信号。

*接收器前置放大器(Receiver Preamp)-实现接收到的AR信号的预放大。 单元考虑到接收器自身的热噪声。

信号的到达方向(信号方向)-将脉冲的到达方向设置为块窄带Rx阵列*。

信号处理:
*波束形成方向(波束形成角度)-常量块设置信号到达波束形成器的方向。

*相移波束成形器(Phase Shift Beamformer)-考虑到天线阵列的每个元件的相移,执行窄带波束成形。

可以在"相移波束形成器"块的传感器阵列选项卡中设置天线阵列特性。 下图显示了10元线性天线阵列的参数化初始化示例。

Снимок экрана 2025-03-21 152100.png

2. 模型参数的初始化

模型参数在文件中设置 ParamBeamformar.jl 使用辅助功能 calcParamBeamformer. 此功能在加载模型时执行一次。 它将结构导出到工作区,其中的字段由模型的对话框面板引用。 要更改任何参数,请从命令行更改结构中的值,或编辑辅助函数并重新启动它以更新参数结构。

image.png
In [ ]:
# подключение файла с параметрами модели
include("$(@__DIR__)/ParamBeamformer.jl");

3. 启动模型

使用函数 run_model 让我们运行系统模型的模拟 Beamformer_with_noise. 我们将生成的模拟结果写入一个变量中 out.

In [ ]:
out = run_model("Beamformer_with_noise", @__DIR__) # запуск модели
Building...
Progress 0%
Progress 10%
Progress 100%
Progress 100%
Out[0]:
SimulationResult(
    "Эталонный_импульс" => WorkspaceArray{Vector{Float64}}("Beamformer_with_noise/Эталонный_импульс")
,
    "После_формирования" => WorkspaceArray{Matrix{Float64}}("Beamformer_with_noise/После_формирования")
,
    "Без_формирования" => WorkspaceArray{Vector{Float64}}("Beamformer_with_noise/Без_формирования")

)

4. 读取输出数据

使用函数 calc_array_out 从变量计数数据 out 对于每个承诺的产出。

In [ ]:
out_ref_pulse = calc_array_out(out, "Эталонный_импульс")
out_beamformer = calc_array_out(out, "После_формирования")
out_not_beamformer = calc_array_out(out, "Без_формирования");

5. 模型结果的可视化

结果的可视化可以通过两种方式实现:
*在"图形"选项卡中(通过选择"数组构造"图形类型)
*在脚本中使用作为模拟结果获得的数据

使用第一种方法,我们可视化具有和不具有射线整形的输出的模型结果。:

![newplot (1).png](attachment:newplot (1).png)
![新图(2)。png](附件:newplot(2)。png)

图中示出了具有参考脉冲的单个元件(没有波束形成)的输出和具有参考脉冲的波束形成器的输出。 当接收信号不是由波束产生时,由于噪声而不能检测到脉冲。

如果使用波束形成算法,情况会发生变化:下图显示波束生成的信号明显更嘈杂。 这一结果的实现是由于与使用算法之前的信号相比,输出信噪比与天线元件的数量成比例地增加(大约10倍)。

同样,您可以使用第二个可视化仿真结果method.To 在脚本中构建它,使用辅助功能 plot_result:

In [ ]:
num_puls = length(collect(out["Эталонный_импульс"]).time) # извлечение номера последнего импульса
plot_result(out_not_beamformer, "Без формирования", num_puls, t_step) |> display
plot_result(out_beamformer, "После формирования", num_puls, t_step)
Out[0]:

比较生成的图形,您可以看到生成的图像是相同的。

结论

在示例中,考虑了考虑了天线元件之间的相移的波束形成算法("Phase Shift Beamformer")。 在接收路径中使用该算法使得能够在接收机自身噪声的背景下成功地投射有用信号。

示例中使用的块