Согласованная фильтрация данных
После предварительной обработки сигнала следуют операции согласованной обработки сигнала, которая может быть выполнена:
1) При помощи операции свертки:
Оглавление
А.Н. Семёнов
Методические указания к домашнему заданию по курсу
«РАДИОЛОКАЦИОННЫЕ ИНФОРМАЦИОННЫЕ И ИЗМЕРИТЕЛЬНЫЕ КОМПЛЕКСЫ»
t | |||||
∫ | h (τ)⋅x (t−τ)d τ | ||||
y (t)= | |||||
где | y (t)- результат операции | свертки, h(τ) - опорная | функция (импульсная | ||
характеристика), которая является | зеркальным отражением | отраженного сигнала, |
x (t−τ) - отсчеты сворачиваемой последовательности (записи сигнала) — это выборка
данных по всем каналам дальности для одного углового направления, t=τN +τ K - длина сворачиваемой последовательности (в цифровом виде это сумма длин сворачиваемого
массива с длиной опорной функции в отсчетах, взятых с частотой дискретизации), в
которой
τN
- длина сворачиваемой последовательности,
τK
- длина опорной функции
— это длительность опорных сигналов.
Опорная последовательность h(τ)
генерируется,
исходя
из
выбранной
модели
сигнала (ЛЧМ или СКИ) по следующим выражениям:
h | СКИ | (τ)= A | ⋅ej⋅2π f пч τ | (5) | |||||||||||||||
СКИ | |||||||||||||||||||
h | ЛЧМ | (τ)= A | ⋅ej⋅π f дев (τ)⋅τ | (6) | |||||||||||||||
ЛЧМ | |||||||||||||||||||
2) При помощи операции быстрой свертки: | |||||||||||||||||||
H (f )=FFT {w (t)⋅h (t)} | (7) | ||||||||||||||||||
X (f )=FFT {x (t)} | (8) | ||||||||||||||||||
y (t)=iFFT { | (9) | ||||||||||||||||||
H (f )⋅X (f )} | |||||||||||||||||||
где y (t) | - результат выполнения | быстрой | свёртки, | FFT {...} | - оператор | прямого | |||||||||||||
преобразования БПФ, | iFFT {...}- | оператор | обратного | преобразования БПФ, | - | ||||||||||||||
X | |||||||||||||||||||
оператор | комплексного | сопряжения, | X (f ) | - | БПФ | от | сворачиваемой | ||||||||||||
последовательности, | H (f ) | - БПФ от опорной последовательности, | w (t) | - весовая | |||||||||||||||
функция. Для СКИ сигнала она равна «1» и её можно опустить, а для ЛЧМ сигнала она вычисляется следующим образом (окно Хэмминга):
w (t)=0,53836−0,46164⋅cos(2⋅π t) | (10) |
Для реализации согласованной фильтрации применим ООП подход и создадим класс ConvData (файл ConvData.m), описывающий блок выполнения свёртки по данным класса RawData. Запуск свёртки также будем осуществлять через скрипт (файл main.m)
Оглавление
А.Н. Семёнов
Методические указания к домашнему заданию по курсу
«РАДИОЛОКАЦИОННЫЕ ИНФОРМАЦИОННЫЕ И ИЗМЕРИТЕЛЬНЫЕ КОМПЛЕКСЫ»
Файл ConvData.m
classdef ConvData < handle
%ConvData осуществляет согласованную фильтрацию данных
properties
m_RawData %указатель на объект класса RawData
%определяем параметры опорного ски сигнала
ski_tau = 20e-9; %длительность импульса, сек
ski_amp = 1; %амплитуда опорного импульса, отс
%определяем параметры опорного лчм сигнала
lfm_tau = 5e-6; %длительность импульса, сек
lfm_df = 50e6; %девиация частоты сигнала, Гц
lfm_amp = 1; %амплитуда опорного импульса, отс
%определяем параметры дискретизации сигнала
f_samp = 400e6; %Гц
f_if = 0; %промежуточная частота сигнала после гетеродинирования
h_ski
h_lfm
convolved_data
%опорный ски сигнал
%опорный лчм сигнал
%выходной массив данных
%параметры отображения сигнала
med %медиана амплитуд данных на входе
end
methods
function obj = ConvData(hRawData) %конструктор объекта
obj.m_RawData = hRawData; %создаем связь с объектом класса RawData
%создаем опорные сигналы
time = 0:1/obj.f_samp:obj.ski_tau-1/obj.f_samp; %отсчеты времени на длине импульсов %опорный сигнал по формуле (5)
obj.h_ski = obj.ski_amp*exp(1j*2*pi*obj.f_if*time);
obj.h_ski = fliplr(obj.h_ski); %в согл. фильтре ИХ это зеркальное отражение сигнала во времени
time = 0:1/obj.f_samp:obj.lfm_tau-1/obj.f_samp; %отсчеты времени на длине импульсов %опорный сигнал по формуле (6)
obj.h_lfm = obj.lfm_amp*exp(1j*2*pi*(obj.f_if+obj.lfm_df/obj.lfm_tau*time).*time);
obj.h_lfm = fliplr(obj.h_lfm); %в согл. фильтре ИХ это зеркальное отражение сигнала во времени
%определяем параметры отображения
obj.med = median(abs(obj.m_RawData.raw(:)));
end
function convole_time(obj,type) %свертка во временной области
obj.convolved_data = []; %удаляем результаты прошлых вычислений
temp = obj.m_RawData.raw; %исходные данны для свертки
n = size(temp,2); %число сверток по дальности
if strcmp(type,'ski') %обрабатываем ски
m = length(obj.h_ski);
obj.convolved_data = zeros(m+size(temp,1)-1,n);
for ii = 1:n
obj.convolved_data(:,ii) = conv(temp(:,ii),obj.h_ski);
end
else %обрабатываем лчм
m = length(obj.h_lfm);
obj.convolved_data = zeros(m+size(temp,1)-1,n);
for ii = 1:n
obj.convolved_data(:,ii) = conv(temp(:,ii),obj.h_lfm);
end
end
obj.show;
end | convole_fft(obj,type) %свертка в частотной | области | ||
function | ||||
obj.convolved_data = []; | %удаляем результаты | прошлых вычислений | ||
temp | = obj.m_RawData.raw; | %исходные данны для | свертки | |
n = size(temp,2); | %число сверток по дальности |
if strcmp(type,'ski') %обрабатываем ски
m = length(obj.h_ski);
%создаем весовое окно по формуле (10)
wnd = hamming(m)';
%создаем опорный спектр сигнала (т.к. он повернут во
%времени, то комплесного сопряжения не нужно), длина
%спектра должна быть суммой размеров опорной выборки и
%спектра сигнала (формула 7)
H_ski = fft(wnd.*obj.h_ski,m+size(temp,1))';
%размножаем спектр по всем азимутальным каналам
H_ski = repmat(H_ski,1,n);
Оглавление
А.Н. Семёнов
Методические указания к домашнему заданию по курсу
«РАДИОЛОКАЦИОННЫЕ ИНФОРМАЦИОННЫЕ И ИЗМЕРИТЕЛЬНЫЕ КОМПЛЕКСЫ»
%вычисляем спектр сигнала в каждом угловом канале (ф.8)
H_RawData = fft(temp,m+size(temp,1),1);
%осуществляем свертку сигнала (ф.9)
obj.convolved_data = ifft(H_RawData.*H_ski);
else %обрабатываем лчм
m = length(obj.h_lfm);
%создаем весовое окно по формуле (10)
wnd = hamming(m)';
%создаем опорный спектр сигнала (т.к. он повернут во
%времени, то комплесного сопряжения не нужно), длина
%спектра должна быть суммой размеров опорной выборки и
%спектра сигнала ф.(7)
H_lfm = fft(wnd.*obj.h_lfm,m+size(temp,1))';
%размножаем спектр по всем азимутальным каналам
H_lfm = repmat(H_lfm,1,n);
%вычисляем спектр сигнала в каждом угловом канале ф.(8)
H_RawData = fft(temp,m+size(temp,1),1);
%осуществляем свертку сигнала ф.(9)
obj.convolved_data = ifft(H_RawData.*H_lfm);
end
obj.show;
end
function show(obj)
figure;
subplot(1,2,1);
imagesc(abs(obj.m_RawData.raw),[0 100*abs(obj.med)]);
subplot(1,2,2);
imagesc(abs(obj.convolved_data),[0 100*abs(obj.med)]);
end
end
end
Файл main.m
convdata = ConvData(rlsdata); convdata.convole_time('ski');
%создаем объект класса ConvData
%выполняем метод свертки во временной области
До свёртки | После свёртки | ||
Рисунок 4 - Результаты согласованной фильтрации данных
Селекция движущихся целей
Операция СДЦ выполняется для всех каналов дальности, при этом возможна некогерентная (с потерей информации о скорости цели) и когерентная (с сохранением информации о скорости, т.е. доплеровских частот в обработанных данных).
Оглавление
А.Н. Семёнов
Методические указания к домашнему заданию по курсу
«РАДИОЛОКАЦИОННЫЕ ИНФОРМАЦИОННЫЕ И ИЗМЕРИТЕЛЬНЫЕ КОМПЛЕКСЫ»
Некогерентная СДЦ реализуется при помощи операции однократного
череспериодного вычитания (ЧПВ, ЧПК): | |
uвых (t)=|uвх (t)|−|uвх (t−T п)| | (11) |
Когерентная СДЦ реализуется при помощи цифровой фильтрации: | |
U вых (f )=FFT {uвх (t)} | (12) |
Uвых (f )=Uвых (f )⋅H (f ) | (13) |
uвых (t)=iFFT {U вых (f )} | (14) |
где H (f )- АЧХ фильтра подавления, равная 0 в 0, ±1, ±2 доплеровских каналах при
восстановлении отметок от движущихся целей, либо не равная 0 только в выбранных каналах для получения карты местных отражений.
Операции (13) - (14), как правило, используются только, для наглядного представления результатов обработки. На практике данные с выхода СДЦ, формула (12), сразу передаются на устройство пороговой обработки для обнаружения целей.
Для определения скорости целей с хорошим разрешением в когерентной СДЦ необходима длительная пачка отраженных импульсов. На практике длительность пачки импульсов в обзорной РЛС такова, что не представляется возможным выделение малоподвижных целей на фоне отражений от стационарных объектов. Для решения этой задачи применяют межобзорную обработку сигналов (МО).
Идея МО сигналов заключается в том, что малоподвижная цель изменяет свое положение в пространстве за продолжительный промежуток времени, сравнимый с периодом обзора РЛС. При этом области пространства, которые малоподвижная цель пересекает, меняют свои статистические параметры. Таким образом, для селекции малоподвижных целей необходимо cформировать карту статистических параметров в каждом элементе разрешения и сравнивать ее с текущими отражениям в заданном направлении:
uвых (t)=|uвх (t)|−|mвх (N )|
,
(15)
где
|uвх (t)|
- модуль амплитуд в текущем периоде зондирования в каждом элементе
разрешения,
|mвх( N )|
- карта математических ожиданий в каждом элементе разрешения,
полученная за N обзоров.
Качество подавления фильтров СДЦ можно характеризовать как отношение мощностей сигнала до и после обработки в выбранном канале дальности, в котором присутствует мощная стационарная цель.
Оглавление
А.Н. Семёнов
Методические указания к домашнему заданию по курсу
«РАДИОЛОКАЦИОННЫЕ ИНФОРМАЦИОННЫЕ И ИЗМЕРИТЕЛЬНЫЕ КОМПЛЕКСЫ»
P0 | (16) | |
K п= Pсдц |
Для реализации процедуры СДЦ фильтрации и ее характеристики применим ООП подход. Создадим класс SDC (файл SDC.m), описывающий блок селекции движущихся целей. Запуск процедур СДЦ будем осуществлять через скрипт (файл main.m)
Файл SDC.m
classdef SDC < handle
%SDC осуществляет селекцию движущищхся целей
properties | %указатель на объект класса ConvData | |
m_ConvData | ||
%определяем параметры когерентной СДЦ | ||
n_chain = 8 | %число отсчетов в пачке | |
n_step = 4 | %шаг смещения пачки | |
wnd | %весовое окно на пачку | |
zCh = -2:2; | %номера нулевых каналов СДЦ (содержат отражания от земли и стац. объектов) | |
sdc_data | %выходной массив данных | |
sdc_ang | %выходной массив кодов углов данных | |
%параметры отображения сигнала | ||
med | %медиана амплитуд данных на входе | |
end |
methods
function obj = SDC(hConvData) %конструктор объекта
obj.m_ConvData = hConvData; %создаем связь с объектом класса ConvData
%создаем окно для наложения на пачку
obj.wnd = ones(1,obj.n_chain);
%определяем параметры отображения
obj.med = median(abs(obj.m_ConvData.convolved_data(:)));
end
function chpk1(obj) %однократное череспериодное вычитание
obj.sdc_data = []; | %удаляем результаты прошлых | вычислений | ||
temp = obj.m_ConvData.convolved_data; | %исходные | данны для сдц | ||
n = size(temp,2); | %число периодов излучения сигнала | |||
obj.sdc_data = abs(temp(:,2:n)) - abs(temp(:,1:n-1)); | ||||
obj.sdc_ang = 2:n; | ||||
obj.show; | ||||
end | фильтрацию | |||
function sdc_fft(obj) %когерентнаф сдц через цифровую | ||||
obj.sdc_data = []; | %удаляем результаты прошлых | вычислений |
temp = obj.m_ConvData.convolved_data; %исходные данны для свертки
n = size(temp,2); %число периодов по дальности
n = fix(n/obj.n_step)*obj.n_step; %общее число обрабатываемых каналов
temp(:,(n+1):end) = []; %удаляем на обрабатываемые данные
obj.sdc_data = zeros(size(temp,1),obj.n_chain,n/obj.n_step-1); for ii = 1:n/obj.n_step-1
temp2 = fft(temp(:,(ii-1)*obj.n_step+(1:obj.n_chain)),[],2); %формула (12)
obj.sdc_data(:,:,ii) = fftshift(temp2,2);
end
obj.sdc_ang = 1:obj.n_step:n-obj.n_step;
obj.show;
end
function show(obj)
figure;
subplot(1,2,1);
imagesc(abs(obj.m_ConvData.convolved_data),[0 10*abs(obj.med)]); xlabel('Угол, отс');
ylabel('Дальность, отс');
subplot(1,2,2);
%проверка типа СДЦ
sz = size(obj.sdc_data);
if length(sz)>2
%когерентная сдц
viewdata = obj.sdc_data;
viewdata(:,obj.n_chain/2+obj.zCh,:) = 0; %формула (13)
Оглавление
А.Н. Семёнов
Методические указания к домашнему заданию по курсу
«РАДИОЛОКАЦИОННЫЕ ИНФОРМАЦИОННЫЕ И ИЗМЕРИТЕЛЬНЫЕ КОМПЛЕКСЫ»
viewdata = ifft(ifftshift(viewdata,2),[],2); %формула (14)
viewdata = viewdata(:,obj.n_chain/2,:);
viewdata = permute(viewdata,[1,3,2]);
imagesc(abs(viewdata),[0 10*abs(obj.med)]);
else
%некогерентая сдц
imagesc(abs(obj.sdc_data),[0 10*abs(obj.med)]);
end
xlabel('Угол, отс');
ylabel('Дальность, отс');
end
function Kp = calc_kp(obj,r,a)
%оценка коэффициента подавления в выбранной точке
%проверка типа СДЦ
sz = size(obj.sdc_data);
if length(sz)>2
viewdata = obj.sdc_data;
viewdata(:,obj.n_chain/2+obj.zCh,:) = 0; %формула (13) viewdata = ifft(ifftshift(viewdata,2),[],2); %формула (14) viewdata = viewdata(:,obj.n_chain/2,:);
viewdata = permute(viewdata,[1,3,2]);
amp_sdc = interp1(obj.sdc_ang,viewdata(r,:),a);
Kp = 20*log10(abs(amp_sdc)/abs(obj.m_ConvData.convolved_data(r,a)));
else
Kp = 20*log10(abs(obj.sdc_data(r,a))/abs(obj.m_ConvData.convolved_data(r,a)));
end
end
function map = form_map_data(obj)
%формирование исходных данных для карты местности по сдц
map = obj.sdc_data;
idx = ones(1,obj.n_chain);
idx(obj.n_chain/2+obj.zCh) = 0;
map(:,boolean(idx),:) = 0; %формула (13)
map = ifft(ifftshift(map,2),[],2); %формула (14)
map = map(:,obj.n_chain/2,:);
map = permute(map,[1,3,2]);
end
end
end
Файл main.m
sdcdata = SDC(convdata); | %создаем объект класса SDC |
sdcdata.chpk1; | %выполняем операцию СДЦ |
Оглавление
А.Н. Семёнов
Методические указания к домашнему заданию по курсу
«РАДИОЛОКАЦИОННЫЕ ИНФОРМАЦИОННЫЕ И ИЗМЕРИТЕЛЬНЫЕ КОМПЛЕКСЫ»
До СДЦ (ЧПК-1) | После СДЦ (ЧПК-1) |
Рисунок 4 - Результаты селекции движущихся целей