шаг

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

Распространите сигналы в рассеивании канала MIMO

Синтаксис

Y = step(channel,X)
[YH,YV] = step(channel,[XH,XV])
[___] = step(___,txpos,txvel,txaxes)
[___] = step(___,rxpos,rxvel,rxaxes)
[___] = step(___,scatpos,scatvel,scatcoef)
[___] = step(___,scatpos,scatvel,scatmat,scataxes)
[___,CR,TAU] = step(channel,___)
[___,CR_HH,CR_HV,CR_VH,CR_V,TAU] = step(channel,___)
[Y,CR,TAU] = step(channel,X,txpos,txvel,txaxesrxpos,rxvel,rxaxes,scatpos,scatvel,scatcoef)

Описание

Примечание

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

пример

Y = step(channel,X) использует рассеивающийся канал MIMO, channel, чтобы распространить сигнал, X, от массива передачи к нескольким рассеивателям, и возвращает рассеянные сигналы, Y, к массиву получения.

Чтобы включить этот синтаксис, установите TransmitArrayMotionSource, ReceiveArrayMotionSource и свойства ScattererSpecificationSource к 'Property'.

пример

[YH,YV] = step(channel,[XH,XV])распространяет поляризованные сигналы, XH и XV, через H - порт и V - порт массива передачи. Объект возвращает полученные сигналы, YH и YV к H - порт и V - порт получить массива.

Чтобы включить этот синтаксис, установите свойство Polarization на 'Dual'.

пример

[___] = step(___,txpos,txvel,txaxes) также задает положение передачи массивов, скорость и ориентацию осей.

Чтобы включить этот синтаксис, установите свойства ReceiveArrayMotionSource и ScattererSpecificationSource на 'Property' и установите TransmitArrayMotionSource на 'Input port'.

пример

[___] = step(___,rxpos,rxvel,rxaxes) задает положение получения массивов, скорость и ориентацию осей.

Чтобы включить этот синтаксис, установите свойства TransmitArrayMotionSource и ScattererSpecificationSource на 'Property' и установите ReceiveArrayMotionSource на 'Input port'.

пример

[___] = step(___,scatpos,scatvel,scatcoef) задает положения рассеивателя и скорости и рассеивающиеся коэффициенты.

Чтобы включить этот синтаксис, установите свойства TransmitArrayMotionSource и ReceiveArrayMotionSource на 'Property', установите ScattererSpecificationSource на 'Input port' и установите свойство Polarization на 'None'.

пример

[___] = step(___,scatpos,scatvel,scatmat,scataxes) задает положения рассеивателя, scatpos, и скорости, scatvel, рассеивающуюся матрицу, scatmat, и оси ориентации рассеивателя, scataxes.

Чтобы включить этот синтаксис, установите свойства TransmitArrayMotionSource и ReceiveArrayMotionSource на 'Property', установите ScattererSpecificationSource на 'Input port' и установите свойство Polarization на 'Combined' или 'Dual'.

пример

[___,CR,TAU] = step(channel,___) также возвращает матрицу ответа канала, CR, и задержки пути к каналу, TAU, с помощью любой из предыдущих комбинаций входных аргументов.

Чтобы включить этот синтаксис, установите свойство ChannelResponseOutputPort на true и установите свойство Polarization на 'None' или 'Combined'.

[___,CR_HH,CR_HV,CR_VH,CR_V,TAU] = step(channel,___) также возвращает матрицы ответа канала, CR_HH, CR_HV, CR_VH и CR_V, с помощью любой из предыдущих комбинаций входных аргументов.

Чтобы включить этот синтаксис, установите свойство ChannelResponseOutputPort на true и установите свойство Polarization на 'Dual'.

Можно объединить дополнительные входные параметры, когда их свойства включения установлены. Например, [Y,CR,TAU] = step(channel,X,txpos,txvel,txaxesrxpos,rxvel,rxaxes,scatpos,scatvel,scatcoef).

Примечание

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

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

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

Рассеивание канала MIMO, заданного как Системный объект phased.ScatteringMIMOChannel.

Пример: phased.ScatteringMIMOChannel

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

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

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

Зависимости

Чтобы включить этот аргумент, установите свойство Polarization на 'None' или 'Combined'.

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

Переданный узкополосный H - сигнал поляризации, заданный как M-by-Nt матрица с комплексным знаком. Количество M является количеством выборок в сигнале и Nt, является количеством передачи элементов массива. Каждый столбец представляет сигнал, переданный соответствующим элементом массива.

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

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

Зависимости

Чтобы включить этот аргумент, установите свойство Polarization на 'Dual'.

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

Переданный узкополосный V - сигнал поляризации, заданный как M-by-Nt матрица с комплексным знаком. Количество M является количеством выборок в сигнале и Nt, является количеством передачи элементов массива. Каждый столбец представляет сигнал, переданный соответствующим элементом массива.

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

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

Зависимости

Чтобы включить этот аргумент, установите свойство Polarization на 'Dual'.

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

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

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

Зависимости

Чтобы включить этот аргумент, установите свойство TransmitArrayMotionSource на 'Input port'.

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

Скорость передачи антенной решетки, заданной как трехэлементный вектор-столбец с действительным знаком, принимающий форму [vx;vy;vz]. Векторные элементы соответствуют x, y и скоростям z массива. Модули исчисляются в метрах в секунду.

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

Зависимости

Чтобы включить этот аргумент, установите свойство TransmitArrayMotionSource на 'Input port'.

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

Ориентация осей передачи антенной решетки, заданной как 3х3 действительная ортонормированная матрица с действительным знаком. Матрица задает ориентацию системы локальной координаты массивов относительно глобальных координат. Столбцы матрицы соответствуют направлениям x, y и осей z системы локальной координаты. Модули являются безразмерными.

Пример: rotx(35)

Зависимости

Чтобы включить этот аргумент, установите свойство TransmitArrayMotionSource на 'Input port'.

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

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

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

Зависимости

Чтобы включить этот аргумент, установите свойство ReceiveArrayMotionSource на 'Input port'.

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

Скорость получения антенной решетки, заданной как трехэлементный вектор-столбец с действительным знаком, принимающий форму [vx;vy;vz]. Векторные элементы соответствуют x, y и скоростям z массива. Модули исчисляются в метрах в секунду.

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

Зависимости

Чтобы включить этот аргумент, установите свойство ReceiveArrayMotionSource на 'Input port'.

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

Ориентация осей получения антенной решетки, заданной как 3х3 действительная ортонормированная матрица с действительным знаком. Матрица задает ориентацию системы локальной координаты массивов относительно глобальных координат. Столбцы матрицы соответствуют направлениям x, y и осей z системы локальной координаты. Модули являются безразмерными.

Пример: rotx(35)

Зависимости

Чтобы включить этот аргумент, установите свойство ReceiveArrayMotionSource на 'Input port'.

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

Положения рассеивателей, заданных как 3 с действительным знаком Ns матрицей. Матрица содержит положения (x,y,z) рассеивателей. Каждый столбец матрицы задает различный рассеиватель и принимает форму [x;y;z]. Модули исчисляются в метрах.

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

Зависимости

Чтобы включить этот аргумент, установите свойство ScattererSpecificationSource на 'Input port'.

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

Скорости рассеивателей, заданных как 3 с действительным знаком Ns матрицей. Матрица содержит положения (vx,vy,vz) рассеивателей. Каждый столбец матрицы задает различный рассеиватель и принимает форму, которую Модули [vx;vy;vz] исчисляются в метрах в секунду.

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

Зависимости

Чтобы включить этот аргумент, установите свойство ScattererSpecificationSource на 'Input port'.

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

Рассеивание коэффициентов, заданных как 1 с комплексным знаком Nsrow вектором. Каждый векторный элемент задает рассеивающийся коэффициент соответствующего рассеивателя. Модули являются безразмерными.

Пример: [5+3*1i;4+1i;2]

Зависимости

Чтобы включить этот аргумент, установите свойство ScattererSpecificationSource на 'Input port' и свойство Polarization к 'None'.

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

Рассеивание матриц рассеивателей, заданных как 2 с комплексным знаком 2 Ns массивом, где N s является количеством рассеивателей. Каждая страница этого массива представляет рассеивающуюся матрицу рассеивателя. Каждая матрица рассеивания имеет форму [s_hh s_hv;s_vh s_vv]. Например, s_hv компонента задает комплексный ответ рассеивания, когда входной сигнал вертикально поляризован, и отраженный сигнал горизонтально поляризован. Другие компоненты заданы так же. Модули находятся в квадратных метрах.

Зависимости

Чтобы включить это свойство, установите свойство ScattererSpecificationSource на 'Input port' и свойство Polarization к 'Combined' или 'Dual'.

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

Оси ориентации рассеивателя, заданные как 3 с действительным знаком 3 Ns массивом, где N s является количеством рассеивателей. Каждая страница этого массива представляет матрицу осей ориентации рассеивателя. Столбцы матрицы представляют x - y - и z - оси рассеивателя. Модули являются безразмерными.

Зависимости

Чтобы включить это свойство, установите свойство ScattererSpecificationSource на 'Input port' и свойство Polarization к 'Combined' или 'Dual'.

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

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

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

Полученный узкополосный сигнал, возвращенный как M - матрица с комплексным знаком Номером. M является количеством выборок в сигнале, и Nr является количеством получения элементов массива. Каждый столбец представляет сигнал, полученный соответствующим элементом массива.

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

Зависимости

Чтобы включить этот аргумент, установите свойство Polarization на 'None' или 'Combined'.

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

Полученный узкополосный H - сигнал поляризации, возвращенный как M с комплексным знаком-by-Nr матрица. M является количеством выборок в сигнале, и Nr является количеством получения элементов массива. Каждый столбец представляет сигнал, полученный соответствующим элементом массива.

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

Зависимости

Чтобы включить этот аргумент, установите свойство Polarization на 'Dual'.

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

Полученный узкополосный V - сигнал поляризации, возвращенный как M с комплексным знаком-by-Nr матрица. M является количеством выборок в сигнале, и Nr является количеством получения элементов массива. Каждый столбец представляет сигнал, полученный соответствующим элементом массива.

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

Зависимости

Чтобы включить этот аргумент, установите свойство Polarization на 'Dual'.

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

Ответ канала, возвращенный как Nt-by-Nr-by-Nc массив с комплексным знаком.

  • Nt является количеством передачи элементов массива.

  • Nr является количеством получения элементов массива.

    • Когда вы задаете SimulateDirectPath как false, Nc = Ns, количество рассеивателей.

    • Когда вы задаете SimulateDirectPath как true, Nc = Ns + 1, чтобы составлять прямой путь.

Каждая страница массива соответствует матрице ответа канала для определенного рассеивателя.

Зависимости

Чтобы включить этот аргумент, установите свойство ChannelResponseOutputPort на true и свойство Polarization к 'None' или 'Combined'.

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

Ответ канала от входа H-поляризации до H-поляризации выходной параметр, возвращенный как Nt с комплексным знаком-by-Nr-by-Nc массив.

  • Nt является количеством передачи элементов массива.

  • Nr является количеством получения элементов массива.

    • Когда вы задаете SimulateDirectPath как false, Nc = Ns, количество рассеивателей.

    • Когда вы задаете SimulateDirectPath как true, Nc = Ns + 1, чтобы составлять прямой путь.

Каждая страница массива соответствует матрице ответа канала для определенного рассеивателя.

Зависимости

Чтобы включить этот аргумент, установите свойство ChannelResponseOutputPort на true и свойство Polarization к 'Dual'.

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

Ответ канала от входа H-поляризации до V-поляризации выходной параметр, возвращенный как Nt с комплексным знаком-by-Nr-by-Nc массив.

  • Nt является количеством передачи элементов массива.

  • Nr является количеством получения элементов массива.

    • Когда вы задаете SimulateDirectPath как false, Nc = Ns, количество рассеивателей.

    • Когда вы задаете SimulateDirectPath как true, Nc = Ns + 1, чтобы составлять прямой путь.

Каждая страница массива соответствует матрице ответа канала для определенного рассеивателя.

Зависимости

Чтобы включить этот аргумент, установите свойство ChannelResponseOutputPort на true и свойство Polarization к 'Dual'.

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

Ответ канала от входа V-поляризации до H-поляризации выходной параметр, возвращенный как Nt с комплексным знаком-by-Nr-by-Nc массив.

  • Nt является количеством передачи элементов массива.

  • Nr является количеством получения элементов массива.

    • Когда вы задаете SimulateDirectPath как false, Nc = Ns, количество рассеивателей.

    • Когда вы задаете SimulateDirectPath как true, Nc = Ns + 1, чтобы составлять прямой путь.

Каждая страница массива соответствует матрице ответа канала для определенного рассеивателя.

Зависимости

Чтобы включить этот аргумент, установите свойство ChannelResponseOutputPort на true и свойство Polarization к 'Dual'.

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

Ответ канала от входа V-поляризации до V-поляризации выходной параметр, возвращенный как Nt с комплексным знаком-by-Nr-by-Nc массив.

  • Nt является количеством передачи элементов массива.

  • Nr является количеством получения элементов массива.

    • Когда вы задаете SimulateDirectPath как false, Nc = Ns, количество рассеивателей.

    • Когда вы задаете SimulateDirectPath как true, Nc = Ns + 1, чтобы составлять прямой путь.

Каждая страница массива соответствует матрице ответа канала для определенного рассеивателя.

Зависимости

Чтобы включить этот аргумент, установите свойство ChannelResponseOutputPort на true и свойство Polarization к 'Dual'.

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

Задержки пути, возвращенные как 1 NC вектором с действительным знаком. Каждый элемент соответствует задержке пути от центра фазы передачи массивов до рассеивателя и затем к центру фазы получения массивов.

  • Когда вы задаете SimulateDirectPath как false, Nc = Ns, количество рассеивателей.

  • Когда вы задаете SimulateDirectPath как true, Nc = Ns + 1, чтобы составлять прямой путь.

Зависимости

Чтобы включить этот аргумент, установите свойство ChannelResponseOutputPort на true.

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

Примеры

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

Создайте 30 каналов GHz MIMO со случайными рассеивателями. Сценарий содержит стационарную передачу с 21 элементом массив ULA и стационарное получение с 15 элементами массив ULA. Антенны передачи имеют ответы косинуса, и антенны получения являются изотропными. Интервал элемента для обоих массивов является меньше, чем половина длины волны. Канал имеет 50 случайным образом сгенерированных статических рассеивателей в заданной ограничительной рамке. Массив передачи расположен в [0; 20; 50] метры и получить массив расположен в [200; 10; 10] метры. Вычислите распространенный сигнал через этот канал. Частота дискретизации для сигнала составляет 10 МГц.

fc = 30e9;
c = physconst('LightSpeed');
lambda = c/fc;
fs = 10e6;
txarray = phased.ULA('Element',phased.CosineAntennaElement,...
    'NumElements',21,'ElementSpacing',0.45*lambda);
rxarray = phased.ULA('Element',phased.IsotropicAntennaElement,...
    'NumElements',15,'ElementSpacing',0.45*lambda);

channel = phased.ScatteringMIMOChannel('TransmitArray',txarray,...
    'ReceiveArray',rxarray,'PropagationSpeed',c,'CarrierFrequency',fc,...
    'SampleRate',fs,'TransmitArrayPosition',[0;20;50],...
    'ReceiveArrayPosition',[200;10;10],'NumScatterers',50,...
    'ScattererPositionBoundary',[10 180; -30 30; -30 30]);

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

x = randi(2,[100 21]) - 1;

Вычислите полученные сигналы после распространения через канал.

y = channel(x);

Создайте канал MIMO, содержащий 3 фиксированных рассеивателя. Сценарий содержит передачу с 21 элементом массив ULA, действующий на уровне 72 ГГц и получение с 15 элементами массив ULA. Элементы передачи имеют формы ответа косинуса, и антенны получения являются изотропными. Только антенна передачи перемещается. Интервал элемента для обоих массивов является меньше, чем половина длины волны. Массив передачи запускается в (0,20,50) метры и двигает получатель на уровне 2 м/с. Массив получения расположен в (200,10,10) метры. Вычислите распространенный сигнал через этот канал. Частота дискретизации для сигнала составляет 10 МГц.

fc = 72e9;
c = physconst('LightSpeed');
lambda = c/fc;
fs = 10e6;
txplatform = phased.Platform('MotionModel','Velocity','InitialPosition', ...
    [0;20;50],'Velocity',[2;0;0]);
txarray = phased.ULA('Element',phased.CosineAntennaElement, ...
    'NumElements',21,'ElementSpacing',0.45*lambda);
rxarray = phased.ULA('Element',phased.IsotropicAntennaElement, ...
    'NumElements',15,'ElementSpacing',0.45*lambda);
channel = phased.ScatteringMIMOChannel('TransmitArray',txarray, ...
    'ReceiveArray',rxarray,'PropagationSpeed',c,'CarrierFrequency',fc,...
    'SampleRate',fs,'TransmitArrayMotionSource','Input port', ...
    'ReceiveArrayMotionSource','Property','ReceiveArrayPosition',[200;10;10],...
    'ReceiveArrayOrientationAxes',rotz(180),...
    'ScattererSpecificationSource','Property','ScattererPosition', ...
    [75 100 120; -10 20 12; 5 -5 8],'ScattererCoefficient',[1i,2+3i,-1+1i]);

Переместите платформы для двух временных шагов во вторых интервалах. В течение каждого раза экземпляр:

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

  • Переместите передатчик и получатель. Ориентации фиксируются.

  • Распространите сигналы от передатчиков до рассеивателей к получателю.

for k =1:2
    x = randi(2,[100 21]) - 1;
    [txpos,txvel] = txplatform(1);
    txaxes = eye(3);
    y = channel(x,txpos,txvel,txaxes);
end

Создайте канал MIMO, содержащий 3 фиксированных рассеивателя. Сценарий содержит передачу с 21 элементом массив ULA и получение с 15 элементами массив ULA. Оба массива, действующие на уровне 72 ГГц. Элементы передачи имеют формы ответа косинуса, и антенны получения являются изотропными. Только антенна получения перемещается. Интервал элемента для обоих массивов является меньше, чем половина длины волны. Массив передачи расположен в (0,20,50) метры. Массив получения запускается в (200,10,10) метры и перемещается к передатчику в 2 м/с. Вычислите распространенный сигнал через этот канал. Частота дискретизации для сигнала составляет 10 МГц.

fc = 72e9;
c = physconst('LightSpeed');
lambda = c/fc;
fs = 10e6;
rxplatform = phased.Platform('MotionModel','Velocity','InitialPosition',...
    [200;10;10],'Velocity',[-2;0;0]);
txarray = phased.ULA('Element',phased.CosineAntennaElement, ...
    'NumElements',21,'ElementSpacing',0.45*lambda);
rxarray = phased.ULA('Element',phased.IsotropicAntennaElement, ...
    'NumElements',15,'ElementSpacing',0.45*lambda);
channel = phased.ScatteringMIMOChannel('TransmitArray',txarray, ...
    'ReceiveArray',rxarray,'PropagationSpeed',c,'CarrierFrequency',fc, ...
    'SampleRate',fs,'TransmitArrayMotionSource','Property',...
    'TransmitArrayPosition',[0;20;50],'TransmitArrayOrientationAxes',eye(3,3), ...
    'ReceiveArrayMotionSource','Input port','ScattererSpecificationSource', ...
    'Property','ScattererPosition',[75 100 120; -10 20 12; 5 -5 8], ...
    'ScattererCoefficient',[1i,2+3i,-1+1i],'SpecifyAtmosphere',false);

Переместите платформы для двух временных шагов во вторых интервалах. В течение каждого раза экземпляр:

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

  • Переместите передатчик и получатель. Зафиксируйте ориентации массивов.

  • Распространите сигналы от передатчиков до рассеивателей к получателю.

for k =1:2
    x = randi(2,[100 21]) - 1;
    [rxpos,rxvel] = rxplatform(1);
    rxaxes = rotz(45);
    y = channel(x,rxpos,rxvel,rxaxes);
end

Создайте канал MIMO, содержащий 3 движущихся рассеивателя. Сценарий содержит передачу с 21 элементом массив ULA и получение с 15 элементами массив ULA. Оба массива действуют на уровне 72 ГГц. Элементы передачи имеют ответы косинуса, и антенны получения являются изотропными. Интервал элемента для обоих массивов является меньше, чем половина длины волны. Массив передачи расположен в (0,20,50) метры. Массив получения расположен в (200,10,10) метры. Вычислите распространенный сигнал через этот канал. Частота дискретизации для сигнала составляет 10 МГц. Получите матрицу ответа канала и задержки.

fc = 30e9;
c = physconst('LightSpeed');
lambda = c/fc;
fs = 10e6;
txarray = phased.ULA('Element',phased.CosineAntennaElement, ...
    'NumElements',21,'ElementSpacing',0.45*lambda);
rxarray = phased.ULA('Element',phased.IsotropicAntennaElement, ...
    'NumElements',15,'ElementSpacing',0.45*lambda);
channel = phased.ScatteringMIMOChannel('TransmitArray',txarray, ...
    'ReceiveArray',rxarray,'PropagationSpeed',c,'CarrierFrequency',fc, ...
    'SampleRate',fs,'TransmitArrayPosition',[0;20;50], ...
    'ReceiveArrayPosition',[200;10;10],'ScattererSpecificationSource','Input port', ...
    'ChannelResponseOutputPort',true);

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

x = randi(2,[100 21]) - 1;

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

scatpos = [75 100 120; -10 20 12; 5 -5 8];
scatvel = [0 0.5 0; -0.1 1.2 0.04; .05 -0.45 0.8];
scatcoef = [1i,2+3i,-1+1i];
[y,chmat,delays] = channel(x,scatpos,scatvel,scatcoef);

Отобразите размерности матрицы канала.

size(chmat)
ans = 1×3

    21    15     3

Отобразите задержки в микросекундах.

delays*1e6
ans = 1×3

    0.7310    0.7196    0.6919

Создайте канал MIMO на уровне 30 ГГц с массивом передачи с 16 элементами, и с 64 элементами получают массив. Примите, что элементы являются антеннами короткого диполя, и массивы являются универсальными линейными матрицами. Массив передачи расположен в [0; 0; 50] метры.

Получить массив имеет исходное положение в [200; 0; 0] метры и перемещаются со скоростью [10; 0; 0] метры/секунда. Существует 200 статических рассеивателей, случайным образом расположенных на xy плоскости в квадрате, сосредоточенном в [200; 0; 0] и с длиной стороны 100 метров.

Используйте канал, чтобы вычислить распространенный поляризованный сигнал. Примите, что частота дискретизации для сигнала составляет 10 МГц, и длина кадра является 1 000 выборок. Соберите 5 кадров полученного сигнала.

fc = 30e9;
c = 3e8;
lambda = c/fc;
fs = 10e6;
txarray = phased.ULA('Element',phased.ShortDipoleAntennaElement,...
    'NumElements',16,'ElementSpacing',lambda/2);
rxarray = phased.ULA('Element',phased.ShortDipoleAntennaElement,...
    'NumElements',64,'ElementSpacing',lambda/2);

Ns = 200;
scatpos = [100*rand(1,Ns) + 150; 100*rand(1,Ns) + 150; zeros(1,Ns)];
temp = randn(1,Ns) + 1i*randn(1,Ns);
scatcoef = repmat(eye(2),1,1,Ns).*permute(temp,[1 3 2]);
scatax = repmat(eye(3),1,1,Ns);

Nframesamp = 1000;
Tframe = Nframesamp/fs;
rxmobile = phased.Platform('InitialPosition',[200;0;0],...
    'Velocity',[10;0;0],'OrientationAxesOutputPort',true);

chan = phased.ScatteringMIMOChannel(...
    'TransmitArray',txarray,...
    'ReceiveArray',rxarray,...
    'PropagationSpeed',c,...
    'CarrierFrequency',fc,...
    'SampleRate',fs,...
    'Polarization','Dual',...
    'TransmitArrayPosition',[0;0;50],...
    'ReceiveArrayMotionSource','Input port',...
    'ScattererSpecificationSource','Property',...
    'ScattererPosition',scatpos,...
    'ScatteringMatrix',scatcoef,...
    'ScattererOrientationAxes',scatax);

xh = randi(2,[Nframesamp 16])-1;
xv = randi(2,[Nframesamp 16])-1;

for m = 1:5
    [rxpos,rxvel,rxax] = rxmobile(Tframe);
    [yh,yv] = chan(xh,xv,rxpos,rxvel,rxax);
end

Введенный в R2017a