Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Топ:
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов...
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Интересное:
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Постановка задачи
РЛС кругового обзора засняла квадратуры сигналов в полярной системе координат. Записанные данные хранятся в файлах <типсигнала_номеробзора>.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 (a − M))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вх (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 обзоров.
Качество подавления фильтров СДЦ можно характеризовать как отношение мощностей сигнала до и после обработки в выбранном канале дальности, в котором присутствует мощная стационарная цель.
Оглавление
А.Н. Семёнов
Методические указания к домашнему заданию по курсу
«РАДИОЛОКАЦИОННЫЕ ИНФОРМАЦИОННЫЕ И ИЗМЕРИТЕЛЬНЫЕ КОМПЛЕКСЫ»
| 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. В записке должны быть представлены результаты пунктов выполнения домашнего задания в виде рисунков, сечений матриц и др. способами, позволяющие оценить уровень самостоятельного выполнения ДЗ.
Исходные код программы должен быть представлен в приложении к пояснительной записке.
Домашнее задание считается в
|
|
|
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!