поэтапный. 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)')

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

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

Ссылки

[1] Urick, R.J. Принципы подводного звукового, 3-го выпуска. Нью-Йорк: Peninsula Publishing, 1996.

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

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

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

Введенный в R2017a