Подводное целевое обнаружение с активной системой гидролокатора

В этом примере показано, как симулировать активный моностатический сценарий гидролокатора с двумя целями. Система гидролокатора состоит из изотропного массива проектора и одного гидрофонного элемента. Массив проектора является сферическим в форме. Сигналы backscattered получены гидрофоном. Полученные сигналы включают и прямые и многопутевые вклады.

Подводная среда

Несколько путей к распространению присутствуют между источником звука и целью в мелководной среде. В этом примере пять путей приняты в канале с глубиной 100 метров и постоянной звуковой скоростью 1 520 м/с. Используйте нижнюю потерю 0,5 дБ для того, чтобы подсветить эффекты разнообразных путей.

Задайте свойства подводной среды, включая глубину канала, количество путей к распространению, скорости распространения и нижней потери.

numPaths = 5;
propSpeed = 1520;
channelDepth = 100;

isopath{1} = phased.IsoSpeedUnderwaterPaths(...
          'ChannelDepth',channelDepth,...
          'NumPathsSource','Property',...
          'NumPaths',numPaths,...
          'PropagationSpeed',propSpeed,...
          'BottomLoss',0.5,...
          'TwoWayPropagation',true);

isopath{2} = phased.IsoSpeedUnderwaterPaths(...
          'ChannelDepth',channelDepth,...
          'NumPathsSource','Property',...
          'NumPaths',numPaths,...
          'PropagationSpeed',propSpeed,...
          'BottomLoss',0.5,...
          'TwoWayPropagation',true);

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

fc = 20e3;   % Operating frequency (Hz)

channel{1} = phased.MultipathChannel(...
          'OperatingFrequency',fc);

channel{2} = phased.MultipathChannel(...
          'OperatingFrequency',fc);

Цели гидролокатора

Сценарий имеет две цели. Первая цель более удалена, но имеет большую целевую силу, и второе ближе, но имеет меньшую целевую силу. Обе цели являются изотропными и стационарными относительно системы гидролокатора.

tgt{1} = phased.BackscatterSonarTarget(...
    'TSPattern',-5*ones(181,361));

tgt{2} = phased.BackscatterSonarTarget(...
    'TSPattern',-15*ones(181,361));

tgtplat{1} = phased.Platform(...
    'InitialPosition',[500; 1000; -70],'Velocity',[0; 0; 0]);

tgtplat{2} = phased.Platform(...
    'InitialPosition',[500; 0; -40],'Velocity',[0; 0; 0]);

Целевые положения, наряду со свойствами канала, определяют подводные пути, вдоль которых сигналы распространяют. Постройте пути между системой гидролокатора и каждой целью. Обратите внимание на то, что z-координата определяет глубину с нулем, соответствующим главной поверхности канала, и расстояние в x-y плоскости построено как область значений между источником и целью.

helperPlotPaths([0;0;-60],[500 500; 1000 0; -70 -40], ...
  channelDepth,numPaths)

Передатчик и приемник

Переданная форма волны

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

maxRange = 5000;                         % Maximum unambiguous range
rangeRes = 10;                           % Required range resolution
prf = propSpeed/(2*maxRange);            % Pulse repetition frequency
pulse_width = 2*rangeRes/propSpeed;      % Pulse width
pulse_bw = 1/pulse_width;                % Pulse bandwidth
fs = 2*pulse_bw;                         % Sampling rate
wav = phased.RectangularWaveform(...
    'PulseWidth',pulse_width,...
    'PRF',prf,...
    'SampleRate',fs);

Обновите частоту дискретизации многопутевого канала с переданной частотой дискретизации формы волны.

channel{1}.SampleRate = fs;
channel{2}.SampleRate = fs;

Передатчик

Передатчик состоит из полусферического массива экранированных спиной изотропных элементов проектора. Передатчик расположен на 60 метров ниже поверхности. Создайте массив и просмотрите геометрию массивов.

plat = phased.Platform(...
    'InitialPosition',[0; 0; -60],...
    'Velocity',[0; 0; 0]);

proj = phased.IsotropicProjector(...
    'FrequencyRange',[0 30e3],'VoltageResponse',80,'BackBaffled',true);

[ElementPosition,ElementNormal] = helperSphericalProjector(8,fc,propSpeed);

projArray = phased.ConformalArray(...
    'ElementPosition',ElementPosition,...
    'ElementNormal',ElementNormal,'Element',proj);

viewArray(projArray,'ShowNormals',true);

Просмотрите шаблон массива в нулевых степенях в области вертикального изменения. Направленность показывает peaks в азимуте, соответствующем положению азимута элементов массива.

pattern(projArray,fc,-180:180,0,'CoordinateSystem','polar',...
      'PropagationSpeed',propSpeed);

Приемник

Приемник состоит из гидрофона и усилителя. Гидрофон является одним изотропным элементом и имеет частотный диапазон от 0 до 30 кГц, который содержит рабочую частоту многопутевого канала. Задайте гидрофонную чувствительность напряжения как-140 дБ.

hydro = phased.IsotropicHydrophone(...
    'FrequencyRange',[0 30e3],'VoltageSensitivity',-140);

Тепловой шум присутствует в полученном сигнале. Примите, что приемник имеет 20 дБ усиления и шумовую фигуру 10 дБ.

rx = phased.ReceiverPreamp(...
    'Gain',20,...
    'NoiseFigure',10,...
    'SampleRate',fs,...
    'SeedSource','Property',...
    'Seed',2007);

Излучатель и коллектор

В активной системе гидролокатора акустическая волна распространена к цели, рассеялась к установленному сроку и получила гидрофоном. Излучатель генерирует пространственную зависимость распространенной волны из-за геометрии массивов. Аналогично, коллектор комбинирует сигналы backscattered, полученные гидрофонным элементом от цели далекого поля.

radiator = phased.Radiator('Sensor',projArray,'OperatingFrequency',...
 fc,'PropagationSpeed',propSpeed);

collector = phased.Collector('Sensor',hydro,'OperatingFrequency',fc,...
  'PropagationSpeed',propSpeed);

Системная симуляция гидролокатора

Затем передайте прямоугольный радиоимпульс более чем десять интервалов повторения и симулируйте сигнал, полученный в гидрофоне для каждой передачи.

x = wav();    % Generate pulse
xmits = 10;
rx_pulses = zeros(size(x,1),xmits);
t = (0:size(x,1)-1)/fs;

for j = 1:xmits

    % Update target and sonar position
    [sonar_pos,sonar_vel] = plat(1/prf);

    for i = 1:2 %Loop over targets
       [tgt_pos,tgt_vel] = tgtplat{i}(1/prf);

      % Compute transmission paths using the method of images. Paths are
      % updated according to the CoherenceTime property.
      [paths,dop,aloss,tgtAng,srcAng] = isopath{i}(...
            sonar_pos,tgt_pos,...
            sonar_vel,tgt_vel,1/prf);

      % Compute the radiated signals. Steer the array towards the target.
      tsig = radiator(x,srcAng);

      % Propagate radiated signals through the channel.
      tsig = channel{i}(tsig,paths,dop,aloss);

      % Target
      tsig = tgt{i}(tsig,tgtAng);

      % Collector
      rsig = collector(tsig,srcAng);
      rx_pulses(:,j) = rx_pulses(:,j) + ...
               rx(rsig);
    end
end

Постройте величину некогерентного интегрирования полученных сигналов определить местоположение возвратов двух целей.

figure
rx_pulses = pulsint(rx_pulses,'noncoherent');
plot(t,abs(rx_pulses))
grid on
xlabel('Time (s)')
ylabel('Amplitude (V)')
title('Integrated Received Pulses')

Цели, которые разделяются относительно большое расстояние, появляются как отличные возвраты. Увеличьте масштаб первого возврата.

xlim([0.55 0.85])

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

Активный гидролокатор с коридорным

В предыдущем разделе звуковая скорость была постоянной в зависимости от глубины канала. В отличие от этого программа трассировки лучей как Коридорный может сгенерировать акустические пути для пространственно различных звуковых профилей скорости. Можно использовать информацию о пути, сгенерированную Коридорным, чтобы распространить сигналы через многопутевой канал. Симулируйте передачу между изотропным проектором и изотропным гидрофоном в среде без целей с профилем скорости звука 'Munk'. Информация о пути содержится в файле прибытия Коридорного (MunkB_eigenray_Arr.arr).

Настройка коридорного

В этом примере канал составляет 5 000 метров подробно. Источник расположен на глубине 1 000 метров, и приемник расположен на глубине 800 метров. Они разделяются на 100 километров в области значений. Импортируйте и постройте пути, вычисленные Коридорным.

[paths,dop,aloss,rcvAng,srcAng] = helperBellhopArrivals(fc,6,false);
helperPlotPaths('MunkB_eigenray')

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

Создайте новый канал и приемник, чтобы использовать с данными от Коридорного.

release(collector)
channelBellhop = phased.MultipathChannel(...
          'SampleRate',fs,...
          'OperatingFrequency',fc);

rx = phased.ReceiverPreamp(...
    'Gain',10,...
    'NoiseFigure',10,...
    'SampleRate',fs,...
    'SeedSource','Property',...
    'Seed',2007);

Задайте импульс для новой проблемной настройки.

maxRange = 150000;                        % Maximum unambiguous range
prf = propSpeed/(maxRange);               % Pulse repetition frequency
pulse_width = 0.02;
wav = phased.RectangularWaveform(...
    'PulseWidth',pulse_width,...
    'PRF',prf,...
    'SampleRate',fs);

Симуляция коридорного

Затем симулируйте передачу десяти импульсов с передатчика на приемник.

x = repmat(wav(),1,size(paths,2));
xmits = 10;
rx_pulses = zeros(size(x,1),xmits);
t = (0:size(x,1)-1)/fs;

for j = 1:xmits

      % Projector
      tsig = x.*proj(fc,srcAng)';

      % Propagate radiated signals through the channel.
      tsig = channelBellhop(tsig,paths,dop,aloss);

      % Collector
      rsig = collector(tsig,rcvAng);
      rx_pulses(:,j) = rx_pulses(:,j) + ...
               rx(rsig);
end

Постройте некогерентное интегрирование переданных импульсов.

figure
rx_pulses = pulsint(rx_pulses,'noncoherent');
plot(t,abs(rx_pulses))
grid on
xlim([66 70])
xlabel('Time (s)')
ylabel('Amplitude (V)')
title('Integrated Received Pulses')

Переданные импульсы появляются как peaks в ответе. Обратите внимание на то, что два прямых пути, которые не имеют никаких интерфейсных отражений, прибывают сначала и имеют самую высокую амплитуду. В сравнении прямого пути получил импульсы, второй импульс, чтобы прибыть имеет более высокую амплитуду этих двух, указывая на более короткое расстояние распространения. Более длительное время задержки для более короткого пути может быть объяснено тем, что это распространяет через самую медленную часть канала. Остающиеся импульсы имеют приведенную амплитуду по сравнению с прямыми путями из-за нескольких отражений в нижней части канала, каждый способствующий потере.

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

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

Ссылка

Urick, Роберт. Принципы подводного звука. Лос-Алтос, Калифорния: Peninsula Publishing, 1983.