Пропустите входной сигнал через MIMO многопутевой исчезающий канал
Коммуникация. Объект MIMOChannel пропускает входной сигнал через multiple-input/multiple-output (MIMO) многопутевой исчезающий канал. Это объектные модели и Рейли и Рикиэн, исчезающий и, использует Кронекерову модель для моделирования пространственной корреляции между ссылками. Для обработки деталей смотрите раздел Algorithms.
Пропускать входной сигнал через MIMO многопутевой исчезающий канал:
Создайте объект comm.MIMOChannel
и установите его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.
mimochan = comm.MIMOChannel
mimochan = comm.MIMOChannel(Name,Value)
создает несколько - вводит, несколько - выводят (MIMO) выборочную частотой или плоскую частотой исчезающую Систему канала object™. Этот объект пропускает действительный или комплексный входной сигнал через многопутевой канал MIMO, чтобы получить поврежденный каналом сигнал.mimochan
= comm.MIMOChannel
свойства наборов с помощью одной или нескольких пар "имя-значение". Заключите каждое имя свойства в одинарные кавычки.mimochan
= comm.MIMOChannel(Name
,Value
)
comm.MIMOChannel('SampleRate',2)
Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и функция release
разблокировала их.
Если свойство является настраиваемым, можно изменить его значение в любое время.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).
SampleRate
— Частота дискретизации входного сигнала1
(значение по умолчанию) | положительная скалярная величинаЧастота дискретизации входного сигнала в герц, заданном как положительная скалярная величина.
Типы данных: double
PathDelays
— Дискретная задержка пути0
(значение по умолчанию) | скаляр | вектор - строкаДискретная задержка пути в секундах, заданных как скалярный или вектор - строка.
Когда вы устанавливаете PathDelays
на скаляр, канал MIMO является плоской частотой.
Когда вы устанавливаете PathDelays
на вектор, канал MIMO является выборочной частотой.
Типы данных: double
AveragePathGains
— Средний путь получает (дБ)0
(значение по умолчанию) | скаляр | вектор - строкаСредний путь получает в децибелах, заданных как скалярный или вектор - строка. AveragePathGains
должен иметь тот же размер как PathDelays.
Типы данных: double
NormalizePathGains
— Нормируйте усиления путиtrue
(значение по умолчанию) | false
Нормируйте усиления пути, заданные как true
или false
.
Когда вы устанавливаете это свойство на true
, процессы исчезновения нормированы так, чтобы общая степень усилений пути, усредняемых в зависимости от времени, была дБ 0
.
Когда вы устанавливаете это свойство на false
, на усилениях пути нет никакой нормализации.
Средние степени усилений пути заданы как свойство AveragePathGains.
Типы данных: логический
FadingDistribution
— Распределение замираний'Rayleigh'
(значение по умолчанию) | 'Rician'
Распределение замираний, чтобы использовать для канала, заданного как 'Rayleigh'
или 'Rician'
.
Типы данных: char
KFactor
— K-фактор Rician, исчезающего канал3
(значение по умолчанию) | положительная скалярная величина | вектор - строка K-фактор Rician, исчезающего канал, заданный как положительная скалярная величина или 1 NP вектором элементов с положительным знаком. N P равняется количеству задержек пути, заданных свойством PathDelays.
Если вы устанавливаете KFactor
на скаляр, первый дискретный путь является процессом исчезновения Rician с K-фактором Rician KFactor
. Любые остающиеся дискретные пути являются независимыми процессами Релеевского замирания.
Если вы устанавливаете KFactor
на вектор - строку, дискретный путь, соответствующий положительному элементу вектора KFactor
, является процессом исчезновения Rician с K-фактором Rician, заданным тем элементом. Дискретный путь, соответствующий элементу с нулевым знаком вектора KFactor
, является процессом Релеевского замирания.
Это свойство применяется, когда FadingDistribution является Rician
.
Типы данных: double
DirectPathDopplerShift
— Эффекты Доплера для компонентов угла обзора (Гц)0
(значение по умолчанию) | скаляр | вектор - строкаЭффекты Доплера для компонентов угла обзора Rician, исчезающего канал в герц, заданном как скалярный или вектор - строка. Это свойство должно иметь тот же размер как KFactor.
Если вы устанавливаете DirectPathDopplerShift
на скаляр, он представляет эффект Доплера компонента угла обзора первого дискретного пути, который является процессом исчезновения Rician.
Если вы устанавливаете DirectPathDopplerShift
на вектор - строку, дискретный путь, который является процессом исчезновения Rician, имеет свой эффект Доплера компонента угла обзора, заданный элементами DirectPathDopplerShift
, которые соответствуют положительным элементам в векторе KFactor.
Это свойство применяется, когда FadingDistribution является Rician
.
Типы данных: double
DirectPathInitialPhase
— Начальные фазы для компонентов угла обзора (Радианы)0
(значение по умолчанию) | скаляр | вектор - строкаНачальные фазы для компонентов угла обзора Rician, исчезающего канал в радианах, заданных как скалярный или вектор - строка. Это свойство должно иметь тот же размер как KFactor.
Если вы устанавливаете DirectPathInitialPhase
на скаляр, он представляет начальную фазу компонента угла обзора первого дискретного пути, который является процессом исчезновения Rician.
Если вы устанавливаете DirectPathInitialPhase
на вектор - строку, дискретный путь, который является процессом исчезновения Rician, имеет свою начальную фазу компонента угла обзора, заданную элементами DirectPathInitialPhase
, которые соответствуют положительным элементам в векторе KFactor.
Это свойство применяется, когда FadingDistribution является Rician
.
Типы данных: double
MaximumDopplerShift
— Максимальный эффект Доплера для всех путей к каналу (Гц)0.001
(значение по умолчанию) | неотрицательный скалярМаксимальный эффект Доплера для всех путей к каналу в герц, заданном как неотрицательный скаляр.
Эффект Доплера применяется ко всем путям к каналу. Когда вы устанавливаете это свойство на 0
, канал остается статичным для целого входа. Можно использовать функцию объекта reset
, чтобы сгенерировать новую реализацию канала.
MaximumDopplerShift
должен быть меньшим, чем (SampleRate/10)/fc для каждого пути, где f c представляет фактор частоты среза пути. Для получения дополнительной информации о частоте среза смотрите Фактор Частоты среза.
Типы данных: double
DopplerSpectrum
— Доплеровский спектр формирует для всех путей к каналуdoppler('Jakes')
(значение по умолчанию) | doppler('Flat')
| doppler('Rounded', ...)
| doppler('Bell', ...)
| doppler('Asymmetric Jakes', ...)
| doppler('Restricted Jakes', ...)
| doppler('Gaussian', ...)
| doppler('BiGaussian', ...)
Доплеровский спектр формирует для всех путей к каналу, заданных как одна Доплеровская структура спектра, возвращенная в функцию doppler
или 1 NP массивом ячеек таких структур. Значение по умолчанию этого свойства является спектром Джейкса Доплера (doppler('Jakes')
).
Если вы присваиваете один вызов doppler
, все пути имеют заданный Доплеровский спектр того же самого.
Если вы присваиваете 1 NP массивом ячеек вызовов doppler
с помощью какого-либо из заданных синтаксисов, каждому пути задала Доплеровский спектр соответствующая Доплеровская структура спектра в массиве. В этом случае N P равняется значению свойства PathDelays.
Максимальное значение эффекта Доплера, необходимое, чтобы задать Доплеровский спектр/спектры, дано свойством MaximumDopplerShift.
Это свойство применяется, когда MaximumDopplerShift больше, чем нуль.
Если вы присваиваете свойство FadingTechnique 'Sum of sinusoids'
, необходимо установить DopplerSpectrum
на doppler('Jakes')
.
SpatialCorrelationSpecification
— Пространственная спецификация корреляции'Separate Tx Rx'
(значение по умолчанию) | 'None'
| 'Combined'
Пространственная спецификация корреляции, заданная как 'Separate Tx Rx'
, 'None'
или 'Combined'
.
Выберите 'Spatial Tx Rx'
, чтобы отдельно задать передачу и получить пространственные корреляционные матрицы, из которых количество антенны передачи (N T) и количество получают антенны (N R) выведены.
Выберите 'None'
, чтобы задать количество передачи и получить антенны.
Выберите 'Combined'
, чтобы задать одну корреляционную матрицу для целого канала, от которого выведен продукт N T и N R.
Типы данных: char
NumTransmitAntennas
— Количество антенн передачи2
(значение по умолчанию) | положительное целое числоКоличество антенн передачи, заданных как положительное целое число.
Это свойство применяется, когда SpatialCorrelationSpecification является 'None'
или 'Combined'
.
Типы данных: double
NumReceiveAntennas
— Количество получает антенны2
(значение по умолчанию) | положительное целое числоКоличество получает антенны, заданные как положительное целое число.
Это свойство применяется, когда SpatialCorrelationSpecification является 'None'
или 'Combined'
.
Типы данных: double
TransmitCorrelationMatrix
— Пространственная корреляция передатчика[1 0; 0 1]
(значение по умолчанию) | матрица | трехмерный массивЗадайте пространственную корреляцию передатчика как матрица T-by-NT N или N T NT NP массивом. N T является количеством антенн передачи, и N P равняется значению свойства PathDelays.
Если PathDelays
является скаляром, канал является плоским частотой, и TransmitCorrelationMatrix
является Эрмитова матрица T-by-NT N. Значение любого недиагонального элемента должно быть не больше, чем геометрическое среднее значение двух соответствующих диагональных элементов.
Если PathDelays
является вектором, канал является выборочной частотой, и можно задать TransmitCorrelationMatrix
как матрицу. Каждый путь имеет ту же передачу пространственная корреляционная матрица.
Также можно задать TransmitCorrelationMatrix
как N T NT NP массивом, где каждый путь может иметь свою собственную различную передачу пространственная корреляционная матрица.
Это свойство применяется, когда вы устанавливаете свойство SpatialCorrelationSpecification на 'Separate Tx Rx'
.
Типы данных: double
Поддержка комплексного числа: Да
ReceiveCorrelationMatrix
— Пространственная корреляция получателя[1 0; 0 1]
(значение по умолчанию) | матрица | трехмерный массивЗадайте пространственную корреляцию получателя как матрица R-by-NR N или N R NR NP массивом. N R является количеством, получают антенны, и N P равняется значению свойства PathDelays.
Если PathDelays является скаляром, канал является плоской частотой, и ReceiveCorrelationMatrix
является Эрмитова матрица R-by-NR N. Значение любого недиагонального элемента должно быть не больше, чем геометрическое среднее значение двух соответствующих диагональных элементов.
Если PathDelays является вектором, канал является выборочной частотой, и можно задать ReceiveCorrelationMatrix
как матрицу. Каждый путь имеет то же самое, получают пространственную корреляционную матрицу.
Также можно задать ReceiveCorrelationMatrix
как N R NR NP массивом, где каждый путь может иметь свое собственное различное, получают пространственную корреляционную матрицу.
Это свойство применяется, когда вы устанавливаете свойство SpatialCorrelationSpecification на 'Separate Tx Rx'
.
Типы данных: double
Поддержка комплексного числа: Да
SpatialCorrelationMatrix
— Объединенная пространственная корреляционная матрица[1 0 0 0; 0 1 0 0; 0 0 1 0; 0 0 0 1]
(значение по умолчанию) | матрица | трехмерный массивОбъединенная пространственная корреляционная матрица, заданная как матрица TR-by-NTR N или TR N NTR NP массивом, где TR N = (N T ✕ N R), и N P равняется значению свойства PathDelays.
Если PathDelays является скаляром, канал является плоской частотой, и SpatialCorrelationMatrix
является Эрмитовой матрицей TR-by-NTR N. Значение любого недиагонального элемента должно быть не больше, чем геометрическое среднее значение двух соответствующих диагональных элементов.
Если PathDelays является вектором, канал является выборочной частотой, и можно задать SpatialCorrelationMatrix
как матрицу. Каждый путь имеет ту же пространственную корреляционную матрицу.
Также можно задать SpatialCorrelationMatrix
как TR N NTR NP массивом, где каждый путь может иметь свою собственную различную объединенную пространственную корреляционную матрицу.
Это свойство применяется, когда вы устанавливаете свойство SpatialCorrelationSpecification на 'Combined'
.
Типы данных: double
Поддержка комплексного числа: Да
AntennaSelection
— Схема выбора антенны'Off'
(значение по умолчанию) | 'Tx'
| 'Rx'
| 'Tx and Rx'
Схема выбора антенны, заданная как 'Off'
, 'Tx'
, 'Rx'
или 'Tx and Rx'
.
Tx
представляет антенны передачи, и Rx
представляет, получают антенны. Когда вы конфигурируете любой выбор антенны кроме настройки по умолчанию, объект требует, чтобы одни или несколько входных параметров задали, какие антенны выбраны для передачи сигнала. Для получения дополнительной информации смотрите Выбор Антенны.
Типы данных: char
NormalizeChannelOutputs
— Нормируйте канал выходные параметрыtrue
(значение по умолчанию) | false
Нормируйте канал выходные параметры, заданные как true
или false
.
Когда вы устанавливаете это свойство на true
, канал, которого выходные параметры нормированы количеством, получает антенны.
Когда вы устанавливаете это свойство на false
, канал, выходные параметры не нормированы.
Типы данных: логический
FadingTechnique
— Channel, исчезающая метод'Filtered Gaussian noise'
(значение по умолчанию) | 'Sum of sinusoids'
Модель канала исчезающий метод, заданный как 'Filtered Gaussian noise'
или 'Sum of sinusoids'
.
Типы данных: char
NumSinusoids
— Количество синусоид используется48
(значение по умолчанию) | положительное целое числоКоличество синусоид раньше моделировало процесс исчезновения, заданный как положительное целое число.
Это свойство применяется, когда FadingTechnique является 'Sum of sinusoids'
.
Типы данных: double
InitialTimeSource
— Источник, чтобы управлять временем начала исчезающего процесса'Property'
(значение по умолчанию) | 'Input port'
Источник, чтобы управлять временем начала процесса исчезновения, заданного как 'Property'
или 'Input port'
.
Свойство--
Используйте свойство InitialTime установить начальное смещение времени.
'Input port'
- Задайте время начала процесса исчезновения при помощи входа initialtime
к объекту. Входное значение может измениться в последовательных вызовах объекта.
Это свойство применяется, когда FadingTechnique является 'Sum of sinusoids'
.
InitialTime
— Начальное время смещается0
(значение по умолчанию) | неотрицательный скалярНачальное смещение времени для исчезающей модели в секундах, заданных как неотрицательный скаляр.
Когда InitialTime
не является кратным 1/SampleRate, это окружено к самой близкой демонстрационной позиции.
Это свойство применяется, когда свойство FadingTechnique установлено в 'Sum of sinusoids'
, и свойство InitialTimeSource установлено в 'Property'
.
Типы данных: double
RandomStream
— Источник потока случайных чисел'Global stream'
(значение по умолчанию) | 'mt19937ar with seed'
Источник потока случайных чисел, заданного как 'Global stream'
или 'mt19937ar with seed'
.
'Global stream'
- Текущий глобальный поток случайных чисел используется для нормально распределенной генерации случайных чисел. В этом случае функция объекта reset
сбрасывает фильтры только.
'mt19937ar with seed'
- mt19937ar алгоритм используется для нормально распределенной генерации случайных чисел. В этом случае функция объекта reset
сбрасывает фильтры и также повторно инициализирует поток случайных чисел к значению свойства Seed.
Типы данных: char
Seed
— Начальный seed mt19937ar потока случайных чисел73
(значение по умолчанию) | неотрицательное целое числоНачальный seed mt19937ar потока случайных чисел, заданного как неотрицательное целое число. Когда функция объекта reset
вызвана, mt19937ar поток случайных чисел повторно инициализируется к значению Seed
.
Это свойство применяется, когда вы устанавливаете свойство RandomStream на 'mt19937ar with seed'
.
Типы данных: double
PathGainsOutputPort
— Опция к выходным path усилениямfalse
(значение по умолчанию) | true
Опция к выходным path усилениям, заданным как false
или true
. Установите это свойство на true
выводить усиления пути к каналу базового процесса исчезновения.
Типы данных: логический
Визуализация
Визуализация канала'Off'
(значение по умолчанию) | 'Impulse response'
| 'Frequency response'
| 'Impulse and frequency responses'
| 'Doppler spectrum'
Настройка визуализации канала, заданная как 'Off'
, 'Impulse response'
, 'Frequency response'
, 'Impulse and frequency responses'
или 'Doppler spectrum'
. Когда визуализация включена, выбранные характеристики канала, такие как импульсный ответ или Доплеровский спектр, отображение в отдельном окне. Для получения дополнительной информации смотрите Визуализацию Канала.
Визуализация применяется только, когда свойство FadingTechnique установлено в 'Filtered Gaussian noise'
.
AntennaPairsToDisplay
— Передача - получает пару антенны, чтобы отобразиться[1 1]
(значение по умолчанию) | вектор - строкаПередача - получает пару антенны, чтобы отобразиться, заданный как 1 2 вектор, где первый элемент соответствует желаемой антенне передачи, и второй элемент соответствует желаемому, получают антенну. В это время может быть отображена только одна пара.
Это свойство применяется, когда Визуализацией не является Off
.
PathsForDopplerDisplay
— Путь, для которого отображен Доплеровский спектр1
(значение по умолчанию) | положительное целое числоПуть, для которого отображен Доплеровский спектр, задал как положительное целое число от 1 до N P, где N P равняется значению свойства PathDelays.
Это свойство применяется, когда Визуализация установлена в 'Doppler spectrum'
.
SamplesToDisplay
— Процент выборок, чтобы отобразиться25%
(значение по умолчанию) | 10%
| 50%
| 100%
Процент выборок, чтобы отобразиться, заданный как 10%
, 25%
, 50%
или 100%
. Увеличение процента улучшает точность отображения за счет скорости симуляции.
Это свойство применяется, когда Визуализацией является 'Impulse response'
, 'Frequency response'
или 'Impulse and frequency responses'
.
Для версий ранее, чем R2016b, используйте функцию step
, чтобы запустить алгоритм Системного объекта. Аргументы к step
являются объектом, который вы создали, сопровождаемый аргументами, показанными в этом разделе.
Например, y = step(obj,x)
и y = obj(x)
выполняют эквивалентные операции.
outsignal = mimochan(insignal)
outsignal = mimochan(insignal,seltx)
outsignal = mimochan(insignal,selrx)
outsignal = mimochan(insignal,seltx,selrx)
outsignal = mimochan(___,initialtime)
[outsignal,pathgains] = mimochan(___)
включает антенны передачи, выбранные outsignal
= mimochan(insignal
,seltx
)seltx
для обработки канала.
Этот синтаксис применяется, когда вы устанавливаете свойство AntennaSelection объекта к 'Tx'
.
Например, чтобы выбрать первый и третий индекс антенны передачи как активный:
mimochan = comm.MIMOChannel('AntennaSelection','Tx'); seltx = [1 0 1]; ... outsignal = mimochan(insignal,seltx);
включает получают антенны, выбранные outsignal
= mimochan(insignal
,selrx
)selrx
для обработки канала.
Этот синтаксис применяется, когда вы устанавливаете свойство AntennaSelection объекта к 'Rx'
.
Например, чтобы выбрать второе получают индекс антенны как активный:
mimochan = comm.MIMOChannel('AntennaSelection','Rx'); selrx = [0 1]; ... outsignal = mimochan(insignal,selrx);
включает передачу, и получите антенны, выбранные outsignal
= mimochan(insignal
,seltx
,selrx
)seltx
и selrx
для обработки канала.
Этот синтаксис применяется, когда вы устанавливаете свойство AntennaSelection объекта к 'Tx and Rx'
.
Например:
mimochan = comm.MIMOChannel('AntennaSelection','Tx and Rx'); seltx = [1 1]; selrx = [0 1]; ... outsignal = mimochan(insignal,selrx);
задает время начала для процесса исчезновения. outsignal
= mimochan(___,initialtime
)
Этот синтаксис применяется, когда вы устанавливаете свойство FadingTechnique объекта к 'Sum of sinusoids'
и свойство InitialTimeSource объекта к 'Input port'
. Синтаксис поддерживает входные опции от предшествующих синтаксисов.
insignal
— Входной сигналВходной сигнал, заданный как скаляр, N S вектор-столбец элемента, матрица S-by-NT N или матрица S-by-NST N.
N S является количеством выборок.
N T является количеством антенн передачи. N T определяется значениями свойств TransmitCorrelationMatrix или NumTransmitAntennas объекта.
ST N является количеством выбранных антенн передачи, как определено набором числа элементов к 1
в векторе, предоставленном входу seltx.
Количество антенн передачи определяется значениями свойств TransmitCorrelationMatrix или NumTransmitAntennas объекта.
Типы данных: double | single
Поддержка комплексного числа: Да
seltx
— Выберите активные антенны передачиВыберите активные антенны передачи, заданные как 1 NT бинарным вектором. N T представляет количество антенн передачи. Набор элементов к 1
идентифицирует, что выбранные индексы антенны и 0
идентифицируют невыбранные индексы антенны.
Типы данных: double
selrx
— Выберите активный, получают антенныВыберите активный, получают антенны, заданные как 1 NR бинарным вектором. N R представляет количество, получают антенны. Набор элементов к 1
идентифицирует, что выбранные индексы антенны и 0
идентифицируют невыбранные индексы антенны.
Типы данных: double
initialtime
— Начальное время смещается0
(значение по умолчанию) | неотрицательный скалярНачальное смещение времени для исчезающей модели в секундах, заданных как неотрицательный скаляр.
Начальное смещение времени должно быть больше, чем прошлое время окончания кадра. Когда initialtime
не является кратным 1/SampleRate, это окружено к самой близкой демонстрационной позиции.
Типы данных: double
outsignal
— Выходной сигналСигнал выходных данных, возвращенный как S-by-NR N или N матрица S-by-NSR.
N S является количеством выборок.
N R является количеством, получают антенны. N R определяется значениями свойств ReceiveCorrelationMatrix или NumReceiveAntennas объекта.
SR N является количеством выбранных, получают антенны, как определено набором числа элементов к 1
в векторе, предоставленном входу selrx.
pathgains
— Выходные path усиленияВыходные path усиления, возвращенные как N S NP NT NR массивом со значениями NaN
для отменявшей передачи - получают пары антенны.
N S является количеством выборок.
N P равняется значению свойства PathDelays.
N T является количеством антенн передачи.
N R является количеством, получают антенны.
Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj
, используйте этот синтаксис:
release(obj)
info | Характеристическая информация об исчезающем объекте канала |
Если вы устанавливаете свойство RandomStream
объекта к 'Global stream'
, функция объекта reset
сбрасывает фильтры только.
Если вы устанавливаете RandomStream
на 'mt19937ar with seed'
, функция объекта reset
сбрасывает фильтры и также повторно инициализирует поток случайных чисел к значению свойства Seed
.
Создайте 4 2 канал MIMO при помощи Системного объекта канала MIMO. Передайте модулируемые и пространственно закодированные данные через канал.
Сгенерируйте модулируемые QPSK данные.
data = randi([0 3],1000,1); modData = pskmod(data,4,pi/4);
Создайте ортогональный пространственно-временной энкодер блока, чтобы закодировать модулируемые данные в четыре пространственно разделенных потока. Закодируйте данные.
ostbc = comm.OSTBCEncoder('NumTransmitAntennas',4,'SymbolRate',1/2); txSig = ostbc(modData);
Создайте объект канала MIMO, с помощью пар "имя-значение", чтобы установить свойства. Канал состоит из двух путей эффект Доплера имеющий 5 Гц. Установите свойство SpatialCorrelationSpecification
на 'None'
, который требует, чтобы вы задали количество передачи и получили антенны. Определите номер антенн передачи к 4, и количество получают антенны к 2.
mimochannel = comm.MIMOChannel(... 'SampleRate',1000, ... 'PathDelays',[0 2e-3], ... 'AveragePathGains',[0 -5], ... 'MaximumDopplerShift',5, ... 'SpatialCorrelationSpecification','None', ... 'NumTransmitAntennas',4, ... 'NumReceiveAntennas',2);
Передайте модулируемые и закодированные данные через канал MIMO.
rxSig = mimochannel(txSig);
Создайте временной вектор, t
, чтобы использовать для графического вывода степени полученного сигнала.
ts = 1/mimochannel.SampleRate; t = (0:ts:(size(txSig,1)-1)*ts)';
Вычислите и постройте степень сигнала, полученного антенной 1.
pwrdB = 20*log10(abs(rxSig(:,1))); plot(t,pwrdB) xlabel('Time (s)') ylabel('Power (dBW)')
Не задавая выбор антенны, пропустите модулируемые PSK данные через Канал с релеевским замиранием 2 на 2 и исследуйте пространственные характеристики корреляции реализации канала. Используйте функцию объекта release
, чтобы разблокировать объект установить свойство AntennaSelection
на 'Tx and Rx'
и затем подтвердить, что отменявшая передача - получает пары антенны.
Исследуйте пространственные характеристики корреляции, не задавая выбор антенны
Создайте Систему модулятора PSK object™, чтобы модулировать случайным образом сгенерированные данные.
pskModulator = comm.PSKModulator; modData = pskModulator(randi([0 pskModulator.ModulationOrder-1],1e5,1));
Разделите модулируемые данные в два пространственных потока.
channelInput = reshape(modData,[2 5e4]).';
Создайте Системный объект канала MIMO 2 на 2 с двумя дискретными путями. Каждый путь имеет различную передачу, и получите корреляционные матрицы, заданные свойствами TransmitCorrelationMatrix
и ReceiveCorrelationMatrix
.
mimoChan = comm.MIMOChannel('SampleRate',1000, 'PathDelays',[0 1e-3], ... 'AveragePathGains',[3 5], 'NormalizePathGains',false, 'MaximumDopplerShift',5, ... 'TransmitCorrelationMatrix',cat(3,eye(2),[1 0.1;0.1 1]), ... 'ReceiveCorrelationMatrix',cat(3,[1 0.2;0.2 1],eye(2)), ... 'RandomStream','mt19937ar with seed', 'Seed',33, 'PathGainsOutputPort',true);
Отфильтруйте модулируемые данные с помощью объекта канала MIMO.
[~,pathGains] = mimoChan(channelInput);
Передача пространственная корреляция для первого дискретного пути в первом получает антенну, задана как единичная матрица в свойстве TransmitCorrelationMatrix
. Подтвердите, что канал вывод pathGains
показывает те же статистические характеристики при помощи функции corrcoef
.
disp('Tx spatial correlation, first path, first Rx:');
Tx spatial correlation, first path, first Rx:
disp(corrcoef(squeeze(pathGains(:,1,:,1))));
1.0000 + 0.0000i 0.0357 - 0.0253i 0.0357 + 0.0253i 1.0000 + 0.0000i
Передача пространственная корреляция для второго дискретного пути во втором получает антенну, задана как [1 0.1;0.1 1]
в свойстве TransmitCorrelationMatrix
. Подтвердите, что канал вывод pathGains
показывает те же статистические характеристики.
disp('Tx spatial correlation, second path, second Rx:');
Tx spatial correlation, second path, second Rx:
disp(corrcoef(squeeze(pathGains(:,2,:,2))));
1.0000 + 0.0000i 0.0863 + 0.0009i 0.0863 - 0.0009i 1.0000 + 0.0000i
Получение пространственной корреляции для первого дискретного пути во второй антенне передачи задано как [1 0.2;0.2 1]
в свойстве ReceiveCorrelationMatrix
. Подтвердите, что канал вывод pathGains
показывает те же статистические характеристики.
disp('Rx spatial correlation, first path, second Tx:');
Rx spatial correlation, first path, second Tx:
disp(corrcoef(squeeze(pathGains(:,1,2,:))));
1.0000 + 0.0000i 0.2236 + 0.0550i 0.2236 - 0.0550i 1.0000 + 0.0000i
Получение пространственной корреляции для второго дискретного пути в первой антенне передачи задано как единичная матрица в свойстве ReceiveCorrelationMatrix
. Подтвердите, что канал вывод pathGains
показывает те же статистические характеристики.
disp('Rx spatial correlation, second path, first Tx:');
Rx spatial correlation, second path, first Tx:
disp(corrcoef(squeeze(pathGains(:,2,1,:))));
1.0000 + 0.0000i -0.0088 - 0.0489i -0.0088 + 0.0489i 1.0000 + 0.0000i
Исследуйте пространственные характеристики корреляции, задающие выбор антенны
Включите передачу и получите выбор антенны для объекта mimoChan
. Входной формат кадра сокращен к 100.
release(mimoChan);
mimoChan.AntennaSelection = 'Tx and Rx';
modData = pskModulator(randi([0 pskModulator.ModulationOrder-1],100,1));
Выберите первую антенну передачи, и второй получают антенну.
[channelOutput,pathGains] = mimoChan(modData,[1 0],[0 1]);
Подтвердите, что усиления пути, которые возвращает тот MATLAB®, имеют значения NaN
для отменявшей передачи - получают пары антенны.
disp('Return 1 if the path gains for the second transmit antenna are NaN:');
Return 1 if the path gains for the second transmit antenna are NaN:
disp(isequal(isnan(squeeze(pathGains(:,:,2,:))), ones(100,2,2)));
1
disp('Return 1 if the path gains for the first receive antenna are NaN:');
Return 1 if the path gains for the first receive antenna are NaN:
disp(isequal(isnan(squeeze(pathGains(:,:,:,1))), ones(100,2,2)));
1
Создайте частоту выборочный канал MIMO и отобразите его импульс и частотные характеристики.
Установите частоту дискретизации на 10 МГц и задайте задержки пути и усиления с помощью параметров канала расширенного автомобильного A (EVA). Установите максимальный эффект Доплера на 70 Гц.
fs = 10e6; % Hz pathDelays = [0 30 150 310 370 710 1090 1730 2510]*1e-9; % sec avgPathGains = [0 -1.5 -1.4 -3.6 -0.6 -9.1 -7 -12 -16.9]; % dB fD = 70; % Hz
Создайте 2x2 Системный объект канала MIMO с ранее заданными параметрами и установите свойство Visualization
на Impulse and frequency responses
с помощью пар "имя-значение". По умолчанию пара антенны, соответствующая, чтобы передать антенну 1 и получить антенну 1, будет отображена.
mimoChan = comm.MIMOChannel('SampleRate',fs, ... 'PathDelays',pathDelays, ... 'AveragePathGains',avgPathGains, ... 'MaximumDopplerShift',fD, ... 'Visualization','Impulse and frequency responses');
Сгенерируйте случайные двоичные данные и передайте его через канал MIMO. Импульсный график ответа позволяет вам легко идентифицировать отдельные пути и их соответствующие коэффициенты фильтра. Частоту выборочная природа канала EVA показывает график частотной характеристики.
x = randi([0 1],1000,2); y = mimoChan(x);
Выпустите mimoChan
и установите свойство AntennaPairsToDisplay
на [2 1] просматривать пару антенны, соответствующую, чтобы передать антенну 2 и получить антенну 1. Необходимо выпустить объект, когда свойство является ненастраиваемым.
release(mimoChan) mimoChan.AntennaPairsToDisplay = [2 1]; y = mimoChan(x);
Создайте и визуализируйте Доплеровские спектры канала MIMO, имеющего два пути.
Создайте массив ячеек Доплеровских структур, которые будут использоваться в создании канала. Доплеровский спектр первого пути будет иметь форму звонка, в то время как второй путь установлен, чтобы быть плоским.
dp{1} = doppler('Bell'); dp{2} = doppler('Flat');
Создайте значение по умолчанию 2x2 канал MIMO с двумя путями и максимальным эффектом Доплера на 100 Гц с помощью пар "имя-значение". Установите свойство Visualization
на Doppler spectrum
и установите PathsForDopplerDisplay
на 1. Доплеровский спектр первого пути будет отображен.
mimoChan = comm.MIMOChannel('SampleRate',1000, ... 'PathDelays',[0 0.002], ... 'AveragePathGains',[0 -3], ... 'MaximumDopplerShift',100, ... 'DopplerSpectrum',dp, ... 'Visualization','Doppler spectrum', ... 'PathsForDopplerDisplay',1);
Передайте случайные данные через канал MIMO, чтобы сгенерировать Доплеровский спектр первого пути. Поскольку Доплеровский график спектра только обновляет, когда его буфер заполнен, функция mimoChan
вызывается многократно, чтобы улучшить точность оценки. Заметьте, что спектр имеет форму звонка и что ее минимальные и максимальные частоты находятся в пределах пределов, установленных MaximumDopplerShift
.
for k = 1:25 x = randi([0 1],10000,2); y = mimoChan(x); end
Выпустите mimoChan
и установите свойство PathsForDopplerDisplay
на 2. Необходимо выпустить объект, когда свойство является ненастраиваемым. Вызовите функцию многократно, чтобы отобразить Доплеровский спектр второго пути. Заметьте, что спектр является плоским.
release(mimoChan) mimoChan.PathsForDopplerDisplay = 2; for k = 1:25 x = randi([0 1],10000,2); y = mimoChan(x); end
Создайте объект канала MIMO и передайте данные через них с помощью метода суммы синусоид. Пример демонстрирует, как состояние канала сохраняется в случаях, в которых с перерывами передаются данные.
Задайте полное время симуляции и в три раза сегменты, для которых будут переданы данные. В этом случае канал моделируется в течение 1 с с 1 000 Гц, выбирающими уровень. Одна последовательность текущих данных с 1000 выборками передается во время 0. Три пакета с 100 выборочными данными передаются во время 0,1 с, 0,4 с и 0,7 с.
t0 = 0:0.001:0.999; % Transmission 0 t1 = 0.1:0.001:0.199; % Transmission 1 t2 = 0.4:0.001:0.499; % Transmission 2 t3 = 0.7:0.001:0.799; % Transmission 3
Сгенерируйте случайные двоичные данные, соответствующие ранее заданным временным интервалам.
d0 = randi([0 1],1000,2); % 1000 samples d1 = randi([0 1],100,2); % 100 samples d2 = randi([0 1],100,2); % 100 samples d3 = randi([0 1],100,2); % 100 samples
Создайте плоское исчезновение 2x2 Системный объект канала MIMO с Sum of sinusoids
, исчезающим метод. Таким образом, это заканчивается, может быть повторен, задать seed с помощью пары "имя-значение". Когда свойство InitialTime
не задано, исчезающий канал будет моделироваться со времени 0. Включите выходной порт усилений пути.
mimoChan1 = comm.MIMOChannel('SampleRate',1000, ... 'MaximumDopplerShift',5, ... 'RandomStream','mt19937ar with seed', ... 'Seed',17, ... 'FadingTechnique','Sum of sinusoids', ... 'PathGainsOutputPort',true);
Создайте клон Системного объекта канала MIMO. Установите свойство InitialTimeSource
на Input port
так, чтобы исчезающее время смещения канала могло быть задано как входной параметр к функции mimoChan
.
mimoChan2 = clone(mimoChan1);
mimoChan2.InitialTimeSource = 'Input port';
Передайте случайные двоичные данные через первый объект канала, mimoChan1
. Данные передаются за все 1 000 раз выборки. В данном примере только усиление сложного контура необходимо.
[~,pg0] = mimoChan1(d0);
Передайте случайные данные через второй объект канала, mimoChan2
, где начальные смещения времени обеспечиваются как входные параметры.
[~,pg1] = mimoChan2(d1,0.1); [~,pg2] = mimoChan2(d2,0.4); [~,pg3] = mimoChan2(d3,0.7);
Сравните количество выборок, обработанных двумя каналами с помощью метода info
. Вы видите, что 1 000 выборок были обработаны mimoChan1
, в то время как только 300 были обработаны mimoChan2
.
G = info(mimoChan1); H = info(mimoChan2); [G.NumSamplesProcessed H.NumSamplesProcessed]
ans = 1×2
1000 300
Преобразуйте усиления пути в децибелы для пути, соответствующего первой передаче, и сначала получите антенну.
pathGain0 = 20*log10(abs(pg0(:,1,1,1))); pathGain1 = 20*log10(abs(pg1(:,1,1,1))); pathGain2 = 20*log10(abs(pg2(:,1,1,1))); pathGain3 = 20*log10(abs(pg3(:,1,1,1)));
Постройте усиления пути для непрерывных и прерывистых случаев. Заметьте, что усиления для этих трех сегментов отлично совпадают с усилением для непрерывного случая. Выравнивание двух подсветок, что метод суммы синусоид идеально подходит для симуляции packetized данных как характеристики канала, сохраняется, даже когда данные не передаются.
plot(t0,pathGain0,'r--') hold on plot(t1,pathGain1,'b') plot(t2,pathGain2,'b') plot(t3,pathGain3,'b') grid xlabel('Time (sec)') ylabel('Path Gain (dB)') legend('Continuous','Discontinuous','location','nw')
Продемонстрируйте преимущество использования суммы синусоид, исчезающих метод при симуляции канала с пакетными данными.
Установите параметры симуляции, таким образом, что уровень выборки составляет 100 кГц, общее время симуляции составляет 100 секунд, и рабочий цикл для пакетных данных составляет 25%.
fs = 1e5; % Hz tsim = 100; % seconds dutyCycle = 0.25;
Создайте плоское исчезновение 2x2 объект канала MIMO использование метода Filtered Gaussian noise
по умолчанию.
fgn = comm.MIMOChannel('SampleRate',fs);
Создайте подобный объект канала MIMO с помощью метода Sum of sinusoids
, где процесс исчезновения запускается, времена даны как входной параметр.
sos = comm.MIMOChannel('SampleRate',fs, ... 'FadingTechnique','Sum of sinusoids', ... 'NumSinusoids',48, ... 'InitialTimeSource','Input port');
Запустите непрерывную последовательность случайных битов через отфильтрованный Гауссов шумовой объект канала MIMO. Используйте tic/toc таймерные функции секундомера, чтобы измерить время выполнения вызова функции.
tic y = fgn(randi([0 1],fs*tsim,2)); tFGN = toc;
Чтобы передавать пакет данных каждую секунду, передайте случайные биты через сумму синусоид объект канала MIMO путем вызывания функции sos
в цикле for. Используйте tic/toc таймер секундомера, чтобы измерить время выполнения.
tic for k = 1:tsim z = sos(randi([0 1],fs*dutyCycle,2),0.5+(k-1)); end tSOS = toc;
Сравните отношение суммы времени выполнения синусоид к отфильтрованному Гауссову шумовому времени выполнения. Отношение - меньше чем один, который указывает, что сумма метода синусоид быстрее.
tSOS/tFGN
ans = 0.2254
Обработка исчезновения на ссылку описана в Методологии для Симуляции Многопутевых Исчезающих Каналов и принимает те же параметры для всех (N T × N R) ссылки канала MIMO. Каждая ссылка включает все мультипути для той ссылки.
Кронекерова модель принимает, что пространственные корреляции в передаче и получают стороны, отделимы. Эквивалентно, спектры направления отъезда (DoD) и направлений прибытия (DoA) приняты, чтобы быть отделимыми. Полная корреляционная матрица:
⊗ символ представляет Кронекеров продукт.
R t представляет корреляционную матрицу в стороне передачи: , из размера N T-by-NT.
R r представляет корреляционную матрицу в получить стороне: , из размера N R-by-NR.
Можно получить реализацию матрицы канала MIMO как:
A является матрицей R-by-NT N независимых тождественно распределенных комплексных переменных Gaussian с нулевым средним значением и модульным отклонением.
Следующая информация объясняет, как фактор частоты среза, f c, определяется для различных Доплеровских типов спектра:
Для любого Доплеровского типа спектра кроме Гауссова и BiGaussian, f c равняется 1
.
Для типа спектра ('Gaussian')
doppler
f c равняется NormalizedStandardDeviation∙sqrt(2∙log(2))
.
Для типа спектра ('BiGaussian')
doppler
:
Если PowerGains(1)
и значениями полей NormalizedCenterFrequencies(2)
является оба 0
, то f c равняется NormalizedStandardDeviation(1)∙sqrt(2∙log(2))
.
Если PowerGains(2)
и значениями полей NormalizedCenterFrequencies(1)
является оба 0
, то f c равняется NormalizedStandardDeviation(2)∙sqrt(2∙log(2))
.
Если значением поля NormalizedCenterFrequencies
является [0,0]
, и поле NormalizedStandardDeviation
имеет два идентичных элемента, то f c равняется NormalizedStandardDeviation(1)∙sqrt(2∙log(2))
.
Во всех других случаях f c равняется 1
.
Когда объект находится в режиме выбора антенны, он использует следующие алгоритмы, чтобы обработать входной сигнал:
Все случайные усиления пути всегда генерируются и продолжают развиваться для каждой ссылки, выбрана ли данная ссылка. Значения усиления пути вывод для невыбранных ссылок заполняются с NaN
.
Пространственная корреляция только применяется к выбранной передаче, и/или получите антенны, и коэффициенты корреляции являются соответствующими записями в передаче, получают, или объединенные корреляционные матрицы. Другими словами, пространственная корреляционная матрица для выбранной передачи или получает антенны, субматрица передачи, получите, или объединил пространственное значение свойства корреляционной матрицы.
Вход, проникающий в усиления пути, применяется к выбранным ссылкам только.
Каждый раз, когда ссылка сопоставила с определенным передатчиком переходы от выбранного состояния до невыбранного состояния, его фильтр канала сбрасывается. Например, если свойство выбора антенны установлено в Tx
, и выбранная антенна передачи изменяется от 2
до 1
, фильтр канала, соответствующий антенне, 2
будет сброшен.
Выходная нормализация канала происходит по количеству выбранных, получают антенны.
[1] Oestges, C. и Б. Клерккс. Радиосвязи MIMO: от реального распространения до пространственно-временного проекта кода, Academic Press, 2007.
[2] Correira, L. M. Мобильные широкополосные мультимедийные сети: методы, модели и инструменты для 4G, Academic Press, 2006.
[3] Kermoal, J. P. Л. Шумахер, К. Ай. Педерсен, П. Э. Модженсен и Ф. Фредериксен. "Стохастическое радио MIMO образовывает канал модель с экспериментальной валидацией". Журнал IEEE на Выбранных областях Коммуникаций. Издание 20, Номер 6, 2002, стр 1211–1226.
[4] Jeruchim, M., П. Балабан и К. С. Шэнмугэн. Симуляция систем связи, Секонд-Эдайшн, Нью-Йорк: академический Kluwer / пленум, 2000.
[5] Pätzold, Мэттиас, Cheng-Сянцзян Ван и Бьорн Олав Хогштанд. "Две Новых Суммы основанных на синусоидах Методов для Эффективной Генерации Нескольких Некоррелированых Форм волны Релеевского замирания". Транзакции IEEE на Радиосвязях. Издание 8, Номер 6, 2009, стр 3122–3131.
Указания и ограничения по применению:
Смотрите системные объекты в Генерации кода MATLAB (MATLAB Coder).
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.