exponenta event banner

Сопровождение цели с помощью моноимпульсного радара суммарной разности

В этом примере показано, как использовать phased.SumDifferenceMonopulseTracker Система object� для отслеживания движущейся цели. phased.SumDifferenceMonopulseTracker трекер решает направление цели из сигналов, поступающих на однородную линейную матрицу (ULA). Моноимпульсный алгоритм суммарной разности требует предварительной оценки целевого направления, которое предполагается близким к фактическому направлению. В трекере текущая оценка служит предшествующей информацией для следующей оценки. Целью является узкополосный излучатель 500 МГц, движущийся с постоянной скоростью 800 kph. Для массива ULA вектор управления зависит только от широкополосного угла. Широкополосный угол - это угол между направлением источника и плоскостью, перпендикулярной линейному массиву. Любой поступающий сигнал определяется его широким углом.

Создание целевой платформы и определение ее движения

Предположим, что цель находится в [0,10000,20000] относительно РЛС в локальной системе координат РЛС. Предположим, что цель движется вдоль оси y в направлении радара со скоростью 800 км/ч.

x0 = [0,10000,20000].';
v0 = -800;
v0 = v0*1000/3600;
targetplatform = phased.Platform(x0,[0,v0,0].');

Настройка массива ULA

Моноимпульсный трекер использует решетку ULA, которая состоит из 8 изотропных антенных элементов. Расстояние между элементами устанавливают равным половине длины волны сигнала.

fc = 500e6;
c = physconst('LightSpeed');
lam = c/fc;
antenna = phased.IsotropicAntennaElement('FrequencyRange',[100e6,800e6],...
    'BackBaffled',true);
array = phased.ULA('Element',antenna,'NumElements',8,...
    'ElementSpacing',lam/2);

Предположим, что сигнал узкополосный. Этот вид сигнала может быть смоделирован с использованием phased.SteeringVector Системный объект.

steervec = phased.SteeringVector('SensorArray',array);

Цикл отслеживания

Инициализируйте цикл отслеживания. Создать phased.SumDifferenceMonopulseTracker Системный объект.

tracker = phased.SumDifferenceMonopulseTracker('SensorArray',array,...
    'PropagationSpeed',c,...
    'OperatingFrequency',fc);

На каждом временном шаге вычисляют широкополосный угол цели относительно массива. Установите время шага 0,5 секунды.

T  = 0.5;
nsteps = 40;
t = [1:nsteps]*T;

Настройка векторов данных для хранения и отображения результатов

rng = zeros(1,nsteps);
broadang_actual = zeros(1,nsteps);
broadang_est = zeros(1,nsteps);
angerr = zeros(1,nsteps);

Пройдитесь по контуру отслеживания. Сначала предоставьте оценку начального широкополосного угла. В этом моделировании фактический широкополосный угол известен, но добавляет погрешность в пять градусов.

[tgtrng,tgtang_actual] = rangeangle(x0,[0,0,0].');
broadang0 = az2broadside(tgtang_actual(1),tgtang_actual(2));
broadang_prev = broadang0 + 5.0; % add some sort of error
  1. Вычислите фактический широкополосный угол, broadang_actual.

  2. Вычислите сигнал, signl, от фактического широкополосного угла, используя phased.SteeringVector Системный объект.

  3. Использование phased.SumDifferenceMonopulseTracker трекер, оценка широкополосного угла, broadang_est, от сигнала. Широкополосный угол, полученный из предыдущего шага, служит начальной оценкой для текущего шага.

  4. Вычислите разницу между расчетными широкими углами, broadang_estи фактический широкополосный угол, broadang_actual. Это мера того, насколько хорошо решение.

for n = 1:nsteps
    x = targetplatform(T);
    [rng(n),tgtang_actual] = rangeangle(x,[0,0,0].');
    broadang_actual(n) = az2broadside(tgtang_actual(1),tgtang_actual(2));
    signl = steervec(fc,broadang_actual(n)).';
    broadang_est(n) = tracker(signl,broadang_prev);
    broadang_prev = broadang_est(n);
    angerr(n) = broadang_est(n) - broadang_actual(n);
end

Результаты

Постройте график диапазона как функции времени, показывающего точку ближайшего приближения.

plot(t,rng/1000,'-o')
xlabel('time (sec)')
ylabel('Range (km)')

Figure contains an axes. The axes contains an object of type line.

Постройте график расчетного широкополосного угла как функции времени.

plot(t,broadang_actual,'-o')
xlabel('time (sec)')
ylabel('Broadside angle (deg)')

Figure contains an axes. The axes contains an object of type line.

Моноимпульсный трекер не может решить угол направления, если угловое разделение между выборками слишком велико. Максимально допустимое угловое разделение составляет приблизительно половину ширины луча от null до null массива. Для 8-элементного, с полуволновым интервалом ULA ширина полуволн составляет приблизительно 14,3 градуса по ширине. В этом моделировании наибольшая угловая разница между образцами

maxangdiff = max(abs(diff(broadang_est)));
disp(maxangdiff)
    0.2942

Угловое разделение между образцами меньше, чем полулучевая ширина.

Постройте график ошибки угла. Это разница между расчетным углом и фактическим углом. На графике показана очень небольшая погрешность, порядка микродегреев.

plot(t,angerr,'-o')
xlabel('time (sec)')
ylabel('Angle error (deg)')

Figure contains an axes. The axes contains an object of type line.

См. также

Функции

Объекты