Морская симуляция помехи для морского радара

Этот пример введет морскую симуляцию помехи для морской радиолокационной системы наблюдения. Этот пример сначала обсуждает физические свойства, сопоставленные с морскими состояниями. Затем это обсуждает отражающую способность поверхностей моря, исследуя эффект волнения моря, частоты, поляризации и угла падения. Наконец, пример вычисляет отношение помехи к шуму (CNR) для морской радиолокационной системы наблюдения, рассматривая путь к распространению и погодные эффекты.

Обзор морских состояний

В описании морской помехи важно сначала установить физические свойства поверхности моря. В моделировании морской помехи для радара существует три важных параметра:

  1. σh стандартное отклонение высоты волны. Высота волны задана как вертикальное расстояние между гребнем волны и смежной канавкой волны.

  2. β0наклон волны.

  3. vwскорость ветра.

Из-за неисправности волн, физические свойства моря часто описываются в терминах морских состояний. Номер волнения моря Дугласа является широко используемой шкалой, которая представляет широкий спектр физических морских свойств, таких как высоты волны и сопоставленные скорости ветра. В нижнем конце шкалы волнение моря 0 представляет спокойное, гладкое волнение моря. Шкала затем проистекает из, немного слегка колебался, волнение моря в 1 к бурным морям с высокими высотами волны в море утверждает 5. Высоты волны в волнении моря 8 могут быть больше 9 метров или больше.

Используя searoughness функция, постройте морские свойства для моря, утверждает 1 - 5. Отметьте медленное увеличение наклона волны β0с волнением моря. Это - результат длины волны и высоты волны, увеличивающейся со скоростью ветра, хотя с различными факторами.

% 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);

Figure contains 3 axes objects. Axes object 1 with title Sea Wave Roughness contains an object of type line. Axes object 2 contains an object of type line. Axes object 3 contains an object of type line.

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

Отражающая способность

Поверхность моря состоит из воды со средней соленостью приблизительно 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);

Figure contains an axes object. The axes object with title S e a blank S t a t e blank R e f l e c t i v i t y blank sigma indexOf 0 baseline contains 5 objects of type line. These objects represent SS 1, H, SS 2, H, SS 3, H, SS 4, H, SS 5, H.

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

Эффекты поляризации

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

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);

Figure contains an axes object. The axes object with title S e a blank S t a t e blank R e f l e c t i v i t y blank sigma indexOf 0 baseline contains 10 objects of type line. These objects represent SS 1, H, SS 2, H, SS 3, H, SS 4, H, SS 5, H, SS 1, V, SS 2, V, SS 3, V, SS 4, V, SS 5, V.

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

Эффекты угла падения

Рассмотрите эффект угла падения. Вычислите морскую отражающую способность в области значений 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]);

Figure contains an axes object. The axes object with title S e a blank S t a t e blank R e f l e c t i v i t y blank sigma indexOf 0 baseline contains 10 objects of type line. These objects represent SS 1, H, SS 2, H, SS 3, H, SS 4, H, SS 5, H, SS 1, V, SS 2, V, SS 3, V, SS 4, V, SS 5, V.

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

Морской радарный пример наблюдения

Вычисление отношения помехи к шуму

Рассмотрите горизонтально поляризованную морскую радиолокационную систему наблюдения, действующую на уровне 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');

Figure contains an axes object. The axes object with title S e a blank S t a t e blank R e f l e c t i v i t y blank sigma indexOf 0 baseline contains an object of type line. This object represents SS 2, 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);

Figure contains an axes object. The axes object with title Clutter Radar Cross Section (RCS) contains 2 objects of type line, constantline. These objects represent RCS, Horizon Range.

Вычислите отношение помехи к шуму (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);

Figure contains an axes object. The axes object with title Clutter-to-Noise Ratio (CNR) contains 3 objects of type patch, line, constantline. These objects represent Clutter Below Noise, CNR, Horizon Range.

% 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');

Figure contains an axes object. The axes object with title O n e - W a y blank C l u t t e r blank P r o p a g a t i o n blank F a c t o r blank F indexOf C baseline contains an object of type line. This object represents Propagation Factor.

В рамках вышеупомянутого графика отображаются две области распространения:

  1. Интерференционная область: Это - область, где отражения вмешиваются в прямой луч. Это показано в областях значений, где там идет тяжело.

  2. Промежуточная область: Это - область между интерференционной и дифракционной областью, где дифракционная область задана как теневая область вне горизонта. Промежуточная область, которая в этом примере происходит в петле в кривой на уровне приблизительно 1,5 км, обычно оценивается интерполяцией между интерференционными и дифракционными областями.

Как правило, фактор распространения помехи и морская отражающая способность объединены как продукт σCFC4, потому что измерения поверхностной отражающей способности обычно являются измерениями продукта, а не только отражающей способности σC. Вычислите этот продукт и постройте результаты.

% 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');

Figure contains an axes object. The axes object with title One-Way Sea Clutter Propagation Factor and Reflectivity contains an object of type line. This object represents \sigma_CF_C.

Затем вычислите атмосферную потерю на путь с помощью наклонного пути 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');

Figure contains an axes object. The axes object with title One-Way Atmospheric Loss contains an object of type line. This object represents 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);

Figure contains an axes object. The axes object with title Clutter-to-Noise Ratio (CNR) contains 4 objects of type patch, line, constantline. These objects represent Clutter Below Noise, CNR, Horizon Range, CNR + Propagation Factor + Atmospheric Loss.

% 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');

Figure contains an axes object. The axes object with title One-Way Rain Loss contains an object of type line. This object represents 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);

Figure contains an axes object. The axes object with title Clutter-to-Noise Ratio (CNR) contains 5 objects of type patch, line, constantline. These objects represent Clutter Below Noise, CNR, Horizon Range, CNR + Propagation Factor + Atmospheric Loss, CNR + Propagation Factor + Atmospheric Loss + Rain.

% Range when clutter falls below noise
helperFindClutterBelowNoise(Rkm,cnr);
Range at which clutter falls below noise (km) = 9.61

Сводные данные

Этот пример вводит концепции относительно симуляции поверхностей моря. Морская отражающая способность показывает следующие свойства:

  • Сильная зависимость от волнения моря

  • Пропорциональная зависимость от частоты

  • Зависимость от поляризации, которая уменьшается с увеличивающейся частотой

  • Сильная зависимость от угла падения в низких углах падения

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

Ссылки

  1. Бартон, Дэвид Нокс. Основные уравнения радиолокации для современного радара. Радарный ряд дома Artech. Бостон, масса: дом Artech, 2013.

  2. Блэйк, L. V. Графический вывод машины радарных схем покрытия Вертикальной Плоскости. NRL сообщают, 7098, военно-морская научно-исследовательская лаборатория, 1970.

  3. Греджерс-Хансен, V., и Р. Миттал. Улучшенная Эмпирическая Модель для Радарной Морской Отражающей способности Помехи. NRL/MR, 5310-12-9346, Военно-морская Научно-исследовательская лаборатория, 27 апреля 2012.

  4. Ричардс, 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