Системный объект: поэтапный. 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)
выполняют эквивалентные операции.
использует рассеивающийся канал MIMO, Y
= step(channel
,X
)channel
, чтобы распространить сигнал, X
, от массива передачи к нескольким рассеивателям, и возвращает рассеянные сигналы, Y
, к массиву получения.
Чтобы включить этот синтаксис, установите TransmitArrayMotionSource
, ReceiveArrayMotionSource
и свойства ScattererSpecificationSource
к 'Property'
.
[___] = 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'
.
Объект выполняет инициализацию в первый раз, когда метод step
выполняется. Эта инициализация блокирует ненастраиваемые свойства и входные спецификации, такие как размерности, сложность и тип данных входных данных. Если вы изменяете ненастраиваемое свойство или входную спецификацию, Системный объект выдает ошибку. Чтобы изменить ненастраиваемые свойства или входные параметры, необходимо сначала вызвать метод release
, чтобы разблокировать объект.
channel
— Рассеивание канала MIMOphased.ScatteringMIMOChannel
Рассеивание канала MIMO, заданного как Системный объект phased.ScatteringMIMOChannel
.
Пример: phased.ScatteringMIMOChannel
X
Переданный узкополосный сигналПереданный узкополосный сигнал, заданный как M-by-Nt матрица с комплексным знаком. Количество M является количеством выборок в сигнале и Nt, является количеством передачи элементов массива. Каждый столбец представляет сигнал, переданный соответствующим элементом массива.
Размер первой размерности входной матрицы может отличаться, чтобы моделировать изменяющуюся длину сигнала. Изменение размера может произойти, например, в случае импульсной формы волны с переменной импульсной частотой повторения.
Пример: [1,1;j,1;0.5,0]
Чтобы включить этот аргумент, установите свойство Polarization
на 'None'
или 'Combined'
.
Типы данных: double
Поддержка комплексного числа: Да
XH
— Переданный узкополосный сигнал H-поляризацииПереданный узкополосный H - сигнал поляризации, заданный как M-by-Nt матрица с комплексным знаком. Количество M является количеством выборок в сигнале и Nt, является количеством передачи элементов массива. Каждый столбец представляет сигнал, переданный соответствующим элементом массива.
Размер первой размерности входной матрицы может отличаться, чтобы моделировать изменяющуюся длину сигнала. Изменение размера может произойти, например, в случае импульсной формы волны с переменной импульсной частотой повторения.
Пример: [1,1;j,1;0.5,0]
Чтобы включить этот аргумент, установите свойство Polarization
на 'Dual'
.
Типы данных: double
Поддержка комплексного числа: Да
Xv
Переданный узкополосный сигнал V-поляризацииПереданный узкополосный V - сигнал поляризации, заданный как M-by-Nt матрица с комплексным знаком. Количество M является количеством выборок в сигнале и Nt, является количеством передачи элементов массива. Каждый столбец представляет сигнал, переданный соответствующим элементом массива.
Размер первой размерности входной матрицы может отличаться, чтобы моделировать изменяющуюся длину сигнала. Изменение размера может произойти, например, в случае импульсной формы волны с переменной импульсной частотой повторения.
Пример: [1,1;j,1;0.5,0]
Чтобы включить этот аргумент, установите свойство Polarization
на 'Dual'
.
Типы данных: double
Поддержка комплексного числа: Да
txpos
— Положение передачи антенной решеткиПоложение передачи антенной решетки, заданной как трехэлементный вектор-столбец с действительным знаком, принимающий форму [x;y;z]
. Векторные элементы соответствуют x, y и положениям z массива. Модули исчисляются в метрах.
Пример: [1000;100;500]
Чтобы включить этот аргумент, установите свойство TransmitArrayMotionSource
на 'Input port'
.
Типы данных: double
txvel
— Скорость передачи антенной решеткиСкорость передачи антенной решетки, заданной как трехэлементный вектор-столбец с действительным знаком, принимающий форму [vx;vy;vz]
. Векторные элементы соответствуют x, y и скоростям z массива. Модули исчисляются в метрах в секунду.
Пример: [10;0;5]
Чтобы включить этот аргумент, установите свойство TransmitArrayMotionSource
на 'Input port'
.
Типы данных: double
txaxes
— Ориентация осей передачи антенной решеткиОриентация осей передачи антенной решетки, заданной как 3х3 действительная ортонормированная матрица с действительным знаком. Матрица задает ориентацию системы локальной координаты массивов относительно глобальных координат. Столбцы матрицы соответствуют направлениям x, y и осей z системы локальной координаты. Модули являются безразмерными.
Пример: rotx(35)
Чтобы включить этот аргумент, установите свойство TransmitArrayMotionSource
на 'Input port'
.
Типы данных: double
rxpos
— Положение получения антенной решеткиПоложение получения антенной решетки, заданной как трехэлементный вектор-столбец с действительным знаком, принимающий форму [x;y;z]
. Векторные элементы соответствуют x, y и положениям z массива. Модули исчисляются в метрах.
Пример: [1000;100;500]
Чтобы включить этот аргумент, установите свойство ReceiveArrayMotionSource
на 'Input port'
.
Типы данных: double
rxvel
— Скорость получения антенной решеткиСкорость получения антенной решетки, заданной как трехэлементный вектор-столбец с действительным знаком, принимающий форму [vx;vy;vz]
. Векторные элементы соответствуют x, y и скоростям z массива. Модули исчисляются в метрах в секунду.
Пример: [10;0;5]
Чтобы включить этот аргумент, установите свойство ReceiveArrayMotionSource
на 'Input port'
.
Типы данных: double
rxaxes
— Ориентация осей получения антенной решеткиОриентация осей получения антенной решетки, заданной как 3х3 действительная ортонормированная матрица с действительным знаком. Матрица задает ориентацию системы локальной координаты массивов относительно глобальных координат. Столбцы матрицы соответствуют направлениям x, y и осей z системы локальной координаты. Модули являются безразмерными.
Пример: rotx(35)
Чтобы включить этот аргумент, установите свойство ReceiveArrayMotionSource
на 'Input port'
.
Типы данных: double
scatpos
— Положения рассеивателейПоложения рассеивателей, заданных как 3 с действительным знаком Ns матрицей. Матрица содержит положения (x,y,z) рассеивателей. Каждый столбец матрицы задает различный рассеиватель и принимает форму [x;y;z]
. Модули исчисляются в метрах.
Пример: [1000;100;500]
Чтобы включить этот аргумент, установите свойство ScattererSpecificationSource
на 'Input port'
.
Типы данных: double
scatvel
— Скорости рассеивателейСкорости рассеивателей, заданных как 3 с действительным знаком Ns матрицей. Матрица содержит положения (vx,vy,vz) рассеивателей. Каждый столбец матрицы задает различный рассеиватель и принимает форму, которую Модули [vx;vy;vz]
исчисляются в метрах в секунду.
Пример: [1000;100;500]
Чтобы включить этот аргумент, установите свойство ScattererSpecificationSource
на 'Input port'
.
Типы данных: double
scatcoef
— Рассеивание коэффициентовРассеивание коэффициентов, заданных как 1 с комплексным знаком Nsrow вектором. Каждый векторный элемент задает рассеивающийся коэффициент соответствующего рассеивателя. Модули являются безразмерными.
Пример: [5+3*1i;4+1i;2]
Чтобы включить этот аргумент, установите свойство ScattererSpecificationSource
на 'Input port'
и свойство Polarization
к 'None'
.
Типы данных: double
Поддержка комплексного числа: Да
scatmat
— Рассеивание матриц[1 0;0 1]
| 2 с комплексным знаком 2 Ns массивомРассеивание матриц рассеивателей, заданных как 2 с комплексным знаком 2 Ns массивом, где N s является количеством рассеивателей. Каждая страница этого массива представляет рассеивающуюся матрицу рассеивателя. Каждая матрица рассеивания имеет форму [s_hh s_hv;s_vh s_vv]
. Например, s_hv
компонента задает комплексный ответ рассеивания, когда входной сигнал вертикально поляризован, и отраженный сигнал горизонтально поляризован. Другие компоненты заданы так же. Модули находятся в квадратных метрах.
Чтобы включить это свойство, установите свойство ScattererSpecificationSource
на 'Input port'
и свойство Polarization
к 'Combined'
или 'Dual'
.
Типы данных: double
Поддержка комплексного числа: Да
scataxes
— Оси ориентации рассеивателяОси ориентации рассеивателя, заданные как 3 с действительным знаком 3 Ns массивом, где N s является количеством рассеивателей. Каждая страница этого массива представляет матрицу осей ориентации рассеивателя. Столбцы матрицы представляют x - y - и z - оси рассеивателя. Модули являются безразмерными.
Чтобы включить это свойство, установите свойство ScattererSpecificationSource
на 'Input port'
и свойство Polarization
к 'Combined'
или 'Dual'
.
Типы данных: double
Y
Полученный узкополосный сигналПолученный узкополосный сигнал, возвращенный как M - матрица с комплексным знаком Номером. M является количеством выборок в сигнале, и Nr является количеством получения элементов массива. Каждый столбец представляет сигнал, полученный соответствующим элементом массива.
Пример: [1,1;j,1;0.5,0]
Чтобы включить этот аргумент, установите свойство Polarization
на 'None'
или 'Combined'
.
Типы данных: double
Поддержка комплексного числа: Да
YH
— Полученный узкополосный сигнал H-поляризацииПолученный узкополосный H - сигнал поляризации, возвращенный как M с комплексным знаком-by-Nr матрица. M является количеством выборок в сигнале, и Nr является количеством получения элементов массива. Каждый столбец представляет сигнал, полученный соответствующим элементом массива.
Пример: [1,1;j,1;0.5,0]
Чтобы включить этот аргумент, установите свойство Polarization
на 'Dual'
.
Типы данных: double
Поддержка комплексного числа: Да
Yv
Полученный узкополосный сигнал V-поляризацииПолученный узкополосный V - сигнал поляризации, возвращенный как M с комплексным знаком-by-Nr матрица. M является количеством выборок в сигнале, и Nr является количеством получения элементов массива. Каждый столбец представляет сигнал, полученный соответствующим элементом массива.
Пример: [1,1;j,1;0.5,0]
Чтобы включить этот аргумент, установите свойство Polarization
на 'Dual'
.
Типы данных: double
Поддержка комплексного числа: Да
CR
— Ответ каналаОтвет канала, возвращенный как Nt-by-Nr-by-Nc массив с комплексным знаком.
Nt является количеством передачи элементов массива.
Nr является количеством получения элементов массива.
Когда вы задаете SimulateDirectPath
как false
, Nc = Ns, количество рассеивателей.
Когда вы задаете SimulateDirectPath
как true
, Nc = Ns + 1, чтобы составлять прямой путь.
Каждая страница массива соответствует матрице ответа канала для определенного рассеивателя.
Чтобы включить этот аргумент, установите свойство ChannelResponseOutputPort
на true
и свойство Polarization
к 'None'
или 'Combined'
.
Типы данных: double
Поддержка комплексного числа: Да
CR_HH
— Ответ канала для H-входа H-выводуОтвет канала от входа H-поляризации до H-поляризации выходной параметр, возвращенный как Nt с комплексным знаком-by-Nr-by-Nc массив.
Nt является количеством передачи элементов массива.
Nr является количеством получения элементов массива.
Когда вы задаете SimulateDirectPath
как false
, Nc = Ns, количество рассеивателей.
Когда вы задаете SimulateDirectPath
как true
, Nc = Ns + 1, чтобы составлять прямой путь.
Каждая страница массива соответствует матрице ответа канала для определенного рассеивателя.
Чтобы включить этот аргумент, установите свойство ChannelResponseOutputPort
на true
и свойство Polarization
к 'Dual'
.
Типы данных: double
Поддержка комплексного числа: Да
CR_HV
— Ответ канала для H-входа V-выводуОтвет канала от входа H-поляризации до V-поляризации выходной параметр, возвращенный как Nt с комплексным знаком-by-Nr-by-Nc массив.
Nt является количеством передачи элементов массива.
Nr является количеством получения элементов массива.
Когда вы задаете SimulateDirectPath
как false
, Nc = Ns, количество рассеивателей.
Когда вы задаете SimulateDirectPath
как true
, Nc = Ns + 1, чтобы составлять прямой путь.
Каждая страница массива соответствует матрице ответа канала для определенного рассеивателя.
Чтобы включить этот аргумент, установите свойство ChannelResponseOutputPort
на true
и свойство Polarization
к 'Dual'
.
Типы данных: double
Поддержка комплексного числа: Да
CR_VH
— Ответ канала для V-входа H-выводуОтвет канала от входа V-поляризации до H-поляризации выходной параметр, возвращенный как Nt с комплексным знаком-by-Nr-by-Nc массив.
Nt является количеством передачи элементов массива.
Nr является количеством получения элементов массива.
Когда вы задаете SimulateDirectPath
как false
, Nc = Ns, количество рассеивателей.
Когда вы задаете SimulateDirectPath
как true
, Nc = Ns + 1, чтобы составлять прямой путь.
Каждая страница массива соответствует матрице ответа канала для определенного рассеивателя.
Чтобы включить этот аргумент, установите свойство ChannelResponseOutputPort
на true
и свойство Polarization
к 'Dual'
.
Типы данных: double
Поддержка комплексного числа: Да
CR_VV
— Ответ канала для V-входа V-выводуОтвет канала от входа V-поляризации до V-поляризации выходной параметр, возвращенный как Nt с комплексным знаком-by-Nr-by-Nc массив.
Nt является количеством передачи элементов массива.
Nr является количеством получения элементов массива.
Когда вы задаете SimulateDirectPath
как false
, Nc = Ns, количество рассеивателей.
Когда вы задаете SimulateDirectPath
как true
, Nc = Ns + 1, чтобы составлять прямой путь.
Каждая страница массива соответствует матрице ответа канала для определенного рассеивателя.
Чтобы включить этот аргумент, установите свойство ChannelResponseOutputPort
на true
и свойство Polarization
к 'Dual'
.
Типы данных: double
Поддержка комплексного числа: Да
\tau
Задержки путиЗадержки пути, возвращенные как 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
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.