AnyMath 文档
Notebook

一种用于小物体的多通道宽带测向系统

该示例考虑了多通道雷达系统的建模,用于解决测向多个目标的问题。 目标小物体是无人驾驶飞行器(Uav)-"四轴飞行器"。

在执行脚本之前,建议使用命令清除工作区 engee.clear(). 如果这不是必需的,您可以删除或评论此命令。 您还可以选择图形可视化的类型:交互式或静态。 该控件是使用变量实现的 is_dinamic_plot.

In [ ]:
engee.clear() # 清除工作区
is_dinamic_plot = true # 选择图形类型:true(plotlyjs())-interactive,false(gr())-static
is_dinamic_plot ? plotlyjs() : gr()
Out[0]:
Plots.PlotlyJSBackend()

连接辅助文件和库

要实现有问题的系统,需要连接第三方库和辅助功能。:

In [ ]:
let
    installed_packages = collect(x.name for (_, x) in Pkg.dependencies() if x.is_direct_dep)
    list_packages = ["JLD2","Hungarian"]
    for pack in list_packages
        pack in installed_packages || Pkg.add(pack)
    end
end

using LinearAlgebra,Hungarian,DataFrames
import JLD2

include("utils/plot_sig_and_spec.jl") # 建立示波器和频谱图的功能
include("utils/viz_scene.jl") # 构建雷达运行场景的功能
include("utils/calc_plot_rcs.jl") # 反向散射图构造函数
include("utils/sort_ang_mse.jl") # 排序轴承估计值的功能
include("utils/plot_spec_azel.jl") # 构造空间谱的功能
include("utils/calc_table_ang_analysis.jl") # 用于精度分析的表计算功能
Out[0]:
calc_table_ang_analysis (generic function with 1 method)

1. 雷达运行场景系统模型的开发

让我们考虑具有多个目标的多通道宽带测向系统的场景。

假设雷达位于原点,沿x轴定向。 为了解决确定支座的问题,使用矩形相控阵天线(FAR)和数字处理算法(MUSIC,MVDR,BeamScan)。
四个"四轴飞行器"类型的小型无人机物体正靠着
x**轴向雷达站移动。 每个对象都有自己的轨迹。 到目标的射程为1000-1500米,速度为130-150米/秒。到目标的方位角方向在[-20,20]度内,角方向为[0,30]度。

该方案的大致外观如下图所示。

image.png

1.1雷达结构说明

让我们更详细地描述雷达系统模型的结构方案。:

*ZS发生器:具有线性频率调制(LFM)的脉冲信号用作探测信号;

*发射器:信号在发射器中放大,考虑到传输路径中的损耗;

*传输大灯:使用矩形大灯形成方向图案(DN;

*传播介质:考虑到传播衰减、频率色散和天气影响;

*目标:描述DOR,考虑到信号的宽带频谱和目标的轨迹;

*发射大灯:底部采用接收宽带矩形大灯形成,;

*接收器:通过添加自身的热噪声(LNA模型)来实现接收信号的放大。

*轴承算法:是确定目标在方位角和角平面中的方向的数字算法(MUSIC,BeamScan,MVDR)之一;

该模型的运行方案如下图所示。

image.png

1.2雷达参数

关键雷达参数是载波频率值。 在选择频率范围时,有必要考虑到雷达的任务,因为载波频率的值越高,传播过程中的衰减和衰减越高,同时增加对小物体的灵敏度。

在解决小物体的测向问题时,建议使用与目标大小(20-30cm)相称的ranges++:L-S-ranges。 让我们选择雷达系统的L波段(1-2GHz),并取载波频率值为1GHz(λ≈0.3m)。

In [ ]:
# 基本雷达参数
fc = 1e9 # [Hz],载波频率
c = physconst("LightSpeed") # [m/s],信号的传播速度
lambda = c / fc; # 波长,m

println("载波频率:∞(FC*1E-9)GHz")
println("光速:<c m/s")
println("波长:<lambda m")
载波频率:1.0GHz
光速:calc_plot_rcs m/s
波长:0.299792458m

1.3探测信号的参数

作为探测脉冲,我们将选择具有脉冲内调制的信号-[脉冲LFM信号](https://engee.com/helpcenter/stable/cn/phased-waveforms/linear-fm-waveform.html ),带有条纹 bw -100兆赫,持续时间 T -10微秒和一个钻孔 Q - 2. 这样的信号是宽带的,因为信号频带与载波频率的比率大于5%(在示例中为10%)。 信号生成是使用系统对象实现的 EngeePhased.LinearFMWaveform . 使用参数 n_pulses , n_groups_imps 您可以相应地设置每包的累积脉冲数和包数。

重要的是,宽带系统需要设置频率子带的数量。 NBand,其中信号将被认为是窄带。 总带宽由采样率决定 子范围的宽度计算为(1)

然后利用公式(2)计算子带的中心频率

In [ ]:
# ---信号参数 ---
bw = 100e6; # LFM频段,Hz
T = 10e-6; # 脉冲持续时间,s
Q = 2 # 脉冲连续性
prf = round(1 / (Q * T);sigdigits = 15); # 脉冲重复率(必要时舍入)
type_dir = "Up" # 频率变化方向["向上","向下"]
type_sweep = "Positive"  # 频率变化类型["正","对称"]
n_pulses = 2 # 累积脉冲数
n_groups_imps = 2 # 脉冲突发数

fs = 2*bw; # 采样率,Hz
NBand = 64; # 频率子带数

T_coh = n_pulses/prf # coregent积累的时间
ΔR = c/(2*bw) # 范围分辨率,m
ΔV = lambda/(2*T_coh) # 速度分辨率,m/s
Rmin = c*T/2 # 最小一位数范围,m
Rmax = c/(2*prf) # 最大一位数范围,m
Vmax = lambda*prf/4 # 最大个位数速度,m/s

# lfm信号发生器的系统对象的形成
waveform = EngeePhased.LinearFMWaveform( 
    SampleRate = fs, # 采样率,Hz
    PulseWidth = T, # 脉冲持续时间
    PRF = prf, # 脉冲重复率
    SweepBandwidth = bw,  # LCHM乐队
    SweepDirection = "Up", # 频率变化方向
    SweepInterval = "Positive", # 锯型,非对称或对称
    OutputFormat = "Pulses", # 输出格式类型[]
    NumPulses = n_pulses # 脉冲数
);

我们将给定脉冲数的信号波形和频谱图可视化为1包。

In [ ]:
# LFM信号的计算
sig_lfm = waveform();

# 示波器和频谱图的构建
plot_sig_and_spec(sig_lfm;fs=fs,name_sig = "LCHM");

下文给出了成形车辆的战术和技术特征。:

In [ ]:
println("采样率:∞(round(fs*1e-6;sigdigits=5))MHz")
println("脉冲持续时间:△(round(T*1e6;sigdigits=5))微秒")
println("随访期:$(round(1e6/prf;sigdigits=5))mks")
println("重复率:△(round(prf*1e-3;sigdigits=5))kHz")
println("钻孔:$((Q;sigdigits=5))")
println("相干累积时间:△(round(T_coh*1e3;sigdigits=5))ms")
println("每包脉冲数:$n_pulses")
println("包数:$n_groups_imps")
println("范围分辨率:△(round(ΔR;sigdigits=3))m") 
println("速度分辨率:△(round(ΔV;sigdigits=3))m/s") 
println("最大一位数范围:$(round(Rmax;sigdigits=3))m") 
println("最小一位数范围:$(round(Rmin;sigdigits=3))m") 
println("最大个位数速度:∞(round(Vmax;sigdigits=3))m/s") 
采样率:200.0MHz
脉冲持续时间:10.0微秒
后续周期:20.0微秒
重复频率:50.0kHz
钻孔:2.0
相干累积时间:0.04ms
每包脉冲数:2
包装数量:2
量程分辨率:1.5m
速度分辨率:3750.0m/s
最大个位数范围:3000.0m
最小个位数范围:1500.0m
最高个位数速度:3750.0m/s

1.4天线形成

需要二维天线阵列用于两个方向的测向-方位角和仰角。 该示例使用最常见的类型,矩形等距头灯,它使用 EngeePhased.URA. 各向同性散热器作为前照灯的元件。 - EngeePhased.IsotropicAntennaElement.

In [ ]:
# 天线参数
d = lambda /2 # 元素之间的距离
freq_range = [fc-bw fc+bw] # 辐射的频率范围
Nx = 24 # X轴上的元素数(方位角分辨率)
Ny = 24 # Y轴上的元素数(按位置角度的分辨率)
Δaz = rad2deg(lambda/(d*(Nx-1))) # 方位分辨率,deg
Δel = rad2deg(lambda/(d*(Ny-1))) # 座椅角度分辨率,deg
# 元素总数N=Nx*Ny

# 具有各向同性天线元件
ant_elem = EngeePhased.IsotropicAntennaElement( 
    FrequencyRange = freq_range, # 频率范围
    BackBaffled = true # 去除天线底部的反向散射
) 

# 创建矩形大灯
array = EngeePhased.URA(
    Element = ant_elem, # 天线元件
    Size = [Nx Ny], # 网格大小
    ElementSpacing = [d d], # 元素之间的距离
);

使用该功能可视化前大灯的方向图案 pattern.

In [ ]:
pattern(array,fc) |> display;
Warning: detected a stack overflow; program state may be corrupted, so further execution might be unreliable.
Warning: detected a stack overflow; program state may be corrupted, so further execution might be unreliable.

矩形前照灯的参数和特性如下:

In [ ]:
println("元素之间的距离:$(round(d;sigdigits=3))m") 
println("矩形大灯尺寸:$(Nx)x$Ny[Nx,Ny]") 
println("辐射频率范围:∞(freq_range*1e-9)GHz")
println("方位角分辨率:△(round(Δaz;sigdigits=3))°") 
println("位置角分辨率:△(round(Δel;sigdigits=3))°") 
元件之间的距离:0.15米
矩形大灯尺寸:24x24[Nx,Ny]
辐射频率范围:[0.91.1]ghz
方位分辨率:4.98°
位置角度分辨率:4.98°

1.5发送和接收路径

雷达的下一个组件是接收和发送路径。 它执行2主要任务:

  1. 探测信号以电磁波(EMW)的形式辐射到太空;
  2. 接收来自目标的反射信号。

传输路径包括2个部件:发射器,实现预放大和头灯。 接收路径类似地形成,包括接收头灯和前置放大器。

In [ ]:
# 接收和发送路径的参数
Pt = 1e3 # W、峰值功率
Gtx = 20 # dB,发射天线的增益
LFtx = 1.5 # dB,传输路径中的损耗

Grx = 20 # dB,接收天线的增益
NF = 2 # dB,接收路径的噪声系数
LFrx = 1.5 # dB,接收路径中的损耗
TN = 290 # 噪音温度
NP = physconst("boltzmann") * bw * TN; # W、噪声功率

# 带有发射器的生物
transmitter = EngeePhased.Transmitter( 
    Gain = Gtx, # 发射机增益
    PeakPower = Pt, # 峰值功率
    LossFactor=LFtx # 传输路径中的损耗
)

# 具有宽带传输灯的设备
radiator = EngeePhased.WidebandRadiator(
    Sensor = array, # 天线元件的底部
    SampleRate = fs, # 采样率
    CarrierFrequency = fc, # 载波频率
    NumSubbands = NBand # 频率子带数
)

# 具有宽带接收头灯的设备
collector = EngeePhased.WidebandCollector(
    Sensor = array, # 天线元件的底部
    SampleRate = fs, # 采样率
    CarrierFrequency = fc, # 中央频率
    NumSubbands = NBand # 频率子带数
)

# 创建接收前置放大器(LNA)
receiver = EngeePhased.ReceiverPreamp(
    NoiseMethod="Noise power", # 噪音设定方法["噪音功率"、"噪音温度"]
    Gain = Grx, # 接收器增益,dB
    NoisePower = NP, # 噪音功率
    LossFactor=LFrx, # 接收道中的损失
    NoiseFigure = NF, # 路径中的噪声因子
    SampleRate = fs # 采样率
);

下面给出收发器路径的参数和特性:

In [ ]:
println("-----------------发射器-----------------------------")
println("发射机功率:△(round(Pt*1e-3;sigdigits=5))kW")
println("发射机增益:△(Round(Gtx;sigdigits=5))dB")
println("传输路径损耗:△(round(LFtx;sigdigits=5))dB")
println("--------------------------------------------------------")
println("-----------------接收器-----------------------------")
println("接收器增益:△(round(Gtx;sigdigits=5))dB")
println("接收路径中的损耗:△(round(LFtx;sigdigits=5))dB")
println("噪声温度:△(round(LFrx;sigdigits=5))dB")
println("噪声系数:△(round(nf;sigdigits=5))dB")
println("噪声温度:△(round(TN;sigdigits=5))°C")
println("噪声功率:△(round(NP;sigdigits=5))W")
-----------------发射器-----------------------------
发射机功率:1.0千瓦
发射机增益:20.0dB
传输路径损耗:1.5dB
--------------------------------------------------------
-----------------接收器-----------------------------
接收增益:20.0dB
接收路径中的损耗:1.5dB
噪音温度:1.5dB
噪音系数:2.0分贝
噪音温度:290.0°C
噪音功率:4.0039E-13W

1.6数字处理单元(测向仪)

雷达的最后一块是测向算法。 这样的块解决了确定信号到达方向的问题,结果,目标物体相对于雷达的方向。 考虑最常用的:"BeamScan","MVDR","MUSIC"

In [ ]:
az_scan = -20:0.5:20 # 方位扫描范围
el_scan = 0:0.5:30 # 按位置角度扫描范围
n_sig = 4 # 评分数(进球数)
Out[0]:
4
In [ ]:
algorithm = "MUSIC" # @param ["Beamscan","MVDR","MUSIC"]

 beamscan = EngeePhased.BeamscanEstimator2D( 
    SensorArray = array, # 天线
    OperatingFrequency = fc, # 载波频率
    AzimuthScanAngles = az_scan,  # 方位扫描范围
    ElevationScanAngles = el_scan,  # 按位置角度扫描范围
    DOAOutputPort = true, # 启用轴承估计值的输出
    NumSignals = n_sig # 评级数目
);

 mvdr = EngeePhased.MVDREstimator2D( 
    SensorArray = array, # 天线
    OperatingFrequency = fc, # 载波频率
    AzimuthScanAngles = az_scan,  # 方位扫描范围
    ElevationScanAngles = el_scan,  # 按位置角度扫描范围
    DOAOutputPort = true, # 启用轴承估计值的输出
    NumSignals = n_sig # 评级数目
);

music =  EngeePhased.MUSICEstimator2D(
    SensorArray = array, # 天线
    OperatingFrequency = fc, # 载波频率
    AzimuthScanAngles = az_scan,  # 方位扫描范围
    ElevationScanAngles = el_scan,  # 按位置角度扫描范围
    DOAOutputPort = true, # 启用轴承估计值的输出
    NumSignalsSource="Property",
    NumSignals = n_sig, # 评级数目
    ForwardBackwardAveraging=false # 计算正向和反向平均
);

doa_alg =  if algorithm == "Beamscan"
    println("算法:Beamscan")
    deepcopy(beamscan)
elseif algorithm == "MVDR"
    println("算法:MVDR");
    deepcopy(mvdr)
elseif algorithm == "MUSIC"
    println("算法:音乐");  
    deepcopy(music)
end;
算法:音乐

1.7Phono目标环境

Phono-target环境块包括2个组件:分布环境和目标对象。 为了模拟环境,考虑到信号的宽带, EngeePhased.WidebandLOSChannel 它允许您考虑物体传播过程中的频率分散以及天气条件(水文气象,冰雹,压力变化等)的影响。).

In [ ]:
# 分布环境参数
is_atmosphere = true # 大气对电磁波传播的影响的考虑
T_ch = 15 # 大气温度,°C
press_air = 101325.0 # 大气压力,PA
vap_density = 7.5 # 湿蒸汽密度
liq_density = 0.0 # 冷凝水密度
rain_rate = 0.0 # 降水强度

channel_fwd = EngeePhased.WidebandLOSChannel( 
    PropagationSpeed = c,
    SampleRate = fs,
    OperatingFrequency = fc,
    NumSubbands = NBand,
    TwoWayPropagation = false, # 考虑双向信号传播
    SpecifyAtmosphere = is_atmosphere,
    Temperature = T_ch,
    DryAirPressure = press_air,
    WaterVapourDensity = vap_density,
    LiquidWaterDensity = liq_density,
    RainRate = rain_rate
);

channel_bwd = deepcopy(channel_fwd); # 从目标到雷达的分配通道(相同)

为了形成一个目标,它与 EngeePhased.WidebandBackscatterRadarTarget. 它允许您以给定精度的空间分辨率网格(方位角和仰角)描述目标的用户门。 在示例中,dor矩阵被加载(filequad_rcs_pattern.jld2)为解析计算的四轴飞行器型无人机模型。 DOR计算的更详细描述在[2,3]中讨论。

In [ ]:
data = JLD2.load("quad_rcs_pattern.jld2")

num_tgts = n_sig # 目标数量(设置相等数量的测向器评级)
rcs_az = data["az"] # 方位EPR记帐范围(-180:180),deg
rcs_el = data["el"] # EPR会计范围按座位角度(-90:90),deg
rcs_pattern = data["rcs"] # 目标门矩阵[181x361],m^2

type_tgt = "Nonfluctuating" # 目标类型["非波动","Swerling1","Swerling2","Swerling3","Swerling4"]

# 宽带SDR目标的形成
rcs_targets = EngeePhased.WidebandBackscatterRadarTarget( 
    AzimuthAngles = rcs_az, # 基于方位的EPR记帐范围
    ElevationAngles = rcs_el, # 按座位角度计算的EPR会计范围
    RCSPattern = rcs_pattern, # DOR目标
    PropagationSpeed = c, # 传播速度,m/s
    OperatingFrequency = fc, # 载波频率,Hz
    NumSubbands = NBand, # 频率子带数
    Model = type_tgt # 目标EPR的波动类型
);

要可视化UAV对象及其DOR,请使用函数 calc_plot_rcs:

In [ ]:
text_title = "可视化和DOR目标"
k_norm  = 0.6 # 门尺寸缩放系数
calc_plot_rcs(rcs_pattern,rcs_az,rcs_el;title = text_title,k = k_norm)
Out[0]:
Warning: detected a stack overflow; program state may be corrupted, so further execution might be unreliable.

由于目标的几何特征-存在螺钉形式的不规则性,UAV心轴的一般外观具有坚固,裂开的特征。 可以注意到,当UAV从上方和下方照射时达到最大EPR值,这是由于最大照射面积,并且EPR在水平面内减小。

1.8交通场景

模型形成的最后阶段是设置目标和雷达的轨迹。 在该场景中,假设雷达位于坐标系的原点并且是静止的。 目标的初始位置和速度在变量中设置 targets_postargets_vel,选取匀速运动模型

In [ ]:
# 目标移动模型
targets_pos = [
            [1000; 100; 200];; # 1目标
            [1200; -10; 200];; # 2目标
            [1100; -150; 150];; # 3目标
            [950; 50; 320];; # 4目标
] # 目标的初始位置,m
targets_vel = [
            [-130; 0; 0];; # 第1目标的速度(在平行于x轴的雷达上)
            [-150; 0; 0];; # 第二目标的速度(在平行于x轴的雷达上)
            [-200; 0; 0];; # 第3目标的速度(在平行于x轴的雷达上)
            [-230; 0; 0];; # 第4个目标的速度(在平行于x轴的雷达上)
] # 目标速度,m/s
type_traj = "Velocity" # 运动模型是均匀的["速度","加速度","自定义"]

targets_platform = EngeePhased.Platform(
    MotionModel = type_traj,
    InitialPosition = targets_pos, # 起始位置
    Velocity = targets_vel # 目标速度
)

# 雷达运动模型
radar_pos = [0; 0; 0] # 雷达位置
radar_vel = [0; 0; 0] # 雷达速度

radar_platform = EngeePhased.Platform(
    InitialPosition = radar_pos, # 雷达位置
    Velocity = radar_vel # 雷达速度
);

abs_dist,ang_true = rangeangle(targets_pos,radar_pos)

for i in 1:num_tgts
    println("----------------目标#$(i)----------------------------")
    println("方位角:ψ(round(ang_true[1,i];sigdigits=3))°,仰角:ψ(round(ang_true[2,i];sigdigits=3))°")
    println("雷达范围至目标号。$(i):$(round(abs_dist[i]*1e-3;sigdigits=5))km")
end
----------------目标1----------------------------
方位角:5.71°,座角:11.3°
从雷达到目标1号的范围:1,0247公里
----------------目标2----------------------------
方位角:-0.477°,仰角:9.46°
雷达至2号目标范围:1.2166公里
----------------目标3----------------------------
方位角:-7.77°,仰角:7.69°
雷达至3号目标范围:1.1203公里
----------------目标4----------------------------
方位角:3.01°,座角:18.6°
从雷达到4号目标的范围:1.0037km

使用函数 viz_scene 我们将显示场景的初始状态,考虑到目标的目击方向。:

In [ ]:
viz_scene(targets_pos, radar_pos) |> display;

结果,形成了雷达的以下战术和技术特征:

In [ ]:
println("-----------------雷达站-----------------------------")
println("载波频率:∞(round(fc*1e-9;sigdigits=3))GHz")
println("光速:<c m/s")
println("波长:∞(round(lambda;sigdigits=3))m") 
println("频率子带数:△NBand m")
println("雷达位置:$radar_pos[Px,Py,Pz],m")
println("雷达速度:△radar_vel[Vx,Vyc,Vz],m/s")
println("--------------------------------------------------------")
println("-----------------发电机-----------------------------")
println("采样率:∞(round(fs*1e-6;sigdigits=5))MHz")
println("脉冲持续时间:△(round(T*1e6;sigdigits=5))微秒")
println("随访期:$(round(1e6/prf;sigdigits=5))mks")
println("重复率:△(round(prf*1e-3;sigdigits=5))kHz")
println("钻孔:$((Q;sigdigits=5))")
println("相干累积时间:△(round(T_coh*1e3;sigdigits=5))ms")
println("每包脉冲数:$n_pulses")
println("包数:$n_groups_imps")
println("范围分辨率:△(round(ΔR;sigdigits=3))m") 
println("速度分辨率:△(round(ΔV;sigdigits=3))m/s") 
println("最大一位数范围:$(round(Rmax;sigdigits=3))m") 
println("最小一位数范围:$(round(Rmin;sigdigits=3))m") 
println("最大个位数速度:∞(round(Vmax;sigdigits=3))m/s") 
println("--------------------------------------------------------")
println("-----------------发射器-----------------------------")
println("发射机功率:△(round(Pt*1e-3;sigdigits=5))kW")
println("发射机增益:△(Round(Gtx;sigdigits=5))dB")
println("传输路径损耗:△(round(LFtx;sigdigits=5))dB")
println("--------------------------------------------------------")
println("-----------------接收器-----------------------------")
println("接收器增益:△(round(Gtx;sigdigits=5))dB")
println("接收路径中的损耗:△(round(LFtx;sigdigits=5))dB")
println("噪声温度:△(round(LFrx;sigdigits=5))dB")
println("噪声系数:△(round(nf;sigdigits=5))dB")
println("噪声温度:△(round(TN;sigdigits=5))°C")
println("噪声功率:△(round(NP;sigdigits=5))W")
println("--------------------------------------------------------")
println("-----------------天线-------------------------------")
println("元素之间的距离:$(round(d;sigdigits=3))m") 
println("矩形大灯尺寸:$(Nx)x$Ny[Nx,Ny]") 
println("辐射频率范围:∞(freq_range*1e-9)GHz")
println("方位角分辨率:△(round(Δaz;sigdigits=3))°") 
println("位置角分辨率:△(round(Δel;sigdigits=3))°") 
println("--------------------------------------------------------")
println("-----------------测向仪-----------------------------")
println("方位扫描范围:△(az_scan)deg.")
println("按位置角度扫描范围:△(el_scan)deg。")
println("评级数目:$n_sig")
println("--------------------------------------------------------")
-----------------雷达站-----------------------------
载波频率:1.0GHz
光速:299792458米/秒
波长:0.3米
频率子带数:64m
雷达位置:[0,0,0][Px,Py,Pz],m
雷达速度:[0,0,0][Vx,Vyc,Vz],m/s
--------------------------------------------------------
-----------------发电机-----------------------------
采样率:200.0MHz
脉冲持续时间:10.0微秒
后续周期:20.0微秒
重复频率:50.0kHz
钻孔:2.0
相干累积时间:0.04ms
每包脉冲数:2
包装数量:2
量程分辨率:1.5m
速度分辨率:3750.0m/s
最大个位数范围:3000.0m
最小个位数范围:1500.0m
最高个位数速度:3750.0m/s
--------------------------------------------------------
-----------------发射器-----------------------------
发射机功率:1.0千瓦
发射机增益:20.0dB
传输路径损耗:1.5dB
--------------------------------------------------------
-----------------接收器-----------------------------
接收增益:20.0dB
接收路径中的损耗:1.5dB
噪音温度:1.5dB
噪音系数:2.0分贝
噪音温度:290.0°C
噪音功率:4.0039E-13W
--------------------------------------------------------
-----------------天线-------------------------------
元件之间的距离:0.15米
矩形大灯尺寸:24x24[Nx,Ny]
辐射频率范围:[0.91.1]ghz
方位分辨率:4.98°
位置角度分辨率:4.98°
--------------------------------------------------------
-----------------测向仪-----------------------------
方位角扫描范围:-20.0:0.5:20.0度。
扫描范围按位置角度:0.0:0.5:30.0度.
评级数目:4
--------------------------------------------------------

2. 雷达运行场景的计算

2.1模型运行

使用先前初始化的CO,我们将为雷达的操作创建一个场景。 执行计算后,以下变量将可用:

  • data_y -接收装置输出端的反射信号

  • data_ang_true -N周期(脉冲突发)的真实轴承值

  • data_ang_est -轴承估计N周期(脉冲突发)

  • data_spec -在所选算法的测向算法的输出处的功率谱的估计

重要的是要注意,目标的位置从脉冲更新到脉冲。 因此,在系统操作周期期间,必须将LFM信号的1个脉冲施加到发射机的输入端。 辅助变量用于此目的。 sig_lfm_one_impssig_buffer_one_groups.

In [ ]:
# 输出信号和轴承估计的内存分配
data_y = zeros(ComplexF64,length(sig_lfm),Nx*Ny,n_groups_imps)
data_ang_true = zeros(2, num_tgts, n_groups_imps); # 目标的真正方向
data_ang_est = zeros(2, num_tgts, n_groups_imps); # 目标的真正方向
data_spec = zeros(length(el_scan),length(az_scan), n_groups_imps); # 测向器输出处视角的光谱数据

len_one_imps = round(Int,length(sig_lfm)/n_pulses) # 1脉冲的计数数
sig_lfm_one_imps = sig_lfm[1:len_one_imps] # 分配1个脉冲
sig_buffer_one_groups = similar(data_y[:,:,1]) # 用于累积脉冲串的缓冲器

println("场景的计算正在运行。..")
@inbounds for i in 1:n_groups_imps
    println("束数△(i)的计算。..")

    @inbounds for k in 1:n_pulses
        println("脉冲数△(k)的计算。..")
        # 以脉冲周期1/prf的增量更新雷达和目标的位置
        radar_pos, radar_vel = radar_platform(1/prf)
        tgts_pos, tgts_vel = targets_platform(1/prf)

        # 计算和维护目标轴承
        _,ang_doa = rangeangle(tgts_pos,radar_pos)
        data_ang_true[:,:,i] .= deepcopy(ang_doa)

        # 周三宽带信号发射
        sig_tx = transmitter(sig_lfm_one_imps) # 传送路径的通过
        sig_rad = radiator(sig_tx,ang_doa) # 向太空辐射信号

        # 从雷达到目标的传播
        sig_fwd = channel_fwd(sig_rad,radar_pos,tgts_pos,radar_vel,tgts_vel)
        # 目标的反思
        sig_refl = rcs_targets(sig_fwd,ang_doa)

        # 从目标到雷达的传播
        sig_ret = channel_bwd(sig_refl,tgts_pos,radar_pos,tgts_vel,radar_vel)

        # 接收道
        y = collector(sig_ret,ang_doa) # 接收灯
        sig_buffer_one_groups[(1:len_one_imps).+(k-1)*len_one_imps,:] .= receiver(y) # 基于接收器热噪声(LNA)的预放大
    end

    # 轴承计算
    data_spec[:,:,i],data_ang_est[:,:,i] = doa_alg(sig_buffer_one_groups); # 评估目标到达的范围和方向
    data_y[:,:,i] .= sig_buffer_one_groups; # 保存接收到的信号
end

println("场景计算完成!")
场景的计算正在运行。..
束1号的计算。..
1号脉冲的计算。..
2号脉冲的计算。..
Warning: detected a stack overflow; program state may be corrupted, so further execution might be unreliable.
束No.2的计算。..
1号脉冲的计算。..
2号脉冲的计算。..
场景计算完成!

2.2系统精度分析

让我们从方位角和仰角绘制测向算法输出端的信号功率谱。 角度网格继承自第1.6段,其中设置了测向算法和网格精度。

In [ ]:
n_imp = 1 # 分析脉冲的数量
plot_size = (600,600) # 许可
plot_spec_azel(az_scan,el_scan,data_spec[:,:,n_imp];
    title = "测向器输出处的功率谱(算法△(algorithm))",
    size = plot_size
)
Out[0]:

该图显示了4个特征峰,表明在这些方向上存在目标。 下面是方向和轴承估计的真实值的比较,为各自的目的。

在测向器输出处,估计值按检测顺序给出,因此我们将首先使用函数按最小欧几里德距离(L2-范数)估计值的标准进行排序 sort_ang_mse:

In [ ]:
sort_ang_est =  sort_ang_mse(data_ang_true,data_ang_est) # 排序的角度估计数据

for k in 1:n_groups_imps
    println("---------------脉冲包号 $(k) -----------------------------")
    for i in 1:num_tgts
        println("   ----------------目标#$(i) ----------------------------")
        println("       目标:方位角=$(round(data_ang_true[1,i,k];sigdigits=4))°,仰角=$(round(data_ang_true[2,i,k];sigdigits=4))°");
        println("       估计:方位角=$(round(sort_ang_est[1,i,k];sigdigits=4))°,座角=$(round(sort_ang_est[2,i,k];sigdigits=4))°");
        println("       误差:方位角=$(round(abs(sort_ang_est[1,i,k]-data_ang_true[1,i,k]);sigdigits=4))°,座角=$(round(abs(sort_ang_est[2,i,k]-data_ang_true[2,i,k]);sigdigits=4))°");
    end
    println("最大误差:△(round(maximum(abs.(data_ang_true[:,:,k]。-sort_ang_est[:,:,k]));sigdigits=4))°")
    println("-------------------------------------------------------------")
end
---------------脉冲包1号 -----------------------------
   ----------------目标1 ----------------------------
       目标:方位角=5.711°,仰角=11.26°
       估计:方位角=6.0°,仰角=11.5°
       误差:方位角=0.2894°,仰角=0.2447°
   ----------------目标2 ----------------------------
       目标:方位角=-0.4775°,仰角=9.462°
       估计:方位角=-0.5°,仰角=10.0°
       误差:方位角=0.02255°,仰角=0.538°
   ----------------目标3 ----------------------------
       目标:方位角=-7.765°,仰角=7.695°
       估计:方位角=-8.0°,仰角=8.0°
       误差:方位角=0.2348°,仰角=0.3052°
   ----------------目标4 ----------------------------
       目标:方位角=3.013°,仰角=18.59°
       估计:方位角=3.0°,仰角=19.0°
       误差:方位角=0.0128°,仰角=0.4082°
最大误差:0.538°
-------------------------------------------------------------
---------------脉冲包2号 -----------------------------
   ----------------目标1 ----------------------------
       目标:方位角=5.711°,仰角=11.26°
       估计:方位角=6.0°,仰角=11.5°
       误差:方位角=0.2894°,仰角=0.2447°
   ----------------目标2 ----------------------------
       目标:方位角=-0.4775°,仰角=9.462°
       估计:方位角=-0.5°,仰角=10.0°
       误差:方位角=0.02254°,仰角=0.5379°
   ----------------目标3 ----------------------------
       目标:方位角=-7.765°,仰角=7.695°
       估计:方位角=-8.0°,仰角=8.0°
       误差:方位角=0.2348°,仰角=0.3051°
   ----------------目标4 ----------------------------
       目标:方位角=3.013°,仰角=18.59°
       估计:方位角=3.0°,仰角=19.0°
       误差:方位角=0.01283°,仰角=0.408°
最大误差:0.5379°
-------------------------------------------------------------

最大轴承误差为 0.538°,这与划分网格的价格相当(0.5°). 因此,所使用的算法适用于正在解决的问题。 为了提高精度,您可以增加前灯元件的数量并减少角落的分析网格。

3. 测向算法的分析与比较

在最后一节中,我们研究了测向算法(BeamscanMVDRMusic)在不同信噪比下的准确性。

为此,让我们使用基本雷达方程估计当前SNR radareqsnr. 您可以使用应用程序"雷达方程的计算"自动计算SNR并生成jl计算文件。 下面是一个应用程序计算范围为1.5公里、长度为0.3米、脉冲持续时间为10微秒和峰值功率为1千瓦的信噪比的例子。

image.png

结果,当前配置的SNR值为34.1dB。 生成后,计算文件**RadarEquationScript_2026-05-29_21:46:25.749。jl出现在文件浏览器中。**生成的参数化代码如下所示:

In [ ]:
tgtrng = maximum(abs_dist) # 目标范围
# SNR的计算,精度为3位
snr = round(radareqsnr(
	lambda, # 波长
	tgtrng, # 目标范围
	Pt, # 脉冲功率
	T, # 脉冲持续时间
	RCS = 0.01, # 目标的EPR(选择平均值)
	Gain = Grx, # 天线增益
	Loss = LFtx+LFrx,  # 路径中的损失
	Ts = TN # 噪音温度
)[1];sigdigits = 3)

println("当前信噪比:<信噪比db")
当前信噪比:34.1db

为了分析算法的有效性,我们将选择接收器输出端的信号的最后一个脉冲,并形成一个用于增加噪声功率的向量。 noise_vec 和SNR值 snr_vec:

In [ ]:
y = deepcopy(data_y[:,:,end]) # 复制最后一个脉冲的信号数据
ang_trues_end =  data_ang_true[:,:,end]; # 复制目标的真实方向

noise_vec = collect(20:10:70) # 噪声功率的矢量相对于NP从20dB增加到70dB
snr_vec = snr .- noise_vec # SNR值的向量

println("SNR矢量:△(round.(snr_vec;sigdigits=3))dB")
信噪比向量: [14.1, 4.1, -5.9, -15.9, -25.9, -35.9] 分贝

3.1音乐算法

考虑算法的效率 MUSIC. 让我们用音乐打6个电话,从一个电话到另一个电话,信噪比下降了10倍.:

In [ ]:
# 为音乐不可比拟的频谱和角度估计分配内存
spec_music = zeros(length(el_scan),length(az_scan), length(noise_vec)) 
ang_music = zeros(2, num_tgts, length(noise_vec)) # 目标的真正方向

@inbounds for i in 1:length(noise_vec)
    println("SNR的估计计算△(round(snr_vec[i];sigdigits=3))dB")
    release!(music) # 将系统对象重置为初始状态
    noise_sig =  sqrt(NP*10^(noise_vec[i]/10))*randn(size(y)) # 噪声信号的新数据
    spec_music[:,:,i],ang_music[:,:,i] = music(y.+noise_sig); # 评估目标到达的范围和方向
end
计算14.1分贝信噪比的估计值
Warning: detected a stack overflow; program state may be corrupted, so further execution might be unreliable.
SNR4.1dB的估计计算
SNR-5.9dB的估计计算
SNR-15.9dB的估计计算
SNR-25.9dB的估计计算
Warning: detected a stack overflow; program state may be corrupted, so further execution might be unreliable.
SNR-35.9dB的估计计算

让我们比较指定SNR的测向结果:

In [ ]:
fig_spec_music_vec = [] # 
@inbounds for i in 1:length(noise_vec)
    push!(fig_spec_music_vec,
        plot_spec_azel(az_scan,el_scan,spec_music[:,:,i];
            title = "音乐(SNR=$(round(snr_vec[i];sigdigits=3))db)"
        )
    )
end
plot(fig_spec_music_vec...)
Out[0]:

在24dB时,所有4目标都有自信的接收。 随着SNR的降低,可检测目标的数量减少:对于-15.9dB,2个目标可见,对于-25.9dB,目标检测丢失。

接下来,考虑所有目的的最大定位误差。:

In [ ]:
sort_ang_music = similar(ang_music) # 排序的角度估计数据
[sort_ang_music[:,:,i] .= sort_ang_mse(ang_trues_end,ang_music[:,:,i]) for i in 1:length(snr_vec)]

# 建立一个表
calc_table_ang_analysis(ang_trues_end,sort_ang_music,snr_vec)
Out[0]:
34×11 DataFrame
9 rows omitted
RowОСШ, дБЦельСКО,°аз. эт.,°аз. оц.,°аз. погр.,° уг. мес эт.,°уг. мес оц.,°уг. мес. погр.,°
StringStringStringStringStringStringStringStringStringStringString
114.1№ 10.3795.7116.00.28911.25511.50.245
2№ 20.538-0.477-0.50.0239.46210.00.538
3№ 30.385-7.765-8.00.2357.6958.00.305
4№ 40.4083.0133.00.01318.59219.00.408
5
6ОСШ, дБЦельСКО,°аз. эт.,°аз. оц.,°аз. погр.,°уг. мес эт.,°уг. мес оц.,°уг. мес. погр.,°
74.1№ 10.3795.7116.00.28911.25511.50.245
8№ 20.538-0.477-0.50.0239.46210.00.538
9№ 30.385-7.765-8.00.2357.6958.00.305
10№ 40.4083.0133.00.01318.59219.00.408
11
12ОСШ, дБЦельСКО,°аз. эт.,°аз. оц.,°аз. погр.,°уг. мес эт.,°уг. мес оц.,°уг. мес. погр.,°
13-5.9№ 10.3795.7116.00.28911.25511.50.245
23
24ОСШ, дБЦельСКО,°аз. эт.,°аз. оц.,°аз. погр.,°уг. мес эт.,°уг. мес оц.,°уг. мес. погр.,°
25-25.9№ 12.5985.7117.01.28911.2559.02.255
26№ 23.31-0.4771.01.4779.4626.52.962
27№ 317.704-7.765-11.53.7357.69525.017.305
28№ 45.473.013-1.54.51318.59215.53.092
29
30ОСШ, дБЦельСКО,°аз. эт.,°аз. оц.,°аз. погр.,°уг. мес эт.,°уг. мес оц.,°уг. мес. погр.,°
31-35.9№ 19.325.71115.09.28911.25510.50.755
32№ 217.544-0.477-11.010.5239.46223.514.038
33№ 37.268-7.765-15.07.2357.6957.00.695
34№ 411.0123.0131.51.51318.59229.510.908

当SNR降低到-16dB时,对于弱目标,定位精度降低,并且随着信号进一步减弱,误差变得随机。

3.2MVDR算法

接下来,我们来看看算法的效率。 MVDR.

In [ ]:
# 为MVDR分配不可比拟的频谱和角度估计的内存
spec_mvdr = zeros(length(el_scan),length(az_scan), length(noise_vec)) 
ang_mvdr = zeros(2, num_tgts, length(noise_vec)) # 目标的真正方向

@inbounds for i in 1:length(noise_vec)
    println("SNR的估计计算△(round(snr_vec[i];sigdigits=3))dB")
    release!(mvdr) # 将系统对象重置为初始状态
    noise_sig =  sqrt(NP*10^(noise_vec[i]/10))*randn(size(y)) # 噪声信号的新数据
    spec_mvdr[:,:,i],ang_mvdr[:,:,i] = mvdr(y.+noise_sig); # 评估目标到达的范围和方向
end
计算14.1分贝信噪比的估计值
SNR4.1dB的估计计算
SNR-5.9dB的估计计算
SNR-15.9dB的估计计算
SNR-25.9dB的估计计算
Warning: detected a stack overflow; program state may be corrupted, so further execution might be unreliable.
SNR-35.9dB的估计计算

让我们比较指定SNR的测向结果:

In [ ]:
fig_spec_mvdr_vec = [] # 
@inbounds for i in 1:length(noise_vec)
    push!(fig_spec_mvdr_vec,
        plot_spec_azel(az_scan,el_scan,spec_mvdr[:,:,i];
            title = "MVDR(SNR=∞(round(snr_vec[i];sigdigits=3))db)"
        )
    )
end
plot(fig_spec_mvdr_vec...)
Out[0]:

在14dB时,所有4目标都有自信的接收。 随着SNR的降低,检测到的目标数量减少:对于-16dB,2个目标可见,对于-20dB,没有一个可见。

接下来,考虑所有目的的最大定位误差。:

In [ ]:
sort_ang_mvdr = similar(ang_mvdr) # 排序的角度估计数据
[sort_ang_mvdr[:,:,i] .= sort_ang_mse(ang_trues_end,ang_mvdr[:,:,i]) for i in 1:length(snr_vec)]

# 建立一个表
calc_table_ang_analysis(ang_trues_end,sort_ang_mvdr,snr_vec)
Out[0]:
34×11 DataFrame
9 rows omitted
RowОСШ, дБЦельСКО,°аз. эт.,°аз. оц.,°аз. погр.,° уг. мес эт.,°уг. мес оц.,°уг. мес. погр.,°
StringStringStringStringStringStringStringStringStringStringString
114.1№ 10.3795.7116.00.28911.25511.50.245
2№ 20.538-0.477-0.50.0239.46210.00.538
3№ 30.385-7.765-8.00.2357.6958.00.305
4№ 40.4083.0133.00.01318.59219.00.408
5
6ОСШ, дБЦельСКО,°аз. эт.,°аз. оц.,°аз. погр.,°уг. мес эт.,°уг. мес оц.,°уг. мес. погр.,°
74.1№ 10.3795.7116.00.28911.25511.50.245
8№ 20.538-0.477-0.50.0239.46210.00.538
9№ 30.385-7.765-8.00.2357.6958.00.305
10№ 40.4083.0133.00.01318.59219.00.408
11
12ОСШ, дБЦельСКО,°аз. эт.,°аз. оц.,°аз. погр.,°уг. мес эт.,°уг. мес оц.,°уг. мес. погр.,°
13-5.9№ 10.3795.7116.00.28911.25511.50.245
23
24ОСШ, дБЦельСКО,°аз. эт.,°аз. оц.,°аз. погр.,°уг. мес эт.,°уг. мес оц.,°уг. мес. погр.,°
25-25.9№ 111.4335.711-5.511.21111.25513.52.245
26№ 28.302-0.477-5.04.5239.4622.56.962
27№ 30.404-7.765-7.50.2657.6958.00.305
28№ 410.7013.0135.52.48718.59229.010.408
29
30ОСШ, дБЦельСКО,°аз. эт.,°аз. оц.,°аз. погр.,°уг. мес эт.,°уг. мес оц.,°уг. мес. погр.,°
31-35.9№ 18.8625.71110.04.28911.2553.57.755
32№ 26.144-0.477-5.55.0239.46213.03.538
33№ 31.403-7.765-8.50.7357.6956.51.195
34№ 420.9173.013-17.520.51318.59214.54.092

当SNR降低到0dB时,对于弱目标,定位精度降低,并且随着信号进一步减弱,误差变得随机。

3.3Beamscan算法

接下来,我们来看看算法的效率。 BeamScan.

In [ ]:
# 为波束扫描分配不可比拟的频谱和角度估计的内存
spec_beamscan = zeros(length(el_scan),length(az_scan), length(noise_vec)) 
ang_beamscan = zeros(2, num_tgts, length(noise_vec)) # 目标的真正方向

@inbounds for i in 1:length(noise_vec)
    println("SNR的估计计算△(round(snr_vec[i];sigdigits=3))dB")
    release!(beamscan) # 将系统对象重置为初始状态
    noise_sig =  sqrt(NP*10^(noise_vec[i]/10))*randn(size(y)) # 噪声信号的新数据
    spec_beamscan[:,:,i],ang_beamscan[:,:,i] = beamscan(y.+noise_sig); # 评估目标到达的范围和方向
end
计算14.1分贝信噪比的估计值
SNR4.1dB的估计计算
Warning: detected a stack overflow; program state may be corrupted, so further execution might be unreliable.
计算SNR-5.9dB的估计值
SNR-15.9dB的估计计算
SNR-25.9dB的估计计算
SNR-35.9dB的估计计算

让我们比较指定SNR的测向结果:

In [ ]:
fig_spec_beamscan_vec = [] # 
@inbounds for i in 1:length(noise_vec)
    push!(fig_spec_beamscan_vec,
        plot_spec_azel(az_scan,el_scan,spec_beamscan[:,:,i];
            title = "beamscan(SNR=∞(round(snr_vec[i];sigdigits=3))db)"
        )
    )
end
plot(fig_spec_beamscan_vec...)
Out[0]:

对于任何SNR值(-20至30dB),观察到稳定的目标检测。 与此同时,主瓣的宽度明显大于以前的算法,这表明分辨率差,无法检测到2个接近的目标。

接下来,考虑所有目的的最大定位误差。:

In [ ]:
sort_ang_beamscan = similar(ang_beamscan) # 排序的角度估计数据
[sort_ang_beamscan[:,:,i] .= sort_ang_mse(ang_trues_end,ang_beamscan[:,:,i]) for i in 1:length(snr_vec)]

# 建立一个表
calc_table_ang_analysis(ang_trues_end,sort_ang_beamscan,snr_vec)
Out[0]:
34×11 DataFrame
9 rows omitted
RowОСШ, дБЦельСКО,°аз. эт.,°аз. оц.,°аз. погр.,° уг. мес эт.,°уг. мес оц.,°уг. мес. погр.,°
StringStringStringStringStringStringStringStringStringStringString
114.1№ 10.3795.7116.00.28911.25511.50.245
2№ 20.538-0.477-0.50.0239.46210.00.538
3№ 30.385-7.765-8.00.2357.6958.00.305
4№ 40.4083.0133.00.01318.59219.00.408
5
6ОСШ, дБЦельСКО,°аз. эт.,°аз. оц.,°аз. погр.,°уг. мес эт.,°уг. мес оц.,°уг. мес. погр.,°
74.1№ 10.3795.7116.00.28911.25511.50.245
8№ 20.538-0.477-0.50.0239.46210.00.538
9№ 30.385-7.765-8.00.2357.6958.00.305
10№ 40.4083.0133.00.01318.59219.00.408
11
12ОСШ, дБЦельСКО,°аз. эт.,°аз. оц.,°аз. погр.,°уг. мес эт.,°уг. мес оц.,°уг. мес. погр.,°
13-5.9№ 10.3795.7116.00.28911.25511.50.245
23
24ОСШ, дБЦельСКО,°аз. эт.,°аз. оц.,°аз. погр.,°уг. мес эт.,°уг. мес оц.,°уг. мес. погр.,°
25-25.9№ 120.775.71118.012.28911.25528.016.745
26№ 210.252-0.4774.54.9779.4620.58.962
27№ 30.848-7.765-7.50.2657.6958.50.805
28№ 411.7343.013-4.07.01318.59228.09.408
29
30ОСШ, дБЦельСКО,°аз. эт.,°аз. оц.,°аз. погр.,°уг. мес эт.,°уг. мес оц.,°уг. мес. погр.,°
31-35.9№ 113.1235.71114.58.78911.25521.09.745
32№ 23.672-0.477-4.03.5239.46210.51.038
33№ 37.697-7.765-10.52.7357.6950.57.195
34№ 41.4723.0134.00.98718.59217.51.092

正如我们所看到的,即使在低SNR下,目标也能被正确检测到,这表明该算法具有很高的抗噪性。

3.4算法对比

让我们比较所选SNR值的结果。 snr_i :

In [ ]:
plot_spec_2d = [];
for snr_i in eachindex(snr_vec)
    spec_beamscan_snr_0db_norm = maximum(spec_beamscan[:,:,snr_i];dims=1)[:]./maximum(spec_beamscan[:,:,snr_i])
    spec_mvdr_snr_0db_norm = maximum(spec_mvdr[:,:,snr_i];dims=1)[:]./maximum(spec_mvdr[:,:,snr_i])
    spec_music_snr_0db_norm = maximum(spec_music[:,:,snr_i];dims=1)[:]./maximum(spec_music[:,:,snr_i])

    fig = plot(az_scan,spec_beamscan_snr_0db_norm,lab="BeamScan",xlab="方位角,度",
        ylab="额定功率",lw=2,
        title="Snr=$(round(snr_vec[snr_i];sigdigits=3))dB的测向算法比较"
    )
    plot!(az_scan,spec_mvdr_snr_0db_norm,lab="MVDR",lw=2)
    plot!(az_scan,spec_music_snr_0db_norm,lab="MUSIC",lw=2)
    push!(plot_spec_2d,fig)
end
plot(plot_spec_2d...;layout = (length(plot_spec_2d),1),size = (600,300*length(plot_spec_2d)))
Out[0]:

如前所述,BeamScan算法具有最差的分辨率,但具有最佳的抗噪性:在-26dB时,该算法能够在6.5度方向上检测目标。 MVDR算法具有出色的分辨率,具有足够的SNR(从10dB),但极易受噪声影响。 MUSIC算法具有最佳的分辨率和抗噪特性:即使在SNR=-6dB下,也在空间频谱上观察到4个目标的自信检测

结论

因此,在示例中,考虑了在[Engee]建模环境中对具有多个目标的多通道宽带测向系统进行建模的方法(https://start.engee.com /)。

此外,在信噪比的不同值(范围从-36到14dB)下,对测向算法(MUSIC,BeamScan,MVDR)进行了比较分析:

*****MVDR算法:在SNR值大于零的情况下显示高效率-高分辨率,但最容易受到噪声的影响;
**算法
*Beamscan:***具有足够的SNR,它具有最大的主瓣宽度,结果是空间频谱的最差分辨率。 与此同时,它具有最佳的抗噪能力,即使在信噪比<-20分贝的情况下也能检测到目标;
*****音乐算法:***在宽动态范围(-20至14分贝)内显示高效率,并在所有算法中具有最佳的分辨率。

资料来源

  1. Van Treece,H.最佳信号处理。 纽约:Wiley-Interscience,2002。
  2. Semichastnov,A.E.和D.A.Balakin。 "基于Engee环境中的Microdopler签名对无人驾驶飞行器和鸟类进行分类的雷达系统的建模场景。"电子图书馆,卷。 28,issue4,November2025,pp.943-52,doi:10.26907/1562-5419-2025-28-4-943-952
  3. A.R.Gorbunov,M.R.Akmalov,A.E.Semichastnov和D.A.Balakin,"基于雷达数据的神经网络方法的无人机识别算法",2025年第七届无线电电子,电气和电力工程国际青年会议(REEPE),莫斯科,俄罗斯联邦,2025,第1-8页,doi:10.1109/REEPE63962.2025。10971050