Этот пример введет морскую симуляцию помехи для морской радиолокационной системы наблюдения. Этот пример сначала обсудит физические свойства, сопоставленные с морскими состояниями. Затем мы обсудим отражающую способность поверхностей моря, исследуя эффект волнения моря, частоты, поляризации и угла падения. Наконец, мы вычислим отношение помехи к шуму (CNR) для морской радиолокационной системы наблюдения, рассматривая путь к распространению и погодные эффекты.
В описании морской помехи сначала важно установить физические свойства поверхности моря. В моделировании морской помехи для радара существует 3 важных параметра:
стандартное отклонение высоты волны. Высота волны задана как вертикальное расстояние между гребнем волны и смежной канавкой волны.
наклон волны.
скорость ветра.
Из-за неисправности волн, физические свойства моря часто описываются в терминах морских состояний. Номер волнения моря Дугласа является широко используемой шкалой, которая представляет широкий спектр физических морских свойств, таких как высоты волны и сопоставленные скорости ветра. В нижнем конце шкалы волнение моря 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
функция. Отметьте понижение помехи RCS, когда радарная область значений горизонта достигнута.
% 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');
В рамках вышеупомянутого графика отображаются 2 области распространения:
Интерференционная область, где отражения вмешиваются в прямой луч. Это показано в областях значений, где там идет тяжело.
Промежуточная область. Это - область между интерференционной и дифракционной областью, теневой областью вне горизонта. Промежуточная область, которая в этом примере происходит в петле в кривой на уровне приблизительно 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 rain 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 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 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
Этот пример ввел концепции относительно симуляции поверхностей моря. Мы узнали, что морская отражающая способность показывает следующие свойства:
Сильная зависимость от волнения моря,
Пропорциональная зависимость от частоты,
Зависимость от поляризации, которая уменьшается с увеличивающейся частотой, и
Сильная зависимость от угла падения в низких углах падения
Этот пример также обсудил, как использовать волнение моря физические свойства и отражающая способность для вычисления отношения помехи к шуму для морской радиолокационной системы наблюдения. Кроме того, пример объяснил способы улучшить симуляцию пути к распространению.
Бартон, Основные уравнения радиолокации Дэвида К. для современного Радара. 1-й выпуск. Норвуд, MA: Дом Artech, 2013.
Блэйк, L.V. Графический вывод машины радарных схем покрытия Вертикальной Плоскости. Военно-морской отчет 7098, 1970 научно-исследовательской лаборатории.
Греджерс-Хансен, V. и Миттал, R. "Улучшенная эмпирическая модель для радарной морской отражающей способности помехи". 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 (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 (deg)')) grid on; % Plot wind velocity subplot(3,1,3) plot(ss,vw,'-o','LineWidth',1.5) xlabel('Sea State') ylabel(sprintf('Wind\nVelocity (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 indication 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