Этот пример показывает, как симулировать пассивную гидроакустическую систему. Стационарный подводный акустический маяк обнаруживается и локализуется буксируемым пассивным массивом в мелководном канале. Акустический маяк передает 10-миллисекундный импульс с частотой 37,5 килогерц каждую секунду и моделируется как изотропный проектор. Локационная система буксирует пассивный массив под поверхностью, который моделируется как равномерный линейный массив. После обнаружения акустического сигнала-маяка для определения местоположения маяка используется устройство оценки направления прибытия.
В этом примере акустический маяк расположен на дне мелководного канала глубиной 200 метров. Пассивный массив буксируется под поверхностью, чтобы определить местоположение маяка.
Сначала создайте многолучевой канал, чтобы передать сигнал между маяком и пассивным массивом. Рассмотрим десять путей распространения, включая прямой путь и отражения от верхней и нижней поверхностей. Пути, сгенерированные isopaths
будет использоваться многолучевым каналом, channel
, чтобы симулировать распространение сигнала.
propSpeed = 1520; channelDepth = 200; OperatingFrequency = 37.5e3; isopaths = phased.IsoSpeedUnderwaterPaths('ChannelDepth',channelDepth,... 'NumPathsSource','Property','NumPaths',10,'PropagationSpeed',propSpeed); channel = phased.MultipathChannel('OperatingFrequency',OperatingFrequency);
Акустическая волна-маяк
Задайте форму волны, излучаемую акустическим маяком. Форма волны является прямоугольным импульсом, имеющим интервал повторения 1 секунду и ширину 10 миллисекунд.
prf = 1; pulseWidth = 10e-3; pulseBandwidth = 1/pulseWidth; fs = 2*pulseBandwidth; wav = phased.RectangularWaveform('PRF',prf,'PulseWidth',pulseWidth,... 'SampleRate',fs); channel.SampleRate = fs;
Акустический маяк
Затем задайте акустический маяк, который расположен на 1 метр выше дна канала. Акустический маяк моделируется как изотропный проектор. Акустический сигнал-маяк будет излучаться в дальнее поле.
projector = phased.IsotropicProjector('VoltageResponse',120); projRadiator = phased.Radiator('Sensor',projector,... 'PropagationSpeed',propSpeed,'OperatingFrequency',OperatingFrequency); beaconPlat = phased.Platform('InitialPosition',[5000; 2000; -199],... 'Velocity',[0; 0; 0]);
Пассивный буксируемый массив
Пассивная буксируемый массив обнаружит и локализует источник пингов и смоделирована как пятиэлементный линейный массив с полуволновым интервалом. Пассивный массив имеет скорость 1 м/с в направлении y. Ось массива ориентирована параллельно направлению движения.
hydrophone = phased.IsotropicHydrophone('VoltageSensitivity',-150); array = phased.ULA('Element',hydrophone,... 'NumElements',5,'ElementSpacing',propSpeed/OperatingFrequency/2,... 'ArrayAxis','y'); arrayCollector = phased.Collector('Sensor',array,... 'PropagationSpeed',propSpeed,'OperatingFrequency',OperatingFrequency); arrayPlat = phased.Platform('InitialPosition',[0; 0; -10],... 'Velocity',[0; 1; 0]);
Определите усилитель приемника для каждого гидрофонного элемента. Выберите коэффициент усиления 20 дБ и рисунок шума 10 дБ.
rx = phased.ReceiverPreamp(... 'Gain',20,... 'NoiseFigure',10,... 'SampleRate',fs,... 'SeedSource','Property',... 'Seed',2007);
Активируйте акустический маяк и передайте десять пингов. После задержки распространения pings появляются как peaks в принятых сигналах массива.
x = wav(); numTransmits = 10; rxsig = zeros(size(x,1),5,numTransmits); for i = 1:numTransmits % Update array and acoustic beacon positions [pos_tx,vel_tx] = beaconPlat(1/prf); [pos_rx,vel_rx] = arrayPlat(1/prf); % Compute paths between the acoustic beacon and array [paths,dop,aloss,rcvang,srcang] = ... isopaths(pos_tx,pos_rx,vel_tx,vel_rx,1/prf); % Propagate the acoustic beacon waveform tsig = projRadiator(x,srcang); rsig = channel(tsig,paths,dop,aloss); % Collect the propagated signal rsig = arrayCollector(rsig,rcvang); % Store the received pulses rxsig(:,:,i) = abs(rx(rsig)); end
Постройте график последнего полученного импульса. Из-за нескольких путей распространения каждый ping является суперпозицией нескольких импульсов.
t = (0:length(x)-1)'/fs; plot(t,rxsig(:,end)) xlabel('Time (s)'); ylabel('Signal Amplitude (V)')
Оцените направление прибытия акустического маяка относительно массива. Создайте объект MUSIC estimator, задав в качестве выхода один исходный сигнал и направление прихода. Используйте скан угловую сетку с шагом 0,1 степеней.
musicspatialspect = phased.MUSICEstimator('SensorArray',array,... 'PropagationSpeed',propSpeed,'OperatingFrequency',... OperatingFrequency,'ScanAngles',-90:0.1:90,'DOAOutputPort',true,... 'NumSignalsSource','Property','NumSignals',1);
Затем соберете пинги для еще 500 интервалов повторения. Оцените направление прибытия для каждого интервала повторения и сравните оценки с истинным направлением прибытия.
numTransmits = 500; angPassive = zeros(numTransmits,1); angAct = zeros(numTransmits,1); for i = 1:numTransmits % Update array and acoustic beacon positions [pos_tx,vel_tx] = beaconPlat(1/prf); [pos_rx,vel_rx] = arrayPlat(1/prf); % Compute paths between acoustic beacon and the array [paths,dop,aloss,rcvang,srcang] = ... isopaths(pos_tx,pos_rx,vel_tx,vel_rx,1/prf); angAct(i) = rcvang(1,1); % Propagate the acoustic beacon waveform tsig = projRadiator(x,srcang); rsig = channel(tsig,paths,dop,aloss); % Collect the propagated signal rsig = arrayCollector(rsig,rcvang); rxsig = rx(rsig); % Estimate the direction of arrival [~,angPassive(i)] = musicspatialspect(rxsig); end
Постройте график расчетных углов прихода и истинных направлений прихода для каждого интервала повторения импульса.
plot([angPassive angAct]) xlabel('Pulse Number') ylabel('Arrival angle (degrees)') legend('Estimated DOA','Actual DOA')
Предполагаемые и фактические направления прибытия согласуются в пределах менее одного степени.
В этом примере передача акустических чисел между маяком и пассивным массивом была моделирована в мелководном канале. Каждый пинг принимался по десяти акустическим путям. Направление прибытия маяка оценивалось относительно пассивного массива для каждого полученного пинга и сравнивалось с истинным направлением прибытия. Направление прибытия может использоваться, чтобы найти и восстановить маяк.
Урик, Роберт. Принципы подводного звука. Los Altos, Калифорния: Peninsue Publishing, 1983.