step

Системный объект: twoRayChannel

Распространите сигнал от точки к точке с помощью модели двухлучевого канала

Синтаксис

prop_sig = step(channel,sig,origin_pos,dest_pos,origin_vel,dest_vel)

Описание

Примечание

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

prop_sig = step(channel,sig,origin_pos,dest_pos,origin_vel,dest_vel) возвращает результирующий сигнал, prop_sig, когда узкополосный сигнал, sig, распространяется через двухлучевой канал от origin_pos положение в dest_pos положение. Либо origin_pos или dest_pos аргументы могут иметь несколько точек, но вы не можете задать обе как имеющие несколько точек. Скорость источника сигнала задана в origin_vel и скорость адресата сигнала задана в dest_vel. Размерности origin_vel и dest_vel должен согласиться с размерностями origin_pos и dest_pos, соответственно.

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

В двухлучевом окружении существует два сигнальных пути, соединяющих каждую пару источника и назначения сигнала. Для начала N сигнала (или N пунктов назначения сигнала) существует 2N количество путей. Сигналы для каждой пары origin-destination не должны быть связаны. Сигналы вдоль двух путей для любой пары один источник-адресат также могут различаться из-за различий в фазе или амплитуде.

Можно сохранить эти два сигнала в пункте назначения раздельными или комбинированными - управляемые CombinedRaysOutput свойство. Комбинированные означает, что сигналы в источнике распространяются отдельно по двум путям, но когерентно суммируются в пункте назначения в одну величину. Чтобы использовать отдельную опцию, задайте CombinedRaysOutput на false. Чтобы использовать объединенную опцию, задайте CombinedRaysOutput на true. Эта опция удобна, когда различие между усилениями датчика или массива в направлениях двух путей не значительна и не должна учитываться.

Примечание

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

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

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

Двухлучевой канал, заданный как a Системный объект.

Пример: twoRayChannel

  • Узкополосный неполярный скалярный сигнал, заданный как

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

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

  • Узкополосный поляризованный сигнал, заданный как

    • 1-by- N struct массив, содержащий комплексные поля. Каждый struct содержит общий поляризованный сигнал, распространенный как вдоль линии видимости, так и вдоль отраженного пути. Каждый элемент структуры содержит вектор-столбец компонентов электромагнитного поля M (sig.X,sig.Y,sig.Z). Вы можете использовать эту форму, когда оба сигнала пути одинаковы.

    • 1-by- 2N struct массив, содержащий комплексные поля. Каждая смежная пара столбцов массива представляет другой канал. Внутри каждой пары первый столбец представляет сигнал вдоль линии видимости, а второй столбец представляет сигнал вдоль отраженного пути. Каждый элемент структуры содержит вектор-столбец компонентов электромагнитного поля M (sig.X,sig.Y,sig.Z).

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

Размер первой размерности матрицы входа может варьироваться, чтобы симулировать изменяющуюся длину сигнала. Изменение размера может произойти, например, в случае импульсного сигнала с переменной частотой повторения импульса.

Для поляризованных полей struct элемент содержит три M -by-1 вектора-столбца с комплексным значением, sig.X, sig.Y, и sig.Z. Эти векторы представляют x, y, и z Декартовские компоненты поляризованного сигнала.

Размер первой размерности матричных полей в struct может изменяться, чтобы симулировать изменяющуюся длину сигнала, такую как импульсный сигнал с переменной частотой повторения импульса.

Пример: [1,1;j,1;0.5,0]

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

Источник сигнала или сигналов, заданное как вектор-столбец с реальным значением 3 на 1 или матрица N реальным значением 3 байта. Величина N является количеством двухлучевых каналов. Если origin_pos является вектор-столбец, принимает форму [x;y;z]. Если origin_pos является матрицей, каждый столбец задает разный источник сигнала и имеет вид [x;y;z]. Позиционные модули - метры.

origin_pos и dest_pos не могут быть заданы как матрицы - по крайней мере, одна должна быть вектором-столбцом 3 на 1.

Пример: [1000;100;500]

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

Положение назначения сигнала или сигналов, заданное как вектор-столбец с реальным значением 3 на 1 или матрица N реальным значением 3 байта. Величина N является количеством двухлучевых каналов, распространяющихся от или до N источников сигнала. Если dest_pos является вектор-столбец 3 на 1, принимает форму [x;y;z]. Если dest_pos является матрицей, каждый столбец задает разное назначение сигнала и принимает форму [x;y;z] Позиционные модули указаны в метрах.

Вы не можете задать origin_pos и dest_pos как матрицы. По крайней мере, один должен быть вектором-столбцом 3 на 1.

Пример: [0;0;0]

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

Скорость источника сигнала, заданная как вектор-столбец с реальным значением 3 на 1 или матрица с реальным N 3 байта. Размерности origin_vel должен совпадать с размерностями origin_pos. Если origin_vel является вектор-столбец, принимает форму [Vx;Vy;Vz]. Если origin_vel является 3-бай- N матрицей, каждый столбец задает разную начальную скорость и имеет вид [Vx;Vy;Vz]. Модули скорости указаны в метрах в секунду.

Пример: [10;0;5]

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

Скорость назначения сигнала, заданная как вектор-столбец с реальным значением 3 на 1 или матрица N реальным значением 3 байта. Размерности dest_vel должен совпадать с размерностями dest_pos. Если dest_vel является вектор-столбец, принимает форму [Vx;Vy;Vz]. Если dest_vel является 3-бай- N матрицей, каждый столбец задает разную скорость назначения и имеет вид [Vx;Vy;Vz] Модули скорости указаны в метрах в секунду.

Пример: [0;0;0]

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

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

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

  • Узкополосный неполярный скалярный сигнал, возвращаемый как:

    • M -by N комплексно-значимую матрицу. Чтобы вернуть этот формат, установите CombinedRaysOutput свойство к true. Каждый матричный столбец содержит когерентно объединенные сигналы от линии видимости и отраженного пути.

    • M -by 2N комплексно-значимую матрицу. Чтобы вернуть этот формат, установите CombinedRaysOutput свойство к false. Альтернативные столбцы матрицы содержат сигналы от пути линии видимости и отраженного пути.

  • Узкополосный поляризованный скалярный сигнал, возвращаемый как:

    • 1-by- N struct массив, содержащий комплексные поля. Чтобы вернуть этот формат, установите CombinedRaysOutput свойство к true. Каждый столбец массива содержит когерентно объединенные сигналы от линии видимости и отраженного пути. Каждый структурный элемент содержит вектор электромагнитного поля (prop_sig.X,prop_sig.Y,prop_sig.Z).

    • 1-by- 2N struct массив, содержащий комплексные поля. Чтобы вернуть этот формат, установите CombinedRaysOutput свойство к false. Альтернативные столбцы содержат сигналы от пути линии видимости и отраженного пути. Каждый структурный элемент содержит вектор электромагнитного поля (prop_sig.X,prop_sig.Y,prop_sig.Z).

Область выхода prop_sig содержит выборки сигнала, поступающие в пункт назначения сигнала в течение текущей входной системы координат времени. Всякий раз, когда это занимает больше, чем текущая временная система координат, чтобы сигнал распространялся от источника к месту назначения, выход может не содержать всех вкладов от входа текущей временной системы координат. Оставшиеся выходы появятся при следующем вызове step.

Примеры

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

Распространите сигнал в двухлучевом канале окружения от радара на (0,0,10) метрах до цели на (300 200 30) метрах. Предположим, что радар и цель являются стационарными и что передающая антенна имеет косинусоидный шаблон. Сравните объединенные сигналы от двух путей с одним сигналом, полученным из распространения свободного пространства. Установите CombinedRaysOutput на true для формирования комбинированного распространенного сигнала.

Создайте прямоугольную форму волны

Установите частоту дискретизации 2 МГц.

fs = 2e6;
waveform = phased.RectangularWaveform('SampleRate',fs);
wavfrm = waveform();

Создайте передающую антенну и излучателя

Настройка phased.Radiator Система object™ для передачи от косинусоидной антенны

antenna = phased.CosineAntennaElement;
radiator = phased.Radiator('Sensor',antenna);

Задайте координаты передатчика и цели

posTx = [0;0;10];
posTgt = [300;200;30];
velTx = [0;0;0];
velTgt = [0;0;0];

Распространение свободного пространства

Вычислите направление передачи к цели для модели свободного пространства. Затем излучайте сигнал.

[~,angFS] = rangeangle(posTgt,posTx); 
wavTx = radiator(wavfrm,angFS);

Передайте сигнал на цель.

fschannel = phased.FreeSpace('SampleRate',waveform.SampleRate);
yfs = fschannel(wavTx,posTx,posTgt,velTx,velTgt);
release(radiator);

Двухлучевое распространение

Вычислите два углов передачи к цели для пути линии видимости (LOS) и отраженных путей. Вычислите направления передачи к цели для двух лучей. Затем излучайте сигналы.

[~,angTwoRay] = rangeangle(posTgt,posTx,'two-ray');
wavTwoRay = radiator(wavfrm,angTwoRay);

Распространите сигналы на цель.

channel = twoRayChannel('SampleRate',waveform.SampleRate,...
    'CombinedRaysOutput',true);
y2ray = channel(wavTwoRay,posTx,posTgt,velTx,velTgt);

Постройте график распространенных сигналов

Постройте график объединенного сигнала против сигнала свободного пространства

plot(abs([y2ray yfs]))
legend('Two-ray','Free space')
xlabel('Samples')
ylabel('Signal Magnitude')

Распространите сигнал в двухлучевом канале окружения от радара на (0,0,10) метрах до цели на (300 200 30) метрах. Предположим, что радар и цель являются стационарными и что передающая антенна имеет косинусоидный шаблон. Сравните объединенные сигналы от двух путей с одним сигналом, полученным из распространения свободного пространства. Установите CombinedRaysOutput на true для формирования комбинированного распространенного сигнала.

Создайте прямоугольную форму волны

Установите частоту дискретизации 2 МГц.

fs = 2e6;
waveform = phased.RectangularWaveform('SampleRate',fs);
wavfrm = waveform();

Создайте передающую антенну и излучателя

Настройка phased.Radiator Система object™ для передачи от косинусоидной антенны

antenna = phased.CosineAntennaElement;
radiator = phased.Radiator('Sensor',antenna);

Задайте координаты передатчика и цели

posTx = [0;0;10];
posTgt = [300;200;30];
velTx = [0;0;0];
velTgt = [0;0;0];

Распространение свободного пространства

Вычислите направление передачи к цели для модели свободного пространства. Затем излучайте сигнал.

[~,angFS] = rangeangle(posTgt,posTx); 
wavTx = radiator(wavfrm,angFS);

Передайте сигнал на цель.

fschannel = phased.FreeSpace('SampleRate',waveform.SampleRate);
yfs = fschannel(wavTx,posTx,posTgt,velTx,velTgt);
release(radiator);

Двухлучевое распространение

Вычислите два углов передачи к цели для пути линии видимости (LOS) и отраженных путей. Вычислите направления передачи к цели для двух лучей. Затем излучайте сигналы.

[~,angTwoRay] = rangeangle(posTgt,posTx,'two-ray');
wavTwoRay = radiator(wavfrm,angTwoRay);

Распространите сигналы на цель.

channel = twoRayChannel('SampleRate',waveform.SampleRate,...
    'CombinedRaysOutput',true);
y2ray = channel(wavTwoRay,posTx,posTgt,velTx,velTgt);

Постройте график распространенных сигналов

Постройте график объединенного сигнала против сигнала свободного пространства

plot(abs([y2ray yfs]))
legend('Two-ray','Free space')
xlabel('Samples')
ylabel('Signal Magnitude')

Распространите линейный FM сигнал в двухлучевом канале. Сигнал распространяется от передатчика, расположенного в (1000,10,10) счетчики в глобальной системе координат в приемник в (10000,200,30) метров. Предположим, что передатчик и приемник являются стационарными и что они оба имеют косинусоидные шаблоны. Постройте график принимаемого сигнала.

Настройте радиолокационный сценарий. Сначала создайте необходимые системные объекты.

waveform = phased.LinearFMWaveform('SampleRate',1000000,...
    'OutputFormat','Pulses','NumPulses',2);
fs = waveform.SampleRate;
antenna = phased.CosineAntennaElement;
radiator = phased.Radiator('Sensor',antenna);
collector = phased.Collector('Sensor',antenna);
channel = twoRayChannel('SampleRate',fs,...
    'CombinedRaysOutput',false,'GroundReflectionCoefficient',0.95);

Настройте геометрию сцены. Задайте положения и скорости передатчика и приемника. Передатчик и приемник являются стационарными.

posTx = [1000;10;10];
posRx = [10000;200;30];
velTx = [0;0;0];
velRx = [0;0;0];

Задайте ориентации передающей и приемной радиолокационных антенн относительно глобальных координат. Передающая антенна указывает вдоль направления + x, а приемная антенна около, но не непосредственно в направлении -x.

laxTx = eye(3);
laxRx = rotx(5)*rotz(170);

Вычислите углы передачи, которые являются углами, которые два луча, движущиеся к приемнику, покидают передатчик. Поэтапный. Система object™ излучателя использует эти углы, чтобы применить отдельные усиления антенны к двум сигналам. Поскольку усиления антенны зависят от направления пути, вы должны передавать и принимать два луча отдельно.

[~,angTx] = rangeangle(posRx,posTx,laxTx,'two-ray');

Создавайте и излучайте сигналы от передатчика по направлениям передачи.

wavfrm = waveform();
wavtrans = radiator(wavfrm,angTx);

Передайте сигналы в приемник через двухлучевой канал.

wavrcv = channel(wavtrans,posTx,posRx,velTx,velRx);

Собирайте сигналы в приемнике. Вычислите угол, при котором два луча, перемещающиеся от передатчика, поступают в приемник. The phased.Collector Система object™ использует эти углы, чтобы применить отдельные усиления антенны к двум сигналам.

[~,angRcv] = rangeangle(posTx,posRx,laxRx,'two-ray');

Соберите и объедините два полученных луча.

yR = collector(wavrcv,angRcv);

Постройте график принятых сигналов.

dt = 1/fs;
n = size(yR,1);
plot((0:(n-1))*dt*1000000,real(yR))
xlabel('Time ({\mu}sec)')
ylabel('Signal Magnitude')

Распространите линейный FM сигнал в двухлучевом канале. Предположим, что происходит потеря сигнала, вызванная атмосферными газами и дождем. Сигнал распространяется от передатчика, расположенного в (0,0,0) счетчики в глобальной системе координат в приемник в (10000,200,30) метров. Предположим, что передатчик и приемник являются стационарными и что они оба имеют косинусоидные шаблоны. Постройте график принимаемого сигнала. Установите давление сухого воздуха 102,0 Па и скорость дождя 5 мм/ч.

Настройка радиолокационного сценария

Создайте необходимые системные объекты.

waveform = phased.LinearFMWaveform('SampleRate',1000000,...
    'OutputFormat','Pulses','NumPulses',2);
antenna = phased.CosineAntennaElement;
radiator = phased.Radiator('Sensor',antenna);
collector = phased.Collector('Sensor',antenna);
channel = twoRayChannel('SampleRate',waveform.SampleRate,...
    'CombinedRaysOutput',false,'GroundReflectionCoefficient',0.95,...
    'SpecifyAtmosphere',true,'Temperature',20,...
    'DryAirPressure',102.5,'RainRate',5.0);

Настройте геометрию сцены. Задайте положения и скорости передатчика и приемника. Передатчик и приемник являются стационарными.

posTx = [0;0;0];
posRx = [10000;200;30];
velTx = [0;0;0];
velRx = [0;0;0];

Задайте ориентации передающей и приемной радиолокационных антенн относительно глобальных координат. Передающая антенна указывает вдоль направления + x, а приемная антенна близко к направлению -x.

laxTx = eye(3);
laxRx = rotx(5)*rotz(170);

Вычислите углы передачи, которые являются углами, которые два луча, движущиеся к приемнику, покидают передатчик. Поэтапный. Система object™ излучателя использует эти углы, чтобы применить отдельные усиления антенны к двум сигналам. Поскольку усиления антенны зависят от направления пути, вы должны передавать и принимать два луча отдельно.

[~,angTx] = rangeangle(posRx,posTx,laxTx,'two-ray');

Создавайте и излучайте сигналы от передатчика

Излучайте сигналы по направлениям передачи.

wavfrm = waveform();
wavtrans = radiator(wavfrm,angTx);

Передайте сигналы в приемник через двухлучевой канал.

wavrcv = channel(wavtrans,posTx,posRx,velTx,velRx);

Сбор сигнала в приемнике

Вычислите угол, при котором два луча, перемещающиеся от передатчика, поступают в приемник. The phased.Collector Система object™ использует эти углы, чтобы применить отдельные усиления антенны к двум сигналам.

[~,angRcv] = rangeangle(posTx,posRx,laxRx,'two-ray');

Соберите и объедините два полученных луча.

yR = collector(wavrcv,angRcv);

Постройте график принимаемого сигнала

dt = 1/waveform.SampleRate;
n = size(yR,1);
plot((0:(n-1))*dt*1000000,real(yR))
xlabel('Time ({\mu}sec)')
ylabel('Signal Magnitude')

Ссылки

[1] Proakis, J. Digital Communications. Нью-Йорк: McGraw-Hill, 2001.

[2] Skolnik, M. Introduction to Радиолокационные Системы, 3rd Ed. New York: McGraw-Hill

[3] Основы распространения волн Saakian, A. Radio. Norwood, MA: Artech House, 2011.

[4] Balanis, C.Advanced Engineering Electromagnetics. Нью-Йорк: Wiley & Sons, 1989.

[5] Rappaport, T.Wireless Communications: Principles and Practice, 2nd Ed New York: Prentice Hall, 2002.

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Введенный в R2021a