exponenta event banner

поэтапный. MultipathChannel

Распространение сигналов в многолучевом канале

Описание

phased.MultipathChannel Система object™ распространяет сигнал по многолучевому каналу. Чтобы запустить объект, необходимо предоставить характеристики для каждого пути: временная задержка, усиление, коэффициент Доплера, потери отражения и потери распространения.

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

Для моделирования распространения сигнала по многолучевому каналу:

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

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

Примечание

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

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

propagator = phased.MultipathChannel создает объект системы распространения сигналов для многолучевого подводного канала.

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

Свойства

развернуть все

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

Пример: 10000

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

Частота дискретизации сигнала, заданная как положительный действительный скаляр. Единицы измерения в Гц. Объект System использует эту величину для вычисления задержки распространения в единицах выборки.

Пример: 3e3

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

Источник максимального значения задержки, указанного как 'Auto' или 'Property'. При установке для этого свойства значения 'Auto'канал автоматически выделяет достаточно памяти для моделирования задержки распространения. При установке для этого свойства значения 'Property', можно указать максимальную задержку с помощью MaximumDelay собственность. Сигналы, поступающие после максимальной задержки, игнорируются.

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

Зависимости

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

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

Метод интерполяции, используемый для реализации дробной задержки сигнала и доплеровского расширения времени и сжатия, указанный как 'Linear' или 'Oversample'. Если для этого свойства установлено значение 'Linear'входной сигнал линейно интерполируется непосредственно на однородную сетку для распространения сигнала. Если для этого свойства установлено значение 'Oversample'входной сигнал повторно дискретизируется на более высокую скорость перед линейной интерполяцией. Для широкополосных сигналов избыточная выборка сохраняет спектральную форму.

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

Методы

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

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

Примеры

свернуть все

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

Создайте канал и укажите местоположение и скорости источника и приемника.

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

Вычислите матрицу пути, коэффициент Доплера и потери.

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

Создайте 500 выборок сигнала 100 Гц. Предположим, что все тракты имеют одинаковый сигнал. Распространение сигналов на приемник.

fs = 1e3;
nsamp = 500;
propagator = phased.MultipathChannel('OperatingFrequency',10e3,'SampleRate',fs);
t = [0:(nsamp-1)]'/fs;
sig0 = sin(2*pi*100*t);
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.

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

speed = -20*1000/3600;
numpaths = 7;
csound = 1515.0;
channel = phased.IsoSpeedUnderwaterPaths('ChannelDepth',200, ...
    'PropagationSpeed',csound,'BottomLoss',10,'NumPathsSource','Property', ...
    'NumPaths',numpaths,'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] = channel(srcpos,tgtpos,srcvel,tgtvel,tstep);

Создайте сигнал 100 Гц с 500 выборками. Предположим, что все тракты имеют одинаковый сигнал, но с разными амплитудами. Затем распространите сигналы на цель и обратно. Можно использовать информацию об угле для вычисления любой угловой зависимости исходных и целевых откликов. Каждый канал может иметь различную амплитуду. В этом примере используется простая косинусная модель.

fs = 1e3;
nsamp = 500;
propagator = phased.MultipathChannel('OperatingFrequency',10e3,'SampleRate',fs);
t = [0:(nsamp-1)]'/fs;
ampsrc = cosd(srcangs(2,:));
amptgt = cosd(tgtangs(2,:));
sig0 = sin(2*pi*100*t);
sig = repmat(sig0,1,numpaths);
amptotal = ampsrc.^2.*amptgt;
sig = bsxfun(@times,amptotal,sig);

Из-за конечной задержки распространения первый вызов распространителя не возвращает сигнал. Звонить propagator дважды для получения возвращенного сигнала.

propsig = propagator(sig,pathmat,dop,aloss);
propsig = propagator(sig,pathmat,dop,aloss);

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

rng = rangeangle(srcpos,tgtpos);
tr = rng/csound;
plot((t+tr)*1000,real(sum(propsig,2)))
xlabel('Time (millisec)')

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

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