step

Системный объект: фазированный. 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 -port и V -port передающего массива. Объект возвращает принятые сигналы, YH и YV к H -port и V -port приёмного массива.

Чтобы включить этот синтаксис, установите 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 выполняется метод. Эта инициализация блокирует нетронутые свойства и входные спецификации, такие как размерности, сложность и тип данных входных данных. Если вы изменяете свойство nontunable или спецификацию входа, системный объект выдает ошибку. Чтобы изменить нетронутые свойства или входы, необходимо сначала вызвать 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-байт- Ns строки. Каждый векторный элемент задает коэффициент рассеяния соответствующего рассеивателя. Модули безразмерны.

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

Зависимости

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

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

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

Зависимости

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

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

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

Зависимости

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

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

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

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

Принят узкополосный сигнал, возвращенный как M -by-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-байтовый 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