Оценка тактико-технических параметров — КиберПедия 

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

Оценка тактико-технических параметров

2017-11-22 297
Оценка тактико-технических параметров 0.00 из 5.00 0 оценок
Заказать работу

Постановка задачи

 

РЛС кругового обзора засняла квадратуры сигналов в полярной системе координат. Записанные данные хранятся в файлах <типсигнала_номеробзора>.mat. Квадратуры содержатся в двумерной матрице * raw, где строки — каналы дальности, а столбцы — угловые каналы. Коды углов для каждого столбца содержаться в массиве * angels. * - обозначает тип сигнала: сверх-короткий импульс (СКИ), либо линейно-частотно модулированный (ЛЧМ) импульс.

 

Известно, что в качестве зондирующих сигналов РЛС кругового обзора использует простой радиоимпульс длительностью 20 нс, либо ЛЧМ радиоимпульс длительностью 5 мкс и девиацией 50 МГц. Частота дискретизации сигнала составляет 400 МГц (дискрет по дальности — 0,375м), датчик углового положения антенны фиксирует изменение угла с дискретом по азимуту – 0,0036гр.

 

Произвести оценку тактико-технические характеристик системы и представить их в таблице. Сделать обработку радиолокационных данных согласно варианту за несколько периодов обзора и представить радиолокационный портрет местности с обозначением целевых отметок на нем. Варианты заданий представлены в конце методических указаний.

 

При выполнении задания все расчеты рекомендуется проводить в MATLAB версии не ниже 7.0, исходные коды программ прикладываются к расчетно-пояснительной записке.

 

Написанные программы необходимо сопровождать комментариями и придерживаться объектно-ориентированного подхода, где это целесообразно и возможно.

 

Разбор решения задачи

 

Предварительная обработка сигналов

 

Для устранения систематических ошибок при осуществлении операций согласованной фильтрации и последующего обнаружения сигнала необходимо проверить и подготовить исходные данные. Такая подготовка состоит из 3-х этапов:

1) Произвести компенсацию смещения квадратур

M 0= n 1 m ∑ ∑ ai, j (1)

i j

 

где M 0 - смещение действительной и мнимой части квадратур сигнала; m - длина шумовой выборки данных, которая должна быть взята в области (строки), где отсутствуют

 

цели и пассивные помехи от местных отражателей; n - число записанных каналов по


 

азимуту в исходном массиве данных (столбцы);


 

 

ai, j


 

 

- исходный массив квадратур

 


 

сигнала (строки — дальность (задержка сигнала по времени).

 

Шумовую выборку необходимо выбрать из числа последних каналов дальности в массиве исходных данных.

 

2) Оценить баланс мощностей реальной и мнимой частей квадратур сигнала

D = 1 ⋅∑ ∑(R e (aM))2 (2)

R e n ⋅(m −1) i j i, j 0

 

 

Оглавление

А.Н. Семёнов

 

Методические указания к домашнему заданию по курсу

«РАДИОЛОКАЦИОННЫЕ ИНФОРМАЦИОННЫЕ И ИЗМЕРИТЕЛЬНЫЕ КОМПЛЕКСЫ»


                                                 
  D I m =         (I m (a i, j M   ))2 (3)        
                 
          ∑∑                        
        n ⋅(m −1) i   j                                
где DR e , DI m - оценка дисперсий действительной и мнимой составляющих квадратур  
сигнала.                                            
    3) Компенсация смещения и разбаланса мощности квадратур  
  U k,l =   R e (a k,l M   )+ j         I m (a k,l M   ) (4)  
               
      DRe         DI m          
где U k,l - скомпенсированные квадратуры сигнала, ak,l - исходный полный массив  

квадратур сигнала (строки — дальность (задержка сигнала по времени).

 

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

 

%проводим медианную фильтрацию данных в логарифмическом масштабе, чтобы %легче было продетектировать границу зон аттенюации (усиления) cutrange = medfilt1(20*log10(abs(single(data.skiraw(:,1)))),50); plot(cutrange);

 

xlabel('Каналы дальности, отс');

ylabel('Амплитуда, отс');

 

Рисунок 2 — Сигнал в азимутальном канале (развертка по дальности)

 

Из рисунка видно, что в данных можно выделить 3 зоны с разными коэффициентами усиления. Определяем по рисунку границы этих зон для последующего рафинирования.

 

 

Оглавление

А.Н. Семёнов

 

Методические указания к домашнему заданию по курсу

«РАДИОЛОКАЦИОННЫЕ ИНФОРМАЦИОННЫЕ И ИЗМЕРИТЕЛЬНЫЕ КОМПЛЕКСЫ»


 

Для решения этой задачи применим объектно-ориентированный подход (ООП). Для этого создадим класс (файл RawData.m), описывающий входные данные для последующей обработки и выполняющий автоматически заданные операции. Экземпляр класса будем создавать в скрипте (файл main.m), который необходимо запускать для загрузки данных.

 

Файл RawData.m

 

classdef RawData < handle %наследник глобального класса hanlde в матлабе %RawData описывает загрузка данных РЛС и их "рафинирование"

properties %имя файла  
fname  
fpath %путь к файлу  
raw %массив амплитуд в координатах дальность-угол  
angles %массив кодов углов в отсчетах  

m %медиана абсолютных амплитуд в файле flag_raf%флаг рафинирования

mean_raw = zeros(1,3); %мат ожидание шумов

 

disp_re = zeros(1,3); %дисперсия вещественной части шумов disp_im = zeros(1,3); %дисперсия мнимой части шумов

 

%выделяем зоны для обработки

 

zone1 = [1:1000];

zone2 = [1001:2000];

 

zone3 = [2001:16000];

end

 

methods

 

function obj = RawData(fpath,fn) %конструктор класса

if nargin < 1

 

obj.open;

else

 

obj.open(fpath,fn);

end

 

%отображение данных для того, чтоб убедиться, что в области %больших дальностей присутствуют только шумы

obj.show;

end

 

function open(obj,fpath,fn) %открытие файла для обработки

if nargin < 1

 

%выбор файла для обработки

[obj.fname, obj.fpath] = uigetfile('*.mat');

 

else

obj.fpath = fpath;

 

obj.fname = fn;

end

 

%приведение типов к float

temp = (load([obj.fpath obj.fname],'skiraw'));

 

obj.raw = single(temp.skiraw);

temp = (load([obj.fpath obj.fname],'skiangles'));

 

obj.angles = single(temp.skiangles);

%вычисление медианы для отображения данных

 

obj.m = median(abs(obj.raw(:)));

%сброс флага рафинирования

 

obj.flag_raf = 0; %обработка не проводилась

end

 

function show(obj) %отображение данных

figure;

 

imagesc(abs(obj.raw),[0 2*obj.m]);

end

 

function rafinate(obj,m)

%выборка данных: все каналы дальности и m последних каналов

 

%дальности

%% зона 1

 

temp = obj.raw(obj.zone1(end)-m:obj.zone1(end),:); %выборка только шумовых отсчетов (исключаем все нешумовые) temp = temp(temp(:) < median(temp(:)));

temp = temp(:);

 

%вычисление мат. ожидания по формуле (1)

obj.mean_raw(1) = mean(temp);

 

%вычисление дисперсий по формуле (2)-(3)

obj.disp_re(1) = var(real(temp)); %дисперсия вещественной части шумов obj.disp_im(1) = var(imag(temp)); %дисперсия мнимой части шумов %компенсация квадратур по фомруле (4)

obj.raw(obj.zone1,:) = 1/sqrt(obj.disp_re(1))*(real(obj.raw(obj.zone1,:))-real(obj.mean_raw(1)))

+...

 

1j/sqrt(obj.disp_im(1))*(imag(obj.raw(obj.zone1,:))-imag(obj.mean_raw(1))); %% зона 2

 

Оглавление

А.Н. Семёнов

 

Методические указания к домашнему заданию по курсу

«РАДИОЛОКАЦИОННЫЕ ИНФОРМАЦИОННЫЕ И ИЗМЕРИТЕЛЬНЫЕ КОМПЛЕКСЫ»


 

temp = obj.raw(obj.zone2(end)-m:obj.zone2(end),:); %выборка только шумовых отсчетов (исключаем все нешумовые) temp = temp(temp(:) < median(temp(:)));

temp = temp(:);

%вычисление мат. ожидания по формуле (1)

 

obj.mean_raw(2) = mean(temp(:));

%вычисление дисперсий по формуле (2)-(3)

 

obj.disp_re(2) = var(real(temp(:))); %дисперсия вещественной части шумов obj.disp_im(2) = var(imag(temp(:))); %дисперсия мнимой части шумов %компенсация квадратур по фомруле (4)

obj.raw(obj.zone2,:) = 1/sqrt(obj.disp_re(2))*(real(obj.raw(obj.zone2,:))-real(obj.mean_raw(2)))

 

+...

1j/sqrt(obj.disp_im(2))*(imag(obj.raw(obj.zone2,:))-imag(obj.mean_raw(2))); %% зона 3

 

temp = obj.raw(obj.zone3(end)-m:obj.zone3(end),:); %выборка только шумовых отсчетов (исключаем все нешумовые) temp = temp(temp(:) < median(temp(:)));

temp = temp(:);

%вычисление мат. ожидания по формуле (1)

 

obj.mean_raw(3) = mean(temp(:));

%вычисление дисперсий по формуле (2)-(3)

 

obj.disp_re(3) = var(real(temp(:))); %дисперсия вещественной части шумов obj.disp_im(3) = var(imag(temp(:))); %дисперсия мнимой части шумов %компенсация квадратур по фомруле (4)

obj.raw(obj.zone3,:) = 1/sqrt(obj.disp_re(3))*(real(obj.raw(obj.zone3,:))-real(obj.mean_raw(3)))

 

+...

1j/sqrt(obj.disp_im(3))*(imag(obj.raw(obj.zone3,:))-imag(obj.mean_raw(3))); %рафинирование выполнено

 

obj.flag_raf = 1;

 

end

end

 

end

 

Файл main.m


 

rlsdata = RawData; rlsdata.rafinate(20); rlsdata.show;


 

 

%создаем объект класса RawData

%выполняем метод класса для рафинирования

 


До рафинирования После рафинирования
   

 

Рисунок 3 — Результаты предварительной обработки сигнала

 

Файл 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вх (tT п)| (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 обзоров.

 

Качество подавления фильтров СДЦ можно характеризовать как отношение мощностей сигнала до и после обработки в выбранном канале дальности, в котором присутствует мощная стационарная цель.

 

 

Оглавление

А.Н. Семёнов

 

Методические указания к домашнему заданию по курсу

«РАДИОЛОКАЦИОННЫЕ ИНФОРМАЦИОННЫЕ И ИЗМЕРИТЕЛЬНЫЕ КОМПЛЕКСЫ»


 

P 0 (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 - Результаты селекции движущихся целей

 

Файл Map.m

 

classdef Map < handle

 

%Map осуществляет формирование карты местных отражений

 

properties    
%параметры карты %массив дальностей  
ranges  
angles %массив кодов углов  
wndSz %число накапливаемых периодов  

 

data_m %карта местности мат ожиданий

 

data_s %карта местности дисперсий

 

shadowZone %карта тени  
k1 = 6; %карта медленных флуктуации  
slowmotionZone  
k2 = 10; %карта быстрых флуктуаций  
sdcZone  
%параметры карты %число использованных периодов при построении карты  
used_periods  
mapFormedFlag %признак сформированной карты  
end    

 

methods

 

function obj = Map(hRIn,hAIn,nWnd,iR) %конструктор объекта obj.wndSz = nWnd;

 

obj.ranges = iR;

 

obj.angles = 1:10000;

 

obj.data_m = [];

obj.data_s = single(zeros(length(obj.ranges),length(obj.angles)));

 

obj.shadowZone = [];

 

obj.slowmotionZone = [];

obj.sdcZone = [];

 

obj.used_periods = 0; %число использованных периодов при построении карты obj.mapFormedFlag = 0; %признак сформированной карты

 

obj.update(hRIn,hAIn);

end

 

function update(obj,dataIn,angIn) %формировние карты местности МО %приведение данных к формату карты по дальности

temp = abs(dataIn(obj.ranges,:));

tempA = zeros(length(obj.ranges),length(obj.angles));

 

angIn(angIn == 0) = 1;

tempA(:,angIn) = temp;

 

if isempty(obj.data_m)

 

obj.data_m = 1/obj.wndSz*tempA;

obj.data_s = 1/obj.wndSz*(tempA-obj.data_m).^2;

 

else

obj.data_m = (obj.wndSz-1)/obj.wndSz*obj.data_m+...

 

1/obj.wndSz*tempA;

obj.data_s = (obj.wndSz-1)/obj.wndSz*obj.data_s+...

 

Оглавление

А.Н. Семёнов

 

Методические указания к домашнему заданию по курсу

«РАДИОЛОКАЦИОННЫЕ ИНФОРМАЦИОННЫЕ И ИЗМЕРИТЕЛЬНЫЕ КОМПЛЕКСЫ»


 

1/obj.wndSz*(tempA-obj.data_m).^2;

 

end

obj.used_periods = obj.used_periods + 1;

 

if obj.used_periods > obj.wndSz

obj.mapFormedFlag = 1;

 

end

if mod(obj.used_periods,obj.wndSz) == 0

 

%сгладить все данные

z = 5001+(-500:500); %азимутальные каналы (параметры системы) mask = zeros(1,10000);

mask(z) = hamming(length(z));

 

for ii = 1:length(obj.ranges)

 

temp = fftshift(fft(obj.data_m(ii,:)));

obj.data_m(ii,:) = ifft(ifftshift(temp.*mask));

 

temp = fftshift(fft(obj.data_s(ii,:)));

obj.data_s(ii,:) = ifft(ifftshift(temp.*mask));

 

end

end

 

end

function show(obj)

 

figure;

if ~isempty(obj.data_m)

 

%вывод мат ожиданий

subplot(1,2,1);

 

temp = obj.data_m(obj.data_m ~= 0);

q_m = quantile(temp(:),0.9);

 

imagesc(obj.data_m,[0 abs(q_m)]);

title('Карта МО');

 

xlabel('Угол, отс');

ylabel('Дальность, отс');

 

colorbar;

subplot(1,2,2);

 

%вывод дисперсий

temp = obj.data_s(obj.data_s ~= 0);

 

q_s = quantile(temp(:),0.9);

imagesc(obj.data_s,[0 abs(q_s)]);

 

title('Карта дисперсий');

xlabel('Угол, отс');

 

ylabel('Дальность, отс');

colorbar;

 

end

end

 

function classificate(obj,r,a) %классификация зон

if obj.used_periods < obj.wndSz

 

fprintf(2,'Недостаточно данных\n');

return

 

end

sigma2 = obj.data_s(r,a);

 

sigma2 = mean(sigma2(:));

obj.shadowZone = obj.k1*sqrt(sigma2) > obj.data_m; obj.slowmotionZone = obj.k2*sqrt(obj.data_s) < obj.data_m; obj.sdcZone = ~or(obj.shadowZone,obj.slowmotionZone);

 

end

function show_types(obj)

 

figure;

if ~isempty(obj.data_m)

 

%вывод теневой области

subplot(1,3,1);

 

imagesc(obj.shadowZone);

title('Теневая область');

 

xlabel('Угол, отс');

ylabel('Дальность, отс');

 

subplot(1,3,2);

%вывод области слабых флуктуаций

 

imagesc(obj.slowmotionZone);

title('Область слабых флуктуаций');

 

xlabel('Угол, отс');

ylabel('Дальность, отс');

 

subplot(1,3,3);

%вывод области сильных флуктуаций

 

imagesc(obj.sdcZone);

title('Область сильных флуктуаций');

 

xlabel('Угол, отс');

ylabel('Дальность, отс');

 

end

end

 

end

end

 

 

Оглавление

А.Н. Семёнов

 

Методические указания к домашнему заданию по курсу

«РАДИОЛОКАЦИОННЫЕ ИНФОРМАЦИОННЫЕ И ИЗМЕРИТЕЛЬНЫЕ КОМПЛЕКСЫ»


 

Файл main.m

 

fnames = dir('files');

%создаем объект класса RawData

 

rlsdata = RawData([fnames(21).folder '\'],fnames(21).name); %выполняем метод класса для рафинирования rlsdata.rafinate(20);

rlsdata.show;

 

%создаем объект класса Map

rawmap = Map(rlsdata.raw,rlsdata.angles,17,1001:2000);

 

for ii = 22:38 %накапливаем карту

rlsdata.open([fnames(ii).folder '\'],fnames(ii).name);

 

rlsdata.rafinate(20);

rawmap.update(rlsdata.raw,rlsdata.angles);

 

end

%отображаем результаты

 

rawmap.show;

%проводим классификацию областей

 

rawmap.classificate(1:250,1500:2000);

rawmap.show_types;

 

Мат. ожидания   Дисперсии  
   
       

 

Рисунок 5 — Карты мат. Ожиданий и дисперсий в зоне 2


 

Оглавление

А.Н. Семёнов

 

Методические указания к домашнему заданию по курсу

«РАДИОЛОКАЦИОННЫЕ ИНФОРМАЦИОННЫЕ И ИЗМЕРИТЕЛЬНЫЕ КОМПЛЕКСЫ»


 

Теневая область Область медленных Область быстрых флуктуаций

флуктуаций

 

Рисунок 6 — Классификация областей на зоны

 

Файл AKP.m

 

classdef AKP < handle

 

%AKP осуществляет автокомпенсацию активных помех

 

properties

%определяем параметры автокомпенсации

 

wnd = 30 %число отсчетов для оценки коэфф. компенсации
g =   %коэффициент компенсации

 

th_shift = 5000; %смещение для заднего лепестка 5000 = -180 гр

 

k_back = 10^(-13.3/20); %коэффициент усиления компенсационной антенны


 

akp_data

 

akp_ang


 

 

%выходной массив данных

%выходной массив кодов углов данных

 


end

 

methods

function compensate(obj,hInData,hInAng) %компенсация данных

 

obj.akp_data = []; %удаляем результаты прошлых вычислений obj.akp_ang = [];

 

%вычисляем сигнал действующий на входе

 

a = (hInAng - obj.th_shift)>1;

[~,col] = find(a > 0,1,'first');

 

for ii = col:length(hInAng)

u0 = hInData(:,ii); %Формула 20

 

angIdx = ii-obj.th_shift:ii-1;

angIdx(angIdx < 1) = [];

 

u1 = sum(hInData(:,angIdx),2)*obj.k_back; %формула 21 и 24

K = obj.g*sum(u0(end-obj.wnd:end).*u1(end-obj.wnd:end),1)/...

 

(1+obj.g*sum(u1(end-obj.wnd:end).^2,1));%формула 23

obj.akp_data = [obj.akp_data (u0 - K*u1)];%Формула 22

 

obj.akp_ang = [obj.akp_ang hInAng(ii)];

end

 

end

 

Оглавление

А.Н. Семёнов

 

Методические указания к домашнему заданию по курсу

«РАДИОЛОКАЦИОННЫЕ ИНФОРМАЦИОННЫЕ И ИЗМЕРИТЕЛЬНЫЕ КОМПЛЕКСЫ»


 

function show(obj,hInData,hInAng)

 

figure;

%сырые данные

 

subplot(1,2,1);

temp = abs(hInData(:));

 

q = quantile(temp,0.9);

idxAng = (hInAng - obj.th_shift) > 1;

 

imagesc(abs(hInData(:,idxAng)),[0 q]);

xlabel('Угол, отс');

 

ylabel('Дальность, отс');

 

subplot(1,2,2);

%данные после компенсации

 

imagesc(abs(obj.akp_data),[0 q]);

xlabel('Угол, отс');

 

ylabel('Дальность, отс');

end

 

function Kp = calc_kp(obj,r,a,hInData)

 

%оценка коэффициента подавления в выбранной точке

Kp = 20*log10(abs(obj.akp_out)/abs(hInData(r,a)));

 

end

end

 

end

 

Файл main.m

 

fnames = dir('files');

 

%создаем объект класса RawData

rlsdata = RawData([fnames(21).folder '\'],fnames(21).name); %выполняем метод класса для рафинирования rlsdata.rafinate(20);

rlsdata.show;

%создаем объект класса AKP

 

akp = AKP;

%осуществляем компенсацию

 

akp.compensate(rlsdata.raw,rlsdata.angles);

akp.show(rlsdata.raw,rlsdata.angles);

 

До автокомпенсации   После автокомпенсации  
   
       

 

Рисунок 7 — Результаты автокомпенсации сигнала

 

 

Оглавление

А.Н. Семёнов

 

Методические указания к домашнему заданию по курсу

«РАДИОЛОКАЦИОННЫЕ ИНФОРМАЦИОННЫЕ И ИЗМЕРИТЕЛЬНЫЕ КОМПЛЕКСЫ»


 

Файл Detector.m

 

classdef Detector < handle

 

%Detector осуществляет обнаружение целей

 

properties

%определяем параметры детектора

 

thr %порог обнаружения

Fa %вероятность ложных тревог


 

detections


 

 

%выходной массив данных

 


end


 

methods

function obj = Detector(fa)

 

obj.Fa = fa;

end

 

function detect(obj,inData,r,a) %обнаружение целей

%вычисляем порог в заданной области свободной от целей r - a temp = abs(inData(r,a));

 

s2 = var(temp(:));

 

obj.thr = 2.5*sqrt(-2*log(obj.Fa)*s2);

obj.detections = inData > obj.thr;

 

end

function show(obj,hInData)

 

figure;

%сырые данные

 

subplot(1,2,1);

temp = abs(hInData(:));

 

q = quantile(temp,0.9);

imagesc(abs(hInData),[0 q]);

 

xlabel('Угол, отс');

ylabel('Дальность, отс');

 

if ~isempty(obj.detections)

 

subplot(1,2,2);

%данные после порога

 

imagesc(abs(obj.detections),[0 1]);

xlabel('Угол, отс');

 

ylabel('Дальность, отс');

end

 

end

end

 

end

 

Оглавление

А.Н. Семёнов

 

Методические указания к домашнему заданию по курсу

«РАДИОЛОКАЦИОННЫЕ ИНФОРМАЦИОННЫЕ И ИЗМЕРИТЕЛЬНЫЕ КОМПЛЕКСЫ»


 

 

Файл main.m

 

fnames = dir('files');

%создаем объект класса RawData

 

rlsdata = RawData([fnames(21).folder '\'],fnames(21).name);

rlsdata.rafinate(20); %выполняем метод класса для рафинирования

 

akp = AKP; %создаем объект класса AKP

akp.compensate(rlsdata.raw,rlsdata.angles); %осуществляем компенсацию

 

convdata = ConvData(akp); %создаем объект класса ConvData

convdata.convole_time('ski'); %выполняем метод свертки во временной области

 

sdcdata = SDC(convdata); %создаем объект класса SDC

sdcdata.chpk1; %выполняем операцию СДЦ

 

detector = Detector(1e-4); %создаем объек класса Detector

detector.detect(sdcdata.sdc_data(2000:end,:),13000:14000,1:length(sdcdata.sdc_ang)); detector.show(sdcdata.sdc_data(2000:end,:))

 

%отображение в полярных координатах

 

figure;

a = double(rlsdata.angles(sdcdata.sdc_ang));

 

z = double(detector.detections(1:3000,:));

polarplot3d(z,...

 

'AngularRange',[min(a) max(a)]*pi/5000,'RadialRange',[2000 5000]*0.375); view(2);

axis off;

axis equal;

 

До порогового обнаружения   После порогового обнаружения  
   
       

 

Рисунок 8 — Результаты обнаружения целей


 

 

Оглавление

А.Н. Семёнов

 

Методические указания к домашнему заданию по курсу

«РАДИОЛОКАЦИОННЫЕ ИНФОРМАЦИОННЫЕ И ИЗМЕРИТЕЛЬНЫЕ КОМПЛЕКСЫ»


 

Рисунок 9 — Результаты обнаружения в полярной системе координат

 

Кластеризация отметок

 

Измерение параметров цели

 

Оглавление

А.Н. Семёнов

 

Методические указания к домашнему заданию по курсу

«РАДИОЛОКАЦИОННЫЕ ИНФОРМАЦИОННЫЕ И ИЗМЕРИТЕЛЬНЫЕ КОМПЛЕКСЫ»


 

Требования к выполнению домашнего задания

 

Расчетно-пояснительная записка к домашнему заданию должна быть оформлена по ГОСТ 7.32-2001. В записке должны быть представлены результаты пунктов выполнения домашнего задания в виде рисунков, сечений матриц и др. способами, позволяющие оценить уровень самостоятельного выполнения ДЗ.

 

Исходные код программы должен быть представлен в приложении к пояснительной записке.

 

Домашнее задание считается в


Поделиться с друзьями:

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.011 с.