exponenta event banner

поэтапный. IsoSpeedUnderwaterPaths

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

Описание

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

Для моделирования isospeed-канала:

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

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

Примечание

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

Строительство

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

channel = phased.IsoSpeedUnderwaterPaths(Name,Value) создает isospeed многолучевого подводного канала System объект, 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

Методы

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

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

Примеры

свернуть все

Создайте 5-траекторный подводный звуковой канал и отобразите матрицу пути распространения. Предположим, что источник неподвижен, а приемник движется вдоль оси Х в направлении источника со скоростью 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, поскольку путь имеет только поверхностное отражение.

Создайте подводный звуковой канал и постройте график комбинированного принятого сигнала. Автоматически найти количество путей. Предположим, что источник неподвижен и что приемник движется вдоль оси х к источнику со скоростью 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. Principles of Underwater Sound, 3-е издание. Нью-Йорк: Peninsula Publishing, 1996.

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

[3] Аллен, Дж. Б. и Д. Беркли, «Метод изображения для эффективного моделирования акустики в небольших помещениях», Дж. Акоуст. Соц. Ам, том 65, № 4. Апрель 1979 года.

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

.
Представлен в R2017a