В этом примере предлагается имитация морского захламления для радиолокационной системы морского наблюдения. В этом примере сначала рассматриваются физические свойства, связанные с морскими состояниями. Далее мы обсудим отражательную способность морских поверхностей, исследуем влияние морского состояния, частоты, поляризации и угла выпаса. Наконец, мы рассчитаем отношение шума к беспорядку (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 для микроволновых частот и при низких углах выпаса.
Для гладких морей высота волны невелика, и море представляется как бесконечная плоская проводящая пластина с небольшим обратным рассеянием. По мере увеличения числа морских состояний и увеличения высоты волны шероховатость поверхности увеличивается. Это приводит к увеличению рассеяния, которое зависит от направления. Кроме того, отражательная способность проявляет сильную пропорциональную зависимость от высоты волны и зависимость, которая увеличивается с увеличением частоты от скорости ветра.
Исследование отражательной способности поверхности моря в зависимости от частоты для различных состояний моря с использованием 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. Включить путь распространения и потери дождя. Отметим, что наблюдается лишь незначительное снижение КНР из-за наличия дождя.
% 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-е издание. Норвуд, Массачусетс: Artech House, 2013.
Блейк, Л.В. Машинное построение диаграмм покрытия радиолокационной вертикальной плоскости. Военно-морская научно-исследовательская лаборатория Отчет 7098, 1970.
Грегерс-Хансен, В. и Миттал, Р. «Усовершенствованная эмпирическая модель радиолокационной отражательной способности морского захламления». NRL/MR/5310-12-9346, 27 апреля 2012 года.
Ричардс, М. А., Джим Шеер и Уильям А. Холм. Принципы современного радара. Роли, NC: SciTech Pub., 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