phased.IsoSpeedUnderwaterPaths

Многолучевой гидроакустический канал Isospeed

Описание

The phased.IsoSpeedUnderwaterPaths Система object™ создает подводный акустический канал для распространения узкополосного звука от точки к точке. Канал имеет конечную постоянную глубину с воздушно-водными и водно-донными границами. Оба интерфейса являются плоскими и горизонтальными. Скорость звука постоянна по всему каналу. Объект генерирует несколько путей распространения в канале с помощью акустического метода изображений (см. [3]). Поскольку скорость звука постоянна, все пути распространения являются прямыми линиями между источником, контурами и приемником. Всегда существует один прямой путь видимости. Для каждого пути распространения объект выводит зависимую от диапазона задержку времени, усиление, доплеровский коэффициент, потери отражения и потери расширения. Можно использовать данные канала как вход для многолучевого распространения звука, phased.MultipathChannel.

Чтобы смоделировать изопроницаемый канал:

  1. Определите и настройте канал. Можно задать phased.IsoSpeedUnderwaterPaths Свойства системного объекта во время конструкции или оставьте их равными значениям по умолчанию. См. «Конструкция». Некоторые свойства, заданные во время конструкции, могут быть изменены позже. Эти свойства настраиваются.

  2. Чтобы создать многолучевой канал, вызовите step метод phased.IsoSpeedUnderwaterPaths. Выход метода зависит от свойств phased.IsoSpeedUnderwaterPaths Системный объект. Изменять настраиваемые свойства можно в любой момент.

Примечание

Вместо использования step метод для выполнения операции, заданной системным объектом, можно вызвать объект с аргументами, как если бы это была функция. Для примера, y = step(obj,x) и y = obj(x) выполнять эквивалентные операции.

Конструкция

channel = phased.IsoSpeedUnderwaterPaths создает изоспеидный многолучевой подводный канал Системного объекта, channel.

channel = phased.IsoSpeedUnderwaterPaths(Name,Value) создает изоспеидный многолучевой подводный канал Системного объекта, channel, с каждым заданным свойством Name установить на заданную Value. Можно задать дополнительные аргументы в виде пар имен и значений в любом порядке как (Name1,Value1..., NameN,ValueN).

Свойства

расширить все

Глубина канала, заданная как положительная скалярная величина. Модули измерения указаны в метрах.

Пример: 250.0

Типы данных: double

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

Пример: 1502.0

Типы данных: double

Источник количества путей распространения, заданный как 'Auto' или 'Property'. Если вы задаете это свойство равным 'Auto'объект автоматически определяет количество путей на основе потерь расширения и отражения. Если вы задаете это свойство равным 'Property', вы задаете количество путей используя NumPaths свойство.

Когда NumPathsSource установлено в 'Auto'возвращаются только пути, имеющие общую потерю более чем на 20 дБ ниже прямых потерь пути.

Пример: 'Property'

Типы данных: char

Количество путей распространения, заданное как положительное целое число от 1 до 51 включительно.

Пример: 11

Зависимости

Чтобы включить это свойство, установите NumPathsSource свойство к 'Property'.

Типы данных: double

Время когерентности канала, заданное как неотрицательный скаляр. Время когерентности является мерой временной устойчивости канала. Объект хранит запись совокупного времени шага. Когда совокупное время шага превышает время когерентности, пути распространения пересчитываются, и совокупное время шага сбрасывается до нуля. Если для этой величины задан нуль, пути распространения обновляются при каждом вызове на step. Модули указаны в секундах.

Пример: 5.0

Типы данных: double

Потери отражения дна, заданные как неотрицательный скаляр. Это значение применяется к каждому нижнему отражению пути. Модули указаны в дБ.

Пример: 10

Типы данных: double

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

Пример: [1000:100:3000]

Типы данных: double

Включите двухстороннее распространение, заданное как false или true. Установите это свойство на true для выполнения распространения туда и обратно между источником сигнала и местом назначения, указанным в step. Установите это свойство на false для выполнения только одностороннего распространения из источника в место назначения.

Пример: true

Типы данных: logical

Методы

сбросСброс состояния системного объекта
шагСоздайте пути распространения в изоспеидном многолучевом звуковом канале
Общий для всех системных объектов
release

Разрешить изменение значения свойства системного объекта

Примеры

свернуть все

Создайте подводный звуковой канал с 5 путями и отобразите матрицу пути распространения. Предположим, что источник является стационарным, и приемник движется вдоль оси X к источнику со скоростью 20 км/ч. Предположим одностороннее распространение.

speed = -20*1000/3600;
numpaths = 5;
channelpaths = phased.IsoSpeedUnderwaterPaths('ChannelDepth',200,'BottomLoss',10, ...
    'NumPathsSource','Property','NumPaths',numpaths,'CoherenceTime',5);
tstep = 1;
srcpos = [0;0;-160];
rcvpos = [500;0;-50];
srcvel = [0;0;0];
rcvvel = [speed;0;0];
pathmat = channelpaths(srcpos,rcvpos,srcvel,rcvvel,tstep);
disp(pathmat)
    0.3356    0.3556    0.4687    0.3507    0.3791
    1.0000   -1.0000   -0.3162    0.3162   -0.3162
   54.1847   54.6850   57.0766   54.5652   55.2388

Первая строка содержит задержку в секундах. Вторая строка содержит коэффициенты потерь нижнего отражения, а третья строка содержит потери расширения в дБ. Коэффициент потерь отражения для первого пути равен 1,0, потому что прямой путь не имеет граничных отражений. Коэффициент потерь отражения для второго пути равен -1,0, потому что путь имеет только поверхностное отражение.

Создайте подводный звуковой канал с 7 траекториями и отобразите матрицу пути распространения. Предположим, что источник является стационарным, а цель движется вдоль оси X к источнику со скоростью 20 км/ч. Предположим двухстороннее распространение.

speed = -20*1000/3600;
numpaths = 7;
channelpaths = phased.IsoSpeedUnderwaterPaths('ChannelDepth',200,'BottomLoss',10, ...
    'NumPathsSource','Property','NumPaths',numpaths,'CoherenceTime',5,...
    'TwoWayPropagation',true);
tstep = 1;
srcpos = [0;0;-160];
tgtpos = [500;0;-50];
srcvel = [0;0;0];
tgtvel = [speed;0;0];
[pathmat,dop,aloss,tgtangs,srcangs] = channelpaths(srcpos,tgtpos,srcvel,tgtvel,tstep);
disp(pathmat)
    0.6712    0.7112    0.9374    1.0354    0.7014    0.7581    1.0152
    1.0000    1.0000    0.1000    0.1000    0.1000    0.1000    0.0100
  108.3693  109.3699  114.1531  115.8772  109.1304  110.4775  115.5355

Первая строка содержит задержку в секундах. Вторая строка содержит коэффициенты потерь нижнего отражения, а третья строка содержит потери расширения в дБ. Коэффициент потерь отражения для первого пути равен 1,0, потому что прямой путь не имеет граничных отражений. Коэффициент потерь отражения для второго пути равен -1,0, потому что путь имеет только поверхностное отражение.

Создайте подводный звуковой канал и постройте график объединенного принимаемого сигнала. Автоматический поиск количества путей. Предположим, что источник является стационарным и что приемник движется вдоль оси X к источнику со скоростью 20 км/ч. Примите одностороннее распространение по умолчанию.

speed = -20*1000/3600;
channel = phased.IsoSpeedUnderwaterPaths('ChannelDepth',200,'BottomLoss',5, ...
    'NumPathsSource','Auto','CoherenceTime',5);
tstep = 1;
srcpos = [0;0;-160];
rcvpos = [500;0;-50];
srcvel = [0;0;0];
rcvvel = [speed;0;0];

Вычислите матрицу пути, Допплеровский коэффициент и потери. Распространитель выходов 51 путь выхода но некоторые пути могут содержать Nan значения.

[pathmat,dop,absloss,rcvangs,srcangs] = channel(srcpos,rcvpos,srcvel,rcvvel,tstep);

Создайте сигнал 100 Гц с 500 выборками. Предположим, что все пути имеют один и тот же сигнал. Использование phased.MultipathChannel Системный объект для распространения сигналов на приемник. phased.MultipathChannel принимает как вход все пути, созданные phased.IsoSpeedUnderwaterPaths но игнорирует пути, которые имеют NaN значения.

fs = 1e3;
nsamp = 500;
propagator = phased.MultipathChannel('OperatingFrequency',10e3,'SampleRate',fs);
t = [0:(nsamp-1)]'/fs;
sig0 = sin(2*pi*100*t);
numpaths = size(pathmat,2);
sig = repmat(sig0,1,numpaths);
propsig = propagator(sig,pathmat,dop,absloss);

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

plot(t*1000,real(sum(propsig,2)))
xlabel('Time (millisec)')

Figure contains an axes. The axes contains an object of type line.

Сравните длительность распространенного сигнала от стационарного гидролокатора с длительностью движущегося гидролокатора. Движущийся гидролокатор имеет радиальную скорость 25 м/с от цели. В каждом случае распространите сигнал по одному пути. Предположим одностороннее распространение.

Задайте гидроакустические системные параметры: максимальную однозначную область значений, необходимое разрешение области значений, рабочую частоту и скорость распространения.

maxrange = 5000.0;
rngres = 10.0;
fc = 20.0e3;
csound = 1520.0;

Используйте прямоугольную форму волны для переданного сигнала.

prf = csound/(2*maxrange);
pulseWidth = 8*rngres/csound;
pulseBW = 1/pulseWidth;
fs = 80*pulseBW;
waveform = phased.RectangularWaveform('PulseWidth',pulseWidth,'PRF',prf, ...
    'SampleRate',fs);

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

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

Задайте целевое положение.

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

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

paths = phased.IsoSpeedUnderwaterPaths('ChannelDepth',100, ...
    'CoherenceTime',0,'NumPathsSource','Property','NumPaths',1, ...
    'PropagationSpeed',csound);
propagator = phased.MultipathChannel('SampleRate',fs,'OperatingFrequency',fc);

Создайте переданную форму волны.

wav = waveform();
nsamp = size(wav,1);
rxpulses = zeros(nsamp,2);
t = (0:nsamp-1)/fs;

Передайте сигнал и затем получите эхо-сигнал на стационарном гидроакустическом аппарате.

[pathmat,dop,aloss,~,~] = paths(sonarplatform1.InitialPosition, ...
    targetplatform.InitialPosition,sonarplatform1.InitialVelocity, ...
    targetplatform.InitialVelocity,1/prf);
rxpulses(:,1) = propagator(wav,pathmat,dop,aloss);

Передайте и получите на движущемся гидроакустическом аппарате.

[pathmat,dop,aloss,~,~] = paths(sonarplatform2.InitialPosition, ...
    targetplatform.InitialPosition,sonarplatform2.Velocity, ...
    targetplatform.Velocity,1/prf);
rxpulses(:,2) = propagator(wav,pathmat,dop,aloss);

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

plot(abs(rxpulses))
xlim([490 650])
ylim([0 1.65e-3])
legend('Stationary sonar','Moving sonar')
xlabel('Received Sample Time (sec)')
ylabel('Integrated Received Pulses')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Stationary sonar, Moving sonar.

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

Ссылки

[1] Урик, Р. Дж. Принципы подводного звука, 3-е издание. New York: Peninsula Publishing, 1996.

[2] Sherman, C.S. and J.Butler Transducers and Arrays for Underwater Sound. Нью-Йорк: Спрингер, 2007.

[3] Allen, J.B. and D. Berkely, «Image method for effectually simulating small-room acoustics», J. Acoust. Soc. Am, Vol 65, № 4. Апрель 1979 года.

Расширенные возможности

.
Введенный в R2017a