step

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

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

Описание

Примечание

Вместо того, чтобы использовать 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