Этот пример введет морскую симуляцию помехи для морской радиолокационной системы наблюдения. Этот пример сначала обсуждает физические свойства, сопоставленные с морскими состояниями. Затем это обсуждает отражающую способность поверхностей моря, исследуя эффект волнения моря, частоты, поляризации и угла падения. Наконец, пример вычисляет отношение помехи к шуму (CNR) для морской радиолокационной системы наблюдения, рассматривая путь к распространению и погодные эффекты.
В описании морской помехи важно сначала установить физические свойства поверхности моря. В моделировании морской помехи для радара существует три важных параметра:
стандартное отклонение высоты волны. Высота волны задана как вертикальное расстояние между гребнем волны и смежной канавкой волны.
наклон волны.
скорость ветра.
Из-за неисправности волн, физические свойства моря часто описываются в терминах морских состояний. Номер волнения моря Дугласа является широко используемой шкалой, которая представляет широкий спектр физических морских свойств, таких как высоты волны и сопоставленные скорости ветра. В нижнем конце шкалы волнение моря 0 представляет спокойное, гладкое волнение моря. Шкала затем проистекает из, немного слегка колебался, волнение моря в 1 к бурным морям с высокими высотами волны в море утверждает 5. Высоты волны в волнении моря 8 могут быть больше 9 метров или больше.
Используя searoughness
функция, постройте морские свойства для моря, утверждает 1 - 5. Отметьте медленное увеличение наклона волны с волнением моря. Это - результат длины волны и высоты волны, увеличивающейся со скоростью ветра, хотя с различными факторами.
% Analyze for sea states 1 through 5 ss = 1:5; % Sea states % Initialize outputs numSeaStates = numel(ss); hgtsd = zeros(1,numSeaStates); beta0 = zeros(1,numSeaStates); vw= zeros(1,numSeaStates); % Obtain sea state properties for is = 1:numSeaStates [hgtsd(is),beta0(is),vw(is)] = searoughness(ss(is)); end % Plot results helperPlotSeaRoughness(ss,hgtsd,beta0,vw);
Физические свойства, которые вы вводите, являются важной частью в разработке геометрии и среды морского сценария. Кроме того, как вы будете видеть, радар возвращается из сильной зависимости выставки поверхности моря от волнения моря.
Поверхность моря состоит из воды со средней соленостью приблизительно 35 частей на тысячу. Отражательный коэффициент морской воды близко к 1 для микроволновых частот и в низких углах падения.
Для сглаженных морей мала высота волны, и море появляется как бесконечная, плоская проводящая пластина с little-no обратным рассеянием. Когда номер волнения моря увеличивается и увеличения высоты волны, поверхностные увеличения шероховатости. Это приводит к увеличенному рассеиванию, которое направлено зависит. Кроме того, отражающая способность показывает сильную пропорциональную зависимость от высоты волны и зависимость, которая увеличивается с увеличивающейся частотой на скорости ветра.
Исследуйте отражающую способность поверхности моря по сравнению с частотой для различных морских состояний с помощью seareflectivity
функция. Установите угол падения, равный 0,5 градусам, и рассмотрите частоты в области значений от 500 МГц до 35 ГГц.
grazAng = 0.5; % Grazing angle (deg) freq = linspace(0.5e9,35e9,100); % Frequency (Hz) pol = 'H'; % Horizontal polarization % Initialize reflectivity output numFreq = numel(freq); nrcsH = zeros(numFreq,numSeaStates); % Calculate reflectivity for is = 1:numSeaStates nrcsH(:,is) = seareflectivity(ss(is),grazAng,freq,'Polarization',pol); end % Plot reflectivity helperPlotSeaReflectivity(ss,grazAng,freq,nrcsH,pol);
Рисунок показывает, что отражающая способность поверхности моря пропорциональна частоте. Кроме того, когда номер волнения моря увеличивается, который соответствует увеличивающейся шероховатости, отражающая способность также увеличивается.
Затем рассмотрите эффекты поляризации на отражающей способности поверхности моря. Обеспечьте тот же угол падения и промежуток частоты от предыдущего раздела.
pol = 'V'; % Vertical polarization % Initialize reflectivity output numFreq = numel(freq); nrcsV = zeros(numFreq,numSeaStates); % Calculate reflectivity for is = 1:numSeaStates nrcsV(:,is) = seareflectivity(ss(is),grazAng,freq,'Polarization',pol); end % Plot reflectivity hAxes = helperPlotSeaReflectivity(ss,grazAng,freq,nrcsH,'H'); helperPlotSeaReflectivity(ss,grazAng,freq,nrcsV,'V',hAxes);
Рисунок показывает, что существует значимый эффект на отражающей способности на основе поляризации. Заметьте, что различие между горизонтальной и вертикальной поляризацией больше в более низких частотах, чем на более высоких частотах. Когда номер волнения моря увеличивается, различие между горизонтальными и вертикальными уменьшениями поляризации. Таким образом существует уменьшающаяся зависимость от поляризации с увеличивающейся частотой.
Рассмотрите эффект угла падения. Вычислите морскую отражающую способность в области значений 0,1 до 60 градусов на частоте L-полосы 1,5 ГГц.
grazAng = linspace(0.1,60,100); % Grazing angle (deg) freq = 1.5e9; % L-band frequency (Hz) % Initialize reflectivity output numGrazAng = numel(grazAng); nrcsH = zeros(numGrazAng,numSeaStates); nrcsV = zeros(numGrazAng,numSeaStates); % Calculate reflectivity for is = 1:numSeaStates nrcsH(:,is) = seareflectivity(ss(is),grazAng,freq,'Polarization','H'); nrcsV(:,is) = seareflectivity(ss(is),grazAng,freq,'Polarization','V'); end % Plot reflectivity hAxes = helperPlotSeaReflectivity(ss,grazAng,freq,nrcsH,'H'); helperPlotSeaReflectivity(ss,grazAng,freq,nrcsV,'V',hAxes); ylim(hAxes,[-60 -10]);
От фигуры обратите внимание, что существует намного больше изменения морской отражающей способности в более низких углах падения, и различия существуют между вертикальной и горизонтальной поляризацией. Рисунок показывает, что зависимость от уменьшений угла падения как угол падения увеличивается. Кроме того, отражающая способность для горизонтально поляризованных сигналов меньше вертикально поляризованных сигналов для того же волнения моря в области значений рассмотренных углов падения.
Рассмотрите горизонтально поляризованную морскую радиолокационную систему наблюдения, действующую на уровне 6 ГГц (C-полоса). Задайте радиолокационную систему.
% Radar parameters freq = 6e9; % C-band frequency (Hz) anht = 20; % Height (m) ppow = 200e3; % Peak power (W) tau = 200e-6; % Pulse width (sec) prf = 300; % PRF (Hz) azbw = 10; % Half-power azimuth beamwidth (deg) elbw = 30; % Half-power elevation beamwidth (deg) Gt = 22; % Transmit gain (dB) Gr = 10; % Receive gain (dB) nf = 3; % Noise figure (dB) Ts = systemp(nf); % System temperature (K)
Затем симулируйте рабочую среду, где волнение моря равняется 2. Вычислите и постройте отражающую способность поверхности моря для углов падения заданной геометрии.
% Sea parameters ss = 2; % Sea state % Calculate surface state [hgtsd,beta0] = searoughness(ss); % Setup geometry anht = anht + 2*hgtsd; % Average height above clutter (m) surfht = 3*hgtsd; % Surface height (m) % Calculate maximum range for simulation Rua = time2range(1/prf); % Maximum unambiguous range (m) Rhoriz = horizonrange(anht,'SurfaceHeight',surfht); % Horizon range (m) Rmax = min(Rua,Rhoriz); % Maximum simulation range (m) % Generate vector of ranges for simulation Rm = linspace(100,Rmax,1000); % Range (m) Rkm = Rm*1e-3; % Range (km) % Calculate sea clutter reflectivity grazAng = grazingang(anht,Rm,'TargetHeight',surfht); nrcs = seareflectivity(ss,grazAng,freq); helperPlotSeaReflectivity(ss,grazAng,freq,nrcs,'H');
Затем вычислите эффективную площадь рассеивания (RCS) помехи с помощью clutterSurfaceRCS
функция. Отметьте понижение помехи ЭПР, когда радарная область значений горизонта достигнута.
% Calculate clutter RCS rcs = clutterSurfaceRCS(nrcs,Rm,azbw,elbw,grazAng(:),tau); rcsdB = pow2db(rcs); % Convert to decibels for plotting hAxes = helperPlot(Rkm,rcsdB,'RCS','Clutter RCS (dBsm)','Clutter Radar Cross Section (RCS)'); helperAddHorizLine(hAxes,Rhoriz);
Вычислите отношение помехи к шуму (CNR) с помощью radareqsnr
функция. Снова, отметьте понижение CNR, когда область значений симуляции приближается к радарному горизонту. Вычислите область значений, на которую помеха падает ниже шума.
% Convert frequency to wavelength lambda = freq2wavelen(freq); % Calculate and plot the clutter-to-noise ratio cnr = radareqsnr(lambda,Rm(:),ppow,tau,... 'gain',[Gt Gr],'rcs',rcs,'Ts',Ts); % dB hAxes = helperPlot(Rkm,cnr,'CNR','CNR (dB)','Clutter-to-Noise Ratio (CNR)'); ylim(hAxes,[-80 100]); helperAddHorizLine(hAxes,Rhoriz); helperAddBelowClutterPatch(hAxes);
% Range when clutter falls below noise
helperFindClutterBelowNoise(Rkm,cnr);
Range at which clutter falls below noise (km) = 18.04
Когда путь между радаром и помехой отклонится от условий свободного пространства, включайте фактор распространения помехи и атмосферные потери на пути. Можно вычислить фактор распространения помехи использование radarpropfactor
функция.
% Calculate radar propagation factor for clutter Fc = radarpropfactor(Rm,freq,anht,surfht, ... 'SurfaceHeightStandardDeviation',hgtsd,... 'SurfaceSlope',beta0,... 'ElevationBeamwidth',elbw); helperPlot(Rkm,Fc,'Propagation Factor', ... 'Propagation Factor (dB)', ... 'One-Way Clutter Propagation Factor F_C');
В рамках вышеупомянутого графика отображаются две области распространения:
Интерференционная область: Это - область, где отражения вмешиваются в прямой луч. Это показано в областях значений, где там идет тяжело.
Промежуточная область: Это - область между интерференционной и дифракционной областью, где дифракционная область задана как теневая область вне горизонта. Промежуточная область, которая в этом примере происходит в петле в кривой на уровне приблизительно 1,5 км, обычно оценивается интерполяцией между интерференционными и дифракционными областями.
Как правило, фактор распространения помехи и морская отражающая способность объединены как продукт , потому что измерения поверхностной отражающей способности обычно являются измерениями продукта, а не только отражающей способности . Вычислите этот продукт и постройте результаты.
% Combine clutter reflectivity and clutter propagation factor FcLinear = db2mag(Fc); % Convert to linear units combinedFactor = nrcs.*FcLinear.^2; combinedFactordB = pow2db(combinedFactor); helperPlot(Rkm,combinedFactordB,'\sigma_CF_C', ... '\sigma_CF_C (dB)', ... 'One-Way Sea Clutter Propagation Factor and Reflectivity');
Затем вычислите атмосферную потерю на путь с помощью наклонного пути tropopl
функция. Используйте стандартную атмосферную модель по умолчанию для вычисления.
% Calculate one-way loss associated with atmosphere elAng = height2el(surfht,anht,Rm); % Elevation angle (deg) numEl = numel(elAng); Latmos = zeros(numEl,1); for ie = 1:numEl Latmos(ie,:) = tropopl(Rm(ie),freq,anht,elAng(ie)); end helperPlot(Rkm,Latmos,'Atmospheric Loss','Loss (dB)','One-Way Atmospheric Loss');
Повторно вычислите CNR. Включайте распространение факторная и атмосферная потеря в вычисление. Обратите внимание на изменения в форме кривой CNR. Точка, на которую помеха падает ниже шума, намного ближе в области значений, когда вы включаете эти факторы.
% Re-calculate CNR including radar propagation factor and atmospheric loss cnr = radareqsnr(lambda,Rm(:),ppow,tau,... 'gain',[Gt Gr],'rcs',rcs,'Ts',Ts, ... 'PropagationFactor',Fc,... 'AtmosphericLoss',Latmos); % dB helperAddPlot(Rkm,cnr,'CNR + Propagation Factor + Atmospheric Loss',hAxes);
% Range when clutter falls below noise
helperFindClutterBelowNoise(Rkm,cnr);
Range at which clutter falls below noise (km) = 10.44
Так же, как атмосфера влияет на обнаружение цели, погода также влияет на обнаружение помехи. Рассмотрите эффект дождя в симулированных областях значений. Сначала вычислите затухание дождя.
% Calculate one-way loss associated with rain rr = 50; % Rain rate (mm/h) polAng = 0; % Polarization tilt angle (0 degrees for horizontal) elAng = height2el(surfht,anht,Rm); % Elevation angle (deg) numEl = numel(elAng); Lrain = zeros(numEl,1); for ie = 1:numEl Lrain(ie,:) = cranerainpl(Rm(ie),freq,rr,elAng(ie),polAng); end helperPlot(Rkm,Lrain,'Rain Loss','Loss (dB)','One-Way Rain Loss');
Повторно вычислите CNR. Включайте путь к распространению и потерю дождя. Обратите внимание на то, что существует только небольшое уменьшение в CNR из-за присутствия дождя.
% Re-calculate CNR including radar propagation factor, atmospheric loss, % and rain loss cnr = radareqsnr(lambda,Rm(:),ppow,tau,... 'gain',[Gt Gr],'rcs',rcs,'Ts',Ts, ... 'PropagationFactor',Fc, ... 'AtmosphericLoss',Latmos + Lrain); % dB helperAddPlot(Rkm,cnr,'CNR + Propagation Factor + Atmospheric Loss + Rain',hAxes);
% Range when clutter falls below noise
helperFindClutterBelowNoise(Rkm,cnr);
Range at which clutter falls below noise (km) = 9.61
Этот пример вводит концепции относительно симуляции поверхностей моря. Морская отражающая способность показывает следующие свойства:
Сильная зависимость от волнения моря
Пропорциональная зависимость от частоты
Зависимость от поляризации, которая уменьшается с увеличивающейся частотой
Сильная зависимость от угла падения в низких углах падения
Этот пример также обсуждает, как использовать волнение моря физические свойства и отражающая способность для вычисления отношения помехи к шуму для морской радиолокационной системы наблюдения. Кроме того, пример объясняет способы улучшить симуляцию пути к распространению.
Бартон, Дэвид Нокс. Основные уравнения радиолокации для современного радара. Радарный ряд дома Artech. Бостон, масса: дом Artech, 2013.
Блэйк, L. V. Графический вывод машины радарных схем покрытия Вертикальной Плоскости. NRL сообщают, 7098, военно-морская научно-исследовательская лаборатория, 1970.
Греджерс-Хансен, V., и Р. Миттал. Улучшенная Эмпирическая Модель для Радарной Морской Отражающей способности Помехи. NRL/MR, 5310-12-9346, Военно-морская Научно-исследовательская лаборатория, 27 апреля 2012.
Ричардс, M. A. Джим Шир, Уильям А. Холм, и Уильям Л. Мелвин, принципы редакторов современного Радара. Роли, NC: паб SciTech, 2010.
function helperPlotSeaRoughness(ss,hgtsd,beta0,vw) % Creates 3x1 plot of sea roughness outputs % Create figure figure % Plot standard deviation of sea wave height subplot(3,1,1) plot(ss,hgtsd,'-o','LineWidth',1.5) ylabel([sprintf('Wave\nHeight ') '\sigma_h (m)']) title('Sea Wave Roughness') grid on; % Plot sea wave slope subplot(3,1,2) plot(ss,beta0,'-o','LineWidth',1.5) ylabel([sprintf('Wave\nSlope ') '\beta_0 (deg)']) grid on; % Plot wind velocity subplot(3,1,3) plot(ss,vw,'-o','LineWidth',1.5) xlabel('Sea State') ylabel([sprintf('Wind\nVelocity ') 'v_w (m/s)']) grid on; end function hAxes = helperPlotSeaReflectivity(ss,grazAng,freq,nrcs,pol,hAxes) % Plot sea reflectivities % Create figure and new axes if axes are not passed in newFigure = false; if nargin < 6 figure(); hAxes = gca; newFigure = true; end % Get polarization string switch lower(pol) case 'h' lineStyle = '-'; otherwise lineStyle = '--'; end % Plot if numel(grazAng) == 1 hLine = semilogx(hAxes,freq(:).*1e-9,pow2db(nrcs),lineStyle,'LineWidth',1.5); xlabel('Frequency (GHz)') else hLine = plot(hAxes,grazAng(:),pow2db(nrcs),lineStyle,'LineWidth',1.5); xlabel('Grazing Angle (deg)') end % Set display names numLines = size(nrcs,2); for ii = 1:numLines hLine(ii).DisplayName = sprintf('SS %d, %s',ss(ii),pol); if newFigure hLine(ii).Color = brighten(hLine(ii).Color,0.5); end end % Update labels and axes ylabel('Reflectivity \sigma_0 (dB)') title('Sea State Reflectivity \sigma_0') grid on axis tight hold on; % Add legend legend('Location','southoutside','NumColumns',5,'Orientation','Horizontal'); end function varargout = helperPlot(Rkm,y,displayName,ylabelStr,titleName) % Used in CNR analysis % Create figure hFig = figure; hAxes = axes(hFig); % Plot plot(hAxes,Rkm,y,'LineWidth',1.5,'DisplayName',displayName); grid(hAxes,'on'); hold(hAxes,'on'); xlabel(hAxes,'Range (km)') ylabel(hAxes,ylabelStr); title(hAxes,titleName); axis(hAxes,'tight'); % Add legend legend(hAxes,'Location','Best') % Output axes if nargout ~= 0 varargout{1} = hAxes; end end function helperAddPlot(Rkm,y,displayName,hAxes) % Used in CNR analysis % Plot ylimsIn = get(hAxes,'Ylim'); plot(hAxes,Rkm,y,'LineWidth',1.5,'DisplayName',displayName); axis(hAxes,'tight'); ylimsNew = get(hAxes,'Ylim'); set(hAxes,'Ylim',[ylimsIn(1) ylimsNew(2)]); end function helperAddHorizLine(hAxes,Rhoriz) % Add vertical line indicating horizon range xline(Rhoriz.*1e-3,'--','DisplayName','Horizon Range','LineWidth',1.5); xlims = get(hAxes,'XLim'); xlim([xlims(1) Rhoriz.*1e-3*(1.05)]); end function helperAddBelowClutterPatch(hAxes) % Add patch indicating when clutter falls below the noise xlims = get(hAxes,'Xlim'); ylims = get(hAxes,'Ylim'); x = [xlims(1) xlims(1) xlims(2) xlims(2) xlims(1)]; y = [ylims(1) 0 0 ylims(1) ylims(1)]; hP = patch(hAxes,x,y,[0.8 0.8 0.8], ... 'FaceAlpha',0.3,'EdgeColor','none','DisplayName','Clutter Below Noise'); uistack(hP,'bottom'); end function helperFindClutterBelowNoise(Rkm,cnr) % Find the point at which the clutter falls below the noise idxNotNegInf = ~isinf(cnr); Rclutterbelow = interp1(cnr(idxNotNegInf),Rkm(idxNotNegInf),0); fprintf('Range at which clutter falls below noise (km) = %.2f\n',Rclutterbelow) end