exponenta event banner

шаг

Системный объект: поэтапный. 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 комплекснозначная матрица. Величина М - количество выборок в сигнале, а Nt - количество передающих элементов матрицы. Каждый столбец представляет сигнал, передаваемый соответствующим элементом матрицы.

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

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

Зависимости

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

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

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

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

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

Зависимости

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

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

Передаваемый узкополосный сигнал V-поляризации, определяемый как M-by-Nt комплекснозначная матрица. Величина М - количество выборок в сигнале, а 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-by-Ns. Матрица содержит (x, y, z) положения рассеивателей. Каждый столбец матрицы определяет разный рассеиватель и принимает вид[x;y;z]. Единицы в метрах.

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

Зависимости

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

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

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

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

Зависимости

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

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

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

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

Зависимости

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

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

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

Зависимости

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

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

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

Зависимости

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

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

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

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

Принятый узкополосный сигнал, возвращаемый как M-на-Nr комплекснозначная матрица. 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-by-NC действительный вектор. Каждый элемент соответствует временной задержке пути от фазового центра передающего массива к рассеивателю, а затем к фазовому центру принимающего массива.

  • При указании SimulateDirectPath как false, Nc = Ns, число рассеивателей.

  • При указании SimulateDirectPath как true, Nc = Ns + 1 для учета прямого пути.

Зависимости

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

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

Примеры

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

Создайте MIMO-канал с частотой 30 ГГц со случайными рассеивателями. Сценарий содержит стационарный 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 МГц, а длина кадра - 1000 выборок. Соберите 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