step

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

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

Описание

Примечание

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

пример

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

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

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

Примечание

Объект выполняет инициализацию в первый раз, когда объект выполняется. Эта инициализация блокирует ненастраиваемые свойства (MATLAB) и входные спецификации, такие как размерности, сложность и тип данных входных данных. Если вы изменяете ненастраиваемое свойство или входную спецификацию, Системный объект выдает ошибку. Чтобы изменить ненастраиваемые свойства или входные параметры, необходимо сначала вызвать 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 с действительным знаком-by-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)')

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

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

Введенный в R2017a