Оптимизация алгоритмов LFM
От MATLAB к Julia: оптимизация алгоритмов согласованной и доплеровской фильтрации для двухточечных радиолокационных целей
В современных радиолокационных системах высокое разрешение по дальности и скорости достигается за счёт использования сложных зондирующих сигналов — в частности, сигналов с линейной частотной модуляцией (ЛЧМ), — и последующей цифровой обработки принимаемых эхо-сигналов. Представленные реализации на языках MATLAB и Julia решают задачу моделирования вторичной обработки сигналов для двух точечных целей, различающихся по дальности и радиальной скорости.
Оба алгоритма опираются на следующие теоретические положения.
1. ЛЧМ-сигнал и согласованная фильтрация
Зондирующий импульс представляет собой косинусоидальное колебание с линейно изменяющейся мгновенной частотой. В комплексной форме эталонный сигнал на интервале длительности описывается выражением:
где:
- — несущая частота;
- — девиация частоты за время импульса ;
- — весовое окно (окно Гаусса с параметром ), предназначенное для подавления боковых лепестков сжатого импульса.
Согласованная фильтрация выполняется в частотной области: вычисляется быстрое преобразование Фурье (БПФ) принимаемого сигнала и эталона, производится перемножение спектра принимаемого сигнала с комплексно сопряжённым спектром эталона, после чего выполняется обратное БПФ. На выходе согласованного фильтра формируется сжатый импульс, амплитуда которого пропорциональна энергии отражённого сигнала.
2. Импульсная последовательность и доплеровская обработка
Передающее устройство излучает импульсов с периодом повторения . Сигнал, отражённый от цели, находящейся на дальности и движущейся с радиальной скоростью , поступает на приём с задержкой:
и приобретает доплеровский сдвиг частоты:
В представленных алгоритмах дополнительно вводится перенос на промежуточную частоту (где — частота дискретизации), что позволяет использовать единую комплексную экспоненту:
После согласованной фильтрации каждого импульса формируется двумерная матрица «дальность — номер импульса», по второму измерению которой (медленному времени) производится БПФ. Пик полученного спектра соответствует доплеровской частоте, а следовательно, и радиальной скорости цели.
3. Формулы для определения дальности и скорости
Дискретное время квантуется с шагом . Номер дальностного канала (индекс строки в выходном массиве) однозначно связан с временной задержкой соотношением:
Масштаб по оси дальности на графиках пересчитывается в метры с использованием скорости света . Скоростные каналы определяются по формуле:
что соответствует положению максимума доплеровского спектра после выполнения БПФ по точкам.
Оба программных кода реализуют полный цикл обработки: синтез ЛЧМ-сигнала, моделирование эхо-сигналов с учётом задержки и доплеровского сдвига, согласованную и доплеровскую фильтрацию, а также визуализацию сжатых импульсов в логарифмическом масштабе (дБ) с нормировкой на максимум для каждой цели. Различие между вариантами заключается в способе формирования сигнала (векторизованный подход в Julia против циклического в MATLAB) и в синтаксисе вызова функций БПФ; при этом математическая идентичность результатов полностью сохраняется.
-
EngeeDSP – библиотека для цифровой обработки сигналов.
Применение в примере:gausswin(окно Гаусса),fft/ifft(прямое и обратное быстрое преобразование Фурье) при согласованной фильтрации и доплеровской обработке. -
MATLAB – интерфейс для вызова MATLAB из Julia.
Применение в примере: макросmat"..."для выполнения команд MATLAB (например, смена директорииcd, запуск скриптаrun MATLAB.m) и замер времени выполнения MATLAB-версии. -
LinearAlgebra – библиотека для линейной алгебры.
Применение в примере: в представленном коде явно не используется (оставлена для потенциальных матричных операций, например, для умножения матриц или решения систем уравнений). -
FileIO – библиотека для загрузки и сохранения файлов различных форматов.
Применение в примере: функцияloadдля чтения изображений (plot_matlab.png,plot_julia.png) с последующим отображением в среде выполнения.
using EngeeDSP, MATLAB, LinearAlgebra, FileIO
Фрагмент кода представленный ниже выполняет три действия:
mat"cd $(@__DIR__)"– через интерфейс MATLAB меняет текущую рабочую директорию MATLAB на ту же, где находится текущий Julia-скрипт (чтобы MATLAB мог найти свой файл).@time mat"run MATLAB.m"– запускает MATLAB-скриптMATLAB.mв среде MATLAB, замеряя время выполнения этой операции.img = load(...)иdisplay(img)– загружает сгенерированный MATLAB-скриптом PNG-файл (plot_matlab.png) и отображает его в среде Julia.
mat"cd $(@__DIR__)"
@time mat"run MATLAB.m"
img = load("$(@__DIR__)/plot_matlab.png")
display(img)
Код на Julia логически идентичен исходному MATLAB коду, но оптимизирован по скорости. Основные изменения:
-
Объединение экспонент — доплеровский сдвиг и перенос на промежуточную частоту (
fs/4) скомбинированы в одну экспонентуexp(1im * 2π * (2vel/λ + fs/4) * t), что эквивалентно исходному перемножению двух экспонент. -
Удаление лишних переменных —
sig_get_firstиabs_sig_firstне используются в финальном результате, поэтому они отсутствуют. -
Точность границ — благодаря тому, что
t_delкратно1/fs(5200 отсчётов), аt_impдаёт ровно 90 отсчётов, индексыrows = i_start:i_endполностью совпадают с ненулевыми позициями в исходном коде.
Таким образом, графики и числовые значения должны совпадать с точностью до машинной погрешности. Вы можете запустить оба варианта и сравнить выходные массивы (например, out_sig_julia), чтобы убедиться.
@time include("Julia.jl")
img = load("$(@__DIR__)/plot_julia.png")
display(img)
Заключение
В работе рассмотрены две реализации алгоритма вторичной обработки радиолокационного сигнала — на языках MATLAB и Julia. Обе версии корректно воспроизводят основные этапы обработки:
- формирование ЛЧМ-импульса с весовым окном;
- моделирование эхо-сигналов от двух целей с различными параметрами: дальность км и км, скорости м/с и м/с;
- согласованную фильтрацию в частотной области;
- доплеровскую обработку по пачке из импульсов;
- построение нормированных дальностных портретов.
Полученные результаты (см. рисунки plot_matlab.png и plot_julia.png) демонстрируют, что сжатые импульсы имеют характерную ширину, определяемую разрешающей способностью по дальности. Для ЛЧМ-сигнала с девиацией МГц и длительностью мкс разрешающая способность составляет около м. Отсутствие смещения по дальности для неподвижной цели и наличие корректного сдвига (в пределах нескольких метров) для движущейся цели подтверждают правильную работу доплеровской фильтрации.
Ключевое различие между реализациями заключается в производительности. Версия на Julia, использующая векторизованное заполнение только ненулевых отсчётов и предварительный расчёт экспоненциальных множителей, выполняется быстрее: с против с в MATLAB при сопоставимых условиях. Это обусловлено меньшим числом итераций и более эффективным управлением памятью. При этом оба подхода дают идентичные числовые результаты с точностью до машинной погрешности, что подтверждает корректность проведённой оптимизации.

