Пропустите входной сигнал через MIMO многолучевой канал с замираниями
Коммуникация. Объект MIMOChannel пропускает входной сигнал через multiple-input/multiple-output (MIMO) многопутевой исчезающий канал. Это объектные модели и Рейли и Рикиэн, исчезающий и, использует Кронекерову модель для моделирования пространственной корреляции между ссылками. Для обработки деталей смотрите раздел Algorithms.
Пропускать входной сигнал через MIMO многопутевой исчезающий канал:
Создайте comm.MIMOChannel
объект и набор его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.
создает несколько - вводит, несколько - выводят (MIMO) выборочную частотой или плоскую частотой исчезающую Систему канала object™. Этот объект пропускает действительный или комплексный входной сигнал через многопутевой канал MIMO, чтобы получить поврежденный каналом сигнал.mimochan
= comm.MIMOChannel
свойства наборов с помощью одной или нескольких пар "имя-значение". Заключите каждое имя свойства в одинарные кавычки.mimochan
= comm.MIMOChannel(Name
,Value
)
comm.MIMOChannel('SampleRate',2)
Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их и release
функция разблокировала их.
Если свойство является настраиваемым, можно изменить его значение в любое время.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).
SampleRate
— Частота дискретизации входного сигнала
(значение по умолчанию) | положительная скалярная величинаЧастота дискретизации входного сигнала в герц, заданном как положительная скалярная величина.
Типы данных: double
PathDelays
— Дискретная задержка пути
(значение по умолчанию) | скаляр | вектор-строкаДискретная задержка пути в секундах, заданных как скалярный или вектор-строка.
Когда вы устанавливаете PathDelays
к скаляру канал MIMO является плоской частотой.
Когда вы устанавливаете PathDelays
к вектору канал MIMO является выборочной частотой.
Типы данных: double
AveragePathGains
— Средний путь получает (дБ)
(значение по умолчанию) | скаляр | вектор-строкаСредний путь получает в децибелах, заданных как скалярный или вектор-строка. AveragePathGains
должен иметь тот же размер как PathDelays.
Типы данных: double
NormalizePathGains
— Нормируйте усиления путиtrue
(значение по умолчанию) | false
Нормируйте усиления пути, заданные как true
или false
.
Когда вы устанавливаете это свойство на true
, процессы исчезновения нормированы так, чтобы общей степенью усилений пути, усредняемых в зависимости от времени, был 0
дБ.
Когда вы устанавливаете это свойство на false
, на усилениях пути нет никакой нормализации.
Средние степени усилений пути заданы как свойство AveragePathGains.
Типы данных: логический
FadingDistribution
— Распределение замираний'Rayleigh'
(значение по умолчанию) | 'Rician'
Распределение замираний, чтобы использовать в канале, заданном как 'Rayleigh'
или 'Rician'
.
Типы данных: char
KFactor
— K-фактор Rician, исчезающего канал
(значение по умолчанию) | положительная скалярная величина | вектор-строка K-фактор Rician, исчезающего канал, заданный как положительная скалярная величина или 1 NP вектором элементов с положительным знаком. N P равняется количеству задержек пути, заданных свойством PathDelays.
Если вы устанавливаете KFactor
к скаляру первый дискретный путь является процессом исчезновения Rician с K-фактором Rician KFactor
. Любые остающиеся дискретные пути являются независимыми процессами Релеевского замирания.
Если вы устанавливаете KFactor
к вектору-строке, дискретный путь, соответствующий положительному элементу KFactor
вектор является процессом исчезновения Rician с K-фактором Rician, заданным тем элементом. Дискретный путь, соответствующий элементу с нулевым знаком KFactor
вектор является процессом Релеевского замирания.
Это свойство применяется, когда FadingDistribution является Rician
.
Типы данных: double
DirectPathDopplerShift
— Эффекты Доплера для компонентов угла обзора (Гц)
(значение по умолчанию) | скаляр | вектор-строкаЭффекты Доплера для компонентов угла обзора Rician, исчезающего канал в герц, заданном как скалярный или вектор-строка. Это свойство должно иметь тот же размер как KFactor.
Если вы устанавливаете DirectPathDopplerShift
к скаляру это представляет эффект Доплера компонента угла обзора первого дискретного пути, который является процессом исчезновения Rician.
Если вы устанавливаете DirectPathDopplerShift
к вектору-строке дискретный путь, который является процессом исчезновения Rician, имеет свой эффект Доплера компонента угла обзора, заданный элементами DirectPathDopplerShift
это соответствует положительным элементам в векторе KFactor.
Это свойство применяется, когда FadingDistribution является Rician
.
Типы данных: double
DirectPathInitialPhase
— Начальные фазы для компонентов угла обзора (Радианы)
(значение по умолчанию) | скаляр | вектор-строкаНачальные фазы для компонентов угла обзора Rician, исчезающего канал в радианах, заданных как скалярный или вектор-строка. Это свойство должно иметь тот же размер как KFactor.
Если вы устанавливаете DirectPathInitialPhase
к скаляру это представляет начальную фазу компонента угла обзора первого дискретного пути, который является процессом исчезновения Rician.
Если вы устанавливаете DirectPathInitialPhase
к вектору-строке дискретный путь, который является процессом исчезновения Rician, имеет свою начальную фазу компонента угла обзора, заданную элементами DirectPathInitialPhase
это соответствует положительным элементам в векторе KFactor.
Это свойство применяется, когда FadingDistribution является Rician
.
Типы данных: double
MaximumDopplerShift
— Максимальный эффект Доплера для всех путей к каналу (Гц)
(значение по умолчанию) | неотрицательный скалярМаксимальный эффект Доплера для всех путей к каналу в герц, заданном как неотрицательный скаляр.
Эффект Доплера применяется ко всем путям к каналу. Когда вы устанавливаете это свойство на 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
— Количество антенн передачи
(значение по умолчанию) | положительное целое числоКоличество антенн передачи, заданных как положительное целое число.
Это свойство применяется, когда SpatialCorrelationSpecification является 'None'
или 'Combined'
.
Типы данных: double
NumReceiveAntennas
— Количество получает антенны
(значение по умолчанию) | положительное целое числоКоличество получает антенны, заданные как положительное целое число.
Это свойство применяется, когда SpatialCorrelationSpecification является 'None'
или 'Combined'
.
Типы данных: double
TransmitCorrelationMatrix
— Пространственная корреляция передатчика
(значение по умолчанию) | матрица | трехмерный массивЗадайте пространственную корреляцию передатчика как матрица 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
— Пространственная корреляция получателя
(значение по умолчанию) | матрица | трехмерный массивЗадайте пространственную корреляцию получателя как матрица 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
— Объединенная пространственная корреляционная матрица
(значение по умолчанию) | матрица | трехмерный массивОбъединенная пространственная корреляционная матрица, заданная как матрица 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
— Модель канала исчезающий метод'Filtered Gaussian noise'
(значение по умолчанию) | 'Sum of sinusoids'
Модель канала исчезающий метод, заданный как 'Filtered Gaussian noise'
или 'Sum of sinusoids'
.
Типы данных: char
NumSinusoids
— Количество синусоид используется
(значение по умолчанию) | положительное целое числоКоличество синусоид раньше моделировало процесс исчезновения, заданный как положительное целое число.
Это свойство применяется, когда FadingTechnique является 'Sum of sinusoids'
.
Типы данных: double
InitialTimeSource
— Источник, чтобы управлять временем начала исчезающего процесса'Property'
(значение по умолчанию) | 'Input port'
Источник, чтобы управлять временем начала процесса исчезновения, заданного как 'Property'
или 'Input port'
.
'Property'
- Используйте свойство InitialTime установить начальное смещение времени.
'Input port'
- Задайте время начала процесса исчезновения при помощи initialtime
введите к объекту. Входное значение может измениться в последовательных вызовах объекта.
Это свойство применяется, когда FadingTechnique является 'Sum of sinusoids'
.
InitialTime
— Начальное время возмещено
(значение по умолчанию) | неотрицательный скалярНачальное смещение времени для исчезающей модели в секундах, заданных как неотрицательный скаляр.
Когда 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 потока случайных чисел
(значение по умолчанию) | неотрицательное целое числоНачальный seed mt19937ar потока случайных чисел, заданного как неотрицательное целое число. Когда reset
объектная функция вызвана, mt19937ar поток случайных чисел повторно инициализируется к Seed
значение.
Это свойство применяется, когда вы устанавливаете свойство RandomStream на 'mt19937ar with seed'
.
Типы данных: double
PathGainsOutputPort
— Опция к выходным path усилениямfalse
(значение по умолчанию) | true
Опция к выходным path усилениям, заданным как false
или true
. Установите это свойство на true
выводить усиления пути к каналу базового процесса исчезновения.
Типы данных: логический
Visualization
— Визуализация канала'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 2 вектор, где первый элемент соответствует желаемой антенне передачи, и второй элемент соответствует желаемому, получают антенну. В это время может быть отображена только одна пара.
Это свойство применяется, когда Визуализацией не является Off
.
PathsForDopplerDisplay
— Путь, для которого отображен Доплеровский спектр
(значение по умолчанию) | положительное целое числоПуть, для которого отображен Доплеровский спектр, задал как положительное целое число от 1 до N P, где N P равняется значению свойства PathDelays.
Это свойство применяется, когда Визуализация установлена в 'Doppler spectrum'
.
SamplesToDisplay
— Процент выборок, чтобы отобразиться
(значение по умолчанию) | 10%
| 50%
| 100%
Процент выборок, чтобы отобразиться, заданный как 10%
, 25%, 50%
, или
100%
. Увеличение процента улучшает точность отображения за счет скорости симуляции.
Это свойство применяется, когда Визуализацией является 'Impulse response'
, 'Frequency response'
, или 'Impulse and frequency responses'
.
включает антенны передачи, выбранные 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
— Начальное время возмещено
(значение по умолчанию) | неотрицательный скалярНачальное смещение времени для исчезающей модели в секундах, заданных как неотрицательный скаляр.
Начальное смещение времени должно быть больше прошлого времени окончания системы координат. Когда 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)));
0
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)));
0
Создайте частоту выборочный канал 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.2621
Обработка исчезновения на ссылку описана в Методологии для Симуляции Многопутевых Исчезающих Каналов и принимает те же параметры для всех (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
.
Для doppler
('Gaussian')
тип спектра, f c равняется NormalizedStandardDeviation∙sqrt(2∙log(2))
.
Для doppler
('BiGaussian')
тип спектра:
Если 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
.
Пространственная корреляция только применяется к выбранной передаче, и/или получите антенны, и коэффициенты корреляции являются соответствующими записями в передаче, получают, или объединенные корреляционные матрицы. Другими словами, пространственная корреляционная матрица для выбранной передачи или получает антенны, субматрица передачи, получите, или объединил пространственное значение свойства корреляционной матрицы.
Для путей прохождения сигнала, сопоставленных с неактивными антеннами, сигнал с нулевой степенью передается к фильтру канала.
Выходная нормализация канала происходит по количеству выбранных, получают антенны.
[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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.