phased.IsoSpeedUnderwaterPaths

Изоскорость многопутевой канал гидролокатора

Описание

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

Типы данных: логический

Методы

сбросСбросьте состояние Системного объекта
шагСоздайте пути к распространению в изоскорости многопутевой звуковой канал
Характерный для всех системных объектов
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] Urick, R.J. Принципы подводного звукового, 3-го выпуска. Нью-Йорк: Peninsula Publishing, 1996.

[2] Шерман, C.S. и преобразователи J.Butler и массивы для подводного звука. Нью-Йорк: Спрингер, 2007.

[3] Аллен, Дж.Б. и Д. Беркели, “Метод изображений для того, чтобы эффективно симулировать акустику небольшой комнаты”, Дж. Акуст. Soc. Vol 65, № 4. Апрель 1979.

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

Введенный в R2017a