step

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

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

Синтаксис

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, распространяет через канал 2D луча от origin_pos положение к dest_pos положение. Любой origin_pos или dest_pos аргументы могут иметь несколько точек, но вы не можете задать обоих как имеющий несколько точек. Скорость источника сигнала задана в origin_vel и скорость места назначения сигнала задана в dest_vel. Размерности origin_vel и dest_vel должен согласиться с размерностями origin_pos и dest_pos, соответственно.

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

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

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

Примечание

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

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

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

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

Пример: twoRayChannel

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Целевое положение сигнала или сигналов в виде вектор-столбца с действительным знаком 3 на 1 или 3 N матрицей с действительным знаком. Количество N является количеством распространения каналов 2D луча от или до источников сигнала 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 или 3 N матрицей с действительным знаком. Размерности origin_vel должен совпадать с размерностями origin_pos. Если origin_vel вектор-столбец, он принимает форму [Vx;Vy;Vz]. Если origin_vel 3 N матрицей, каждый столбец задает различную скорость источника и имеет форму [Vx;Vy;Vz]. Скоростные единицы исчисляются в метрах в секунду.

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

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

Скорость мест назначения сигнала в виде вектор-столбца с действительным знаком 3 на 1 или 3 N матрицей с действительным знаком. Размерности 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 N struct массив, содержащий поля с комплексным знаком. Чтобы возвратить этот формат, установите CombinedRaysOutput свойство к true. Каждый столбец массива содержит когерентно объединенные сигналы от пути угла обзора и отраженного пути. Каждый элемент структуры содержит вектор электромагнитного поля (prop_sig.X,prop_sig.Y,prop_sig.Z).

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

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

Примеры

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

Распространите сигнал в среде канала 2D луча от радара в (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);

2D излучите распространение

Вычислите два угла передачи к цели для пути угла обзора (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')

Распространите сигнал в среде канала 2D луча от радара в (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);

2D излучите распространение

Вычислите два угла передачи к цели для пути угла обзора (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 в канале 2D луча. Сигнал распространяет от передатчика, расположенного в (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);

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

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

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

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

Распространите сигналы к приемнику через канал 2D луча.

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

Соберите сигналы в приемнике. Вычислите угол, под которым два луча, перемещающиеся из передатчика, прибывают в приемник. 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 в канале 2D луча. Примите, что существует потеря сигнала, вызванная атмосферными газами и дождем. Сигнал распространяет от передатчика, расположенного в (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-direction и точки приемной антенны близко к - x-направление.

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

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

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

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

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

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

Распространите сигналы к приемнику через канал 2D луча.

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

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

Вычислите угол, под которым два луча, перемещающиеся из передатчика, прибывают в приемник. 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. Цифровая связь. Нью-Йорк: McGraw-Hill, 2001.

[2] Skolnik, M. Введение в радиолокационные системы, 3-го Эда. Нью-Йорк: McGraw-Hill

[3] Саакян, основные принципы распространения волны A.Radio. Норвуд, MA: дом Artech, 2011.

[4] Balanis, электромагнетизм разработки C.Advanced. Нью-Йорк: Wiley & Sons, 1989.

[5] Rappaport, коммуникации T.Wireless: принципы и практика, 2-й Эд Нью-Йорк: Prentice Hall, 2002.

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

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

Введенный в R2021a