step

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

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

Описание

Примечание

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

пример

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

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

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

Примечание

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

Примечание

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

Входные параметры

расширить все

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

Пример: phased.MultipathChannel

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

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

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

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

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

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

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

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

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

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

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

расширить все

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

Примеры

расширить все

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

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

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

Введенный в R2017a