exponenta event banner

шаг

Системный объект: поэтапный. MultipathChannel
Пакет: поэтапный

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

Описание

Примечание

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

пример

propsig = step(propagator,sig,pathmat,dop,aloss) возвращает сигнал, propsig, распространяется по многолучевому каналу. sig - входной сигнал в канал. pathmat матрица содержит временную задержку пути, коэффициент полного отражения и потери на расширение. dop задает коэффициент Доплера и aloss определяет частотно-зависимые потери поглощения. Матрица может описывать одностороннее или двустороннее распространение от положения источника сигнала к положению назначения сигнала.

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

  • При использовании этого метода для двустороннего распространения адресат относится к отражающей цели, а не к гидроакустическому приёмнику. Двусторонний путь состоит из двух идентичных однонаправленных путей от источника к цели и обратно к приемнику (совмещенному с источником). Для моделирования активных гидроакустических систем можно использовать двустороннее распространение.

Примечание

Объект выполняет инициализацию при первом выполнении объекта. Эта инициализация блокирует неперестраиваемые свойства и входные спецификации, такие как размеры, сложность и тип данных входных данных. При изменении неперестраиваемого свойства или входной спецификации системный объект выдает ошибку. Чтобы изменить неперестраиваемые свойства или входные данные, необходимо сначала вызвать release метод разблокирования объекта.

Примечание

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

Входные аргументы

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

Распространитель многолучевого распространения, указанный как phased.MultipathChannel Системный объект.

Пример: phased.MultipathChannel

Канальный входной сигнал, определяемый как комплексная матрица M-by-N. M - количество выборок в сигнале, а N - количество трактов.

Типы данных: double
Поддержка комплексного номера: Да

Матрица путей распространения, заданная как вещественно-значная матрица 3-by-N. N - количество трактов в канале. Каждый столбец представляет путь. Строки матрицы представляют:

РядДанные
1Задержки распространения для каждого тракта. Единицы измерения в секундах.
2Суммарный коэффициент отражения для каждого пути. Единицы измерения безразмерны
3Увеличение потерь для каждого тракта. Единицы измерения находятся в дБ.

За исключением прямой траектории, траектории состоят из чередующихся поверхностных и донных отражений. Умножаются потери для множественных отражений на границах. При использовании phased.IsoSpeedUnderwaterPaths для создания матрицы пути некоторые столбцы могут содержать NaN значения. phased.MultipathChannel игнорирует эти пути.

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

Доплеровский коэффициент, заданный как действительный вектор N-by-1 строки, где N - число путей. Коэффициент Доплера умножает передаваемую частоту для получения частоты со сдвигом Доплера для каждого тракта. Коэффициент также определяет сокращение времени или расширение сигнала. Единицы измерения безразмерны.

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

Частотно-зависимые потери поглощения, определенные как вещественно-значная матрица K-by-N + 1. K - число частот, а N - число трактов. Первый столбец aloss содержит частоты поглощения-потери в Гц. Остальные колонки содержат потери поглощения для соответствующей частоты. Единицы измерения находятся в дБ.

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

Выходные аргументы

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

Выходной сигнал канала, возвращаемый в виде комплексной матрицы M-by-N. M - количество выборок в сигнале, а N - количество трактов. Выходной сигнал - это сигнал, распространяемый по каналу. propsig имеет те же размеры, что и входной сигнал, sig.

Примеры

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

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

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