Алгоритмы пеленгации Beamscan и MVDR для прямоугольной ФАР
Алгоритмы пеленгации Beamscan и MVDR для прямоугольной ФАР
В этом примере демонстрируется применение алгоритмов пеленгации Beamscan и MVDR для определения азимутального и угломестного направления прихода сигнала с применением прямоугольной фазированной антенной решетки (ФАР)
Вспомогательные функции
# Фунция для считывания данных из переменной `simout`
function DataFrame2Array(X)
squeeze(A) = reshape(A, filter(!=(1), size(A))...)
out = collect(X)
out_data = zeros(eltype(out.value[1]),size(out.value[1],1),size(out.value[1],2),length(out.value))
[out_data[:,:,i] = out.value[i] for i in 1:length(out.value)]
return squeeze(out_data), out.time
end
function plot_map_doa(X,param,n_step::Int64 = 3;title="",x_lab="Азимутальный угол, град",
y_lab="Угол места, град",threshold = "auto")
plotlyjs()
PARULA_GRAD = cgrad(
[
"#352A87", "#0F5CDD", "#127DD8",
"#079CCF", "#15B1B4", "#59BD8C",
"#A5BE6B", "#E1B952", "#FCCE2E",
"#F9FB0E"
])
heatmap(param.RangeAzimuths,param.RangeElevations,X[:,:,n_step],
color=PARULA_GRAD, title=title,xlabel = x_lab,ylabel=y_lab) |> display;
return
end
# функция построения динамическогой визуализации изменения дальности и частоты Доплера
function calc_matrix_visual(out,param;title_name="")
gr()
default(titlefontsize=12,top_margin=5Plots.px,guidefont=10,
fontfamily = "Computer Modern",colorbar_titlefontsize=8,size=(600,400),
margin = 2Plots.mm
)
PARULA_GRAD = cgrad(
[
"#352A87", "#0F5CDD", "#127DD8",
"#079CCF", "#15B1B4", "#59BD8C",
"#A5BE6B", "#E1B952", "#FCCE2E",
"#F9FB0E"
])
x_grid = param.RangeAzimuths
y_grid = param.RangeElevations
heatmap(x_grid,y_grid,out[:,:,1],color=PARULA_GRAD,
xlabel="Азимутальный угол, град",ylabel="Угол места, град",title=title_name,
colorbartitle="Амплитуда")
@info "Построение визуализации изменения оценок пеленга во времени..."
anim1 = @animate for i in axes(out,3)
mod(i,10)==0 && (@info "$(round(100*i/size(out,3))) %")
heatmap!(x_grid,y_grid,out[:,:,i],color=PARULA_GRAD)
end
@info " ✅ Построение визуализации успешно завершено..."
return anim1
end;
# Фунция для прогона модели
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 ) # Открыть модель
engee.run( model, verbose=true ); # Запустить модель
engee.close( name_model, force=true ); # Закрыть модель
else
model = engee.load( Path, force=true ) # Загрузить модель
engee.run( model, verbose=true ); # Запустить модель
engee.close( name_model, force=true ); # Закрыть модель
end
return
end;
1. Описание структуры модели
Рассмотрим более детально структурную схему модели:
Формирование сигнала
Данный модуль создает 2 тестовых сигнала, каждый изменяется из которых перемещается в азимутальной и угломестной плоскостях.
- Сигнал (signal): реализует сигнал с помощью псевдослучайно последовательности с нормальным распределением. В блоке можно задать среднеквадратическое отклонение (СКО) амплитуды, математическое ожидание и количество отсчетов в сигнале;
- Объединение (reshape): Объединяет входные сигналы по 2 размерности;
- Направление прихода (Signal directions): формирует закон изменения азимутального и угломестного направления прихода сигнала. На выходе формируется матрица с размерностью [2,L], где L - количество сигналов.
Приемный тракт
Подсистема реализует прием и предварительное усиление пришедшего сигнала для заданной геометрии прямоугольной ФАР (в примере [10,5]) с учетом изменения направления пеленга сигнала.
- Прямоугольная ФАР (Narrowband Rx Array): используется для моделирования приема сигнала прямоугольной ФАР с перестрой луча согласно матрице азимутально-угломестного направления;
- Усилитель (Receiver Preamp): моделирует прохождения сигнала через МШУ для заданного усиления и коэффициента шума (шумовой температуры) ;
Алгоритмы пеленга
В данном модуле непосредственно решается задача определения направления на цель по азимуту и углу места с помощью алгоритмов MVDR Spectrum и Beamscan Spectrum.
- MVDR Spectrum: реализует алгоритм минимизации дисперсии отклика для расчета пеленга сигнала;
- Beamscan Spectrum: реализует алгоритм спектрального анализа луча сканирования для расчета пеленга сигнала.
Общая структурная схема системной модели пеленгации приведена ниже:

2. Сценарий работы модели и инициализация входных параметров
Для инициализации входных параметров модели подключим конфигурационный файл "Param2DBeamscanMVDRDOA.jl".
include("$(@__DIR__)/Param2DBeamscanMVDRDOA.jl");
В рассматриваемом примере используется 2 источника сигналов с различными сценариями движения - изменения пеленга:
- источник-1 перемещается из [30° аз., 10° мест.] в [50° аз., -5° мест.]
- источник-2 (с меньшей мощностью на 3 дБ) перемещается из [50° аз., -5° мест.] в [30° аз., 10° мест.]
Диапазон сканирования зададим -10:60 по азимуту и -20:20 по углу места.
Если требуется изменить значения параметров, то откройте данный файл, отредактируйте необходимые параметры и сохраните изменения. Если параметры обновлены, в так случае будет выведено сообщение : "Параметры инициализированы успешно!". В противном случае, проверьте корректность изменений, внесенных в конфигурационный файл.
3. Запуск модели
Запустим симуляцию модели с помощью ранее инициализированной функции run_model:
run_model("2DBeamscanMVDRDOA", @__DIR__);
Как только диалоговая информация будет гласить "Progress 100%" - значит модель отработала успешно.
4. Считывание выходных данных
Результаты моделирования для залогированных выходов записываются в переменную "simout" . Воспользуемся функцией DF2Arr для считывания данных на выходе алгоритмов пеленгации:
sim = collect(simout) # извлекаем вектор залогированных переменных
Ang1,_ = DataFrame2Array(sim[1]) # Результирующее направление на выходе алгоритма MVDR
Ang2,_ = DataFrame2Array(sim[4]) # Результирующее направление на выходе алгоритма Beamscan
Y1,_ = DataFrame2Array(sim[2]) # Карта откликов на выходе алгоритма MVDR
Y2,_ = DataFrame2Array(sim[3]); # Карта откликов на выходе алгоритма Beamscan
Далее, с помощью функции plot_map_doa визуализируем результат работы алгоритмов для заданного шага моделирования:
n_step =3 # номер шага моделирования
plot_map_doa(Y1,param2DBeamscanMVDRDOA,n_step;
title="Результат работы MVDR Spectrum на $(n_step) шаге моделирования"
)
n_step = 3 # номер шага моделирования
plot_map_doa(Y2,param2DBeamscanMVDRDOA,n_step;
title="Результат работы BeamScan Spectrum на $(n_step) шаге моделирования"
)
5. Анимация результатов моделирования
Для построения анимации работы алгоритмов воспользуемся функцией "cacl_matrix_visual", результатом работы которой формируется набор изображений, сохраняемый в формате видео с расширением.gif:
# Алглоритм MVDR Spectrum
anim1 = calc_matrix_visual(Y1,param2DBeamscanMVDRDOA;title_name="Результат работы MVDR Spectrum")
gif(anim1, "Visual_MVDR.gif", fps = 10);
В результате, в файловом браузере текущей директории добавится файл с расширением gif.
Результат анимации для MVDR приведен ниже:

Аналогично вычислим динамическую анимацию для результата работы алгоритма BeamScan Spectrum:
# Алглоритм BeamScan Spectrum
anim2 = calc_matrix_visual(Y2,param2DBeamscanMVDRDOA;title_name="Результат работы BeamScan Spectrum")
gif(anim2, "Visual_BeamScan.gif", fps = 10);

Анализируя полученные графики, можно отметить, что алгоритм MVDR Spectrum имеет более высокую разрешающую способность относительно BeamScan Spectrum: при приближении целей когда расстояние междуними меньше ширины луча, их направление прихода невозможно точно определить с помощью метода сканирования луча. При этом, алгоритм MVDR Spectrum сильно ослабляет сигнал в случае даже небольшого отклонения от целевого направления, поэтому наблюдаются "мерцания" целей на диаграмме углов.
Заключение
Таким образом, В примере было рассмотрено моделирование приемного тракта с блоком обработки по угловым координатам и проведен сравнительный анализ алгоритмов пеленгации MVDR Spectrum и BeamScan Spectrum.
Результаты моделирования показали достоинства и недостатки данных алгоритмов:
- MVDR Spectrum - целесообразно использовать когда с хорошей точностью известны направления прихода сигнала поскольку обладает высокой разрешающей способностью;
- Beamscan Spectrum - применим в случае повышенных требований на детектирование цели т.к. обладает лучшей помехоустойчивостью, уступаю разрешающей способностью.