коммуникация. MIMOChannel

Пропустите входной сигнал через MIMO многопутевой исчезающий канал

Описание

Коммуникация. Объект MIMOChannel пропускает входной сигнал через multiple-input/multiple-output (MIMO) многопутевой исчезающий канал. Это объектные модели и Рейли и Рикиэн, исчезающий и, использует Кронекерову модель для моделирования пространственной корреляции между ссылками. Для обработки деталей смотрите раздел Algorithms.

Пропускать входной сигнал через MIMO многопутевой исчезающий канал:

  1. Создайте объект comm.MIMOChannel и установите его свойства.

  2. Вызовите объект с аргументами, как будто это была функция.

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Синтаксис

mimochan = comm.MIMOChannel
mimochan = comm.MIMOChannel(Name,Value)

Описание

mimochan = comm.MIMOChannel создает несколько - вводит, несколько - выводят (MIMO) выборочную частотой или плоскую частотой исчезающую Систему канала object™. Этот объект пропускает действительный или комплексный входной сигнал через многопутевой канал MIMO, чтобы получить поврежденный каналом сигнал.

пример

mimochan = comm.MIMOChannel(Name,Value) свойства наборов с помощью одной или нескольких пар "имя-значение". Заключите каждое имя свойства в одинарные кавычки.

Пример: comm.MIMOChannel('SampleRate',2)

Свойства

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

Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и функция release разблокировала их.

Если свойство является настраиваемым, можно изменить его значение в любое время.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).

Частота дискретизации входного сигнала в герц, заданном как положительная скалярная величина.

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

Дискретная задержка пути в секундах, заданных как скалярный или вектор - строка.

  • Когда вы устанавливаете PathDelays на скаляр, канал MIMO является плоской частотой.

  • Когда вы устанавливаете PathDelays на вектор, канал MIMO является выборочной частотой.

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

Средний путь получает в децибелах, заданных как скалярный или вектор - строка. AveragePathGains должен иметь тот же размер как PathDelays.

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

Нормируйте усиления пути, заданные как true или false.

  • Когда вы устанавливаете это свойство на true, процессы исчезновения нормированы так, чтобы общая степень усилений пути, усредняемых в зависимости от времени, была дБ 0.

  • Когда вы устанавливаете это свойство на false, на усилениях пути нет никакой нормализации.

Средние степени усилений пути заданы как свойство AveragePathGains.

Типы данных: логический

Распределение замираний, чтобы использовать для канала, заданного как 'Rayleigh' или 'Rician'.

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

K-фактор Rician, исчезающего канал, заданный как положительная скалярная величина или 1 NP вектором элементов с положительным знаком. N P равняется количеству задержек пути, заданных свойством PathDelays.

  • Если вы устанавливаете KFactor на скаляр, первый дискретный путь является процессом исчезновения Rician с K-фактором Rician KFactor. Любые остающиеся дискретные пути являются независимыми процессами Релеевского замирания.

  • Если вы устанавливаете KFactor на вектор - строку, дискретный путь, соответствующий положительному элементу вектора KFactor, является процессом исчезновения Rician с K-фактором Rician, заданным тем элементом. Дискретный путь, соответствующий элементу с нулевым знаком вектора KFactor, является процессом Релеевского замирания.

Зависимости

Это свойство применяется, когда FadingDistribution является Rician.

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

Эффекты Доплера для компонентов угла обзора Rician, исчезающего канал в герц, заданном как скалярный или вектор - строка. Это свойство должно иметь тот же размер как KFactor.

  • Если вы устанавливаете DirectPathDopplerShift на скаляр, он представляет эффект Доплера компонента угла обзора первого дискретного пути, который является процессом исчезновения Rician.

  • Если вы устанавливаете DirectPathDopplerShift на вектор - строку, дискретный путь, который является процессом исчезновения Rician, имеет свой эффект Доплера компонента угла обзора, заданный элементами DirectPathDopplerShift, которые соответствуют положительным элементам в векторе KFactor.

Зависимости

Это свойство применяется, когда FadingDistribution является Rician.

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

Начальные фазы для компонентов угла обзора Rician, исчезающего канал в радианах, заданных как скалярный или вектор - строка. Это свойство должно иметь тот же размер как KFactor.

  • Если вы устанавливаете DirectPathInitialPhase на скаляр, он представляет начальную фазу компонента угла обзора первого дискретного пути, который является процессом исчезновения Rician.

  • Если вы устанавливаете DirectPathInitialPhase на вектор - строку, дискретный путь, который является процессом исчезновения Rician, имеет свою начальную фазу компонента угла обзора, заданную элементами DirectPathInitialPhase, которые соответствуют положительным элементам в векторе KFactor.

Зависимости

Это свойство применяется, когда FadingDistribution является Rician.

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

Максимальный эффект Доплера для всех путей к каналу в герц, заданном как неотрицательный скаляр.

Эффект Доплера применяется ко всем путям к каналу. Когда вы устанавливаете это свойство на 0, канал остается статичным для целого входа. Можно использовать функцию объекта reset, чтобы сгенерировать новую реализацию канала.

MaximumDopplerShift должен быть меньшим, чем (SampleRate/10)/fc для каждого пути, где f c представляет фактор частоты среза пути. Для получения дополнительной информации о частоте среза смотрите Фактор Частоты среза.

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

Доплеровский спектр формирует для всех путей к каналу, заданных как одна Доплеровская структура спектра, возвращенная в функцию doppler или 1 NP массивом ячеек таких структур. Значение по умолчанию этого свойства является спектром Джейкса Доплера (doppler('Jakes')).

  • Если вы присваиваете один вызов doppler, все пути имеют заданный Доплеровский спектр того же самого.

  • Если вы присваиваете 1 NP массивом ячеек вызовов doppler с помощью какого-либо из заданных синтаксисов, каждому пути задала Доплеровский спектр соответствующая Доплеровская структура спектра в массиве. В этом случае N P равняется значению свойства PathDelays.

Максимальное значение эффекта Доплера, необходимое, чтобы задать Доплеровский спектр/спектры, дано свойством MaximumDopplerShift.

Зависимости

Это свойство применяется, когда MaximumDopplerShift больше, чем нуль.

Если вы присваиваете свойство FadingTechnique 'Sum of sinusoids', необходимо установить DopplerSpectrum на doppler('Jakes').

Пространственная спецификация корреляции, заданная как 'Separate Tx Rx', 'None' или 'Combined'.

  • Выберите 'Spatial Tx Rx', чтобы отдельно задать передачу и получить пространственные корреляционные матрицы, из которых количество антенны передачи (N T) и количество получают антенны (N R) выведены.

  • Выберите 'None', чтобы задать количество передачи и получить антенны.

  • Выберите 'Combined', чтобы задать одну корреляционную матрицу для целого канала, от которого выведен продукт N T и N R.

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

Количество антенн передачи, заданных как положительное целое число.

Зависимости

Это свойство применяется, когда SpatialCorrelationSpecification является 'None' или 'Combined'.

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

Количество получает антенны, заданные как положительное целое число.

Зависимости

Это свойство применяется, когда SpatialCorrelationSpecification является 'None' или 'Combined'.

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

Задайте пространственную корреляцию передатчика как матрица 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
Поддержка комплексного числа: Да

Задайте пространственную корреляцию получателя как матрица 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
Поддержка комплексного числа: Да

Объединенная пространственная корреляционная матрица, заданная как матрица TR-by-NTR N или TR N NTR NP массивом, где TR N = (N TN R), и N P равняется значению свойства PathDelays.

  • Если PathDelays является скаляром, канал является плоской частотой, и SpatialCorrelationMatrix является Эрмитовой матрицей TR-by-NTR N. Значение любого недиагонального элемента должно быть не больше, чем геометрическое среднее значение двух соответствующих диагональных элементов.

  • Если PathDelays является вектором, канал является выборочной частотой, и можно задать SpatialCorrelationMatrix как матрицу. Каждый путь имеет ту же пространственную корреляционную матрицу.

  • Также можно задать SpatialCorrelationMatrix как TR N NTR NP массивом, где каждый путь может иметь свою собственную различную объединенную пространственную корреляционную матрицу.

Зависимости

Это свойство применяется, когда вы устанавливаете свойство SpatialCorrelationSpecification на 'Combined'.

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

Схема выбора антенны, заданная как 'Off', 'Tx', 'Rx' или 'Tx and Rx'.

Tx представляет антенны передачи, и Rx представляет, получают антенны. Когда вы конфигурируете любой выбор антенны кроме настройки по умолчанию, объект требует, чтобы одни или несколько входных параметров задали, какие антенны выбраны для передачи сигнала. Для получения дополнительной информации смотрите Выбор Антенны.

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

Нормируйте канал выходные параметры, заданные как true или false.

  • Когда вы устанавливаете это свойство на true, канал, которого выходные параметры нормированы количеством, получает антенны.

  • Когда вы устанавливаете это свойство на false, канал, выходные параметры не нормированы.

Типы данных: логический

Модель канала исчезающий метод, заданный как 'Filtered Gaussian noise' или 'Sum of sinusoids'.

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

Количество синусоид раньше моделировало процесс исчезновения, заданный как положительное целое число.

Зависимости

Это свойство применяется, когда FadingTechnique является 'Sum of sinusoids'.

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

Источник, чтобы управлять временем начала процесса исчезновения, заданного как 'Property' или 'Input port'.

  • Свойство-- Используйте свойство InitialTime установить начальное смещение времени.

  • 'Input port' - Задайте время начала процесса исчезновения при помощи входа initialtime к объекту. Входное значение может измениться в последовательных вызовах объекта.

Зависимости

Это свойство применяется, когда FadingTechnique является 'Sum of sinusoids'.

Начальное смещение времени для исчезающей модели в секундах, заданных как неотрицательный скаляр.

Когда InitialTime не является кратным 1/SampleRate, это окружено к самой близкой демонстрационной позиции.

Зависимости

Это свойство применяется, когда свойство FadingTechnique установлено в 'Sum of sinusoids', и свойство InitialTimeSource установлено в 'Property'.

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

Источник потока случайных чисел, заданного как 'Global stream' или 'mt19937ar with seed'.

  • 'Global stream' - Текущий глобальный поток случайных чисел используется для нормально распределенной генерации случайных чисел. В этом случае функция объекта reset сбрасывает фильтры только.

  • 'mt19937ar with seed' - mt19937ar алгоритм используется для нормально распределенной генерации случайных чисел. В этом случае функция объекта reset сбрасывает фильтры и также повторно инициализирует поток случайных чисел к значению свойства Seed.

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

Начальный seed mt19937ar потока случайных чисел, заданного как неотрицательное целое число. Когда функция объекта reset вызвана, mt19937ar поток случайных чисел повторно инициализируется к значению Seed.

Зависимости

Это свойство применяется, когда вы устанавливаете свойство RandomStream на 'mt19937ar with seed'.

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

Опция к выходным path усилениям, заданным как false или true. Установите это свойство на true выводить усиления пути к каналу базового процесса исчезновения.

Типы данных: логический

Настройка визуализации канала, заданная как 'Off', 'Impulse response', 'Frequency response', 'Impulse and frequency responses' или 'Doppler spectrum'. Когда визуализация включена, выбранные характеристики канала, такие как импульсный ответ или Доплеровский спектр, отображение в отдельном окне. Для получения дополнительной информации смотрите Визуализацию Канала.

Зависимости

Визуализация применяется только, когда свойство FadingTechnique установлено в 'Filtered Gaussian noise'.

Передача - получает пару антенны, чтобы отобразиться, заданный как 1 2 вектор, где первый элемент соответствует желаемой антенне передачи, и второй элемент соответствует желаемому, получают антенну. В это время может быть отображена только одна пара.

Зависимости

Это свойство применяется, когда Визуализацией не является Off.

Путь, для которого отображен Доплеровский спектр, задал как положительное целое число от 1 до N P, где N P равняется значению свойства PathDelays.

Зависимости

Это свойство применяется, когда Визуализация установлена в 'Doppler spectrum'.

Процент выборок, чтобы отобразиться, заданный как 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) пропускает входной сигнал через MIMO, исчезающий канал, заданный mimochan, и возвращает результат в outsignal.

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'. Синтаксис поддерживает входные опции от предшествующих синтаксисов.

пример

[outsignal,pathgains] = mimochan(___) также возвращает усиления пути к каналу MIMO для схем выбора антенны. Синтаксис поддерживает входные опции от предшествующих синтаксисов.

Входные параметры

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

Входной сигнал, заданный как скаляр, 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
Поддержка комплексного числа: Да

Выберите активные антенны передачи, заданные как 1 NT бинарным вектором. N T представляет количество антенн передачи. Набор элементов к 1 идентифицирует, что выбранные индексы антенны и 0 идентифицируют невыбранные индексы антенны.

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

Выберите активный, получают антенны, заданные как 1 NR бинарным вектором. N R представляет количество, получают антенны. Набор элементов к 1 идентифицирует, что выбранные индексы антенны и 0 идентифицируют невыбранные индексы антенны.

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

Начальное смещение времени для исчезающей модели в секундах, заданных как неотрицательный скаляр.

Начальное смещение времени должно быть больше, чем прошлое время окончания кадра. Когда initialtime не является кратным 1/SampleRate, это окружено к самой близкой демонстрационной позиции.

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

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

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

Сигнал выходных данных, возвращенный как S-by-NR N или N матрица S-by-NSR.

  • N S является количеством выборок.

  • N R является количеством, получают антенны. N R определяется значениями свойств ReceiveCorrelationMatrix или NumReceiveAntennas объекта.

  • SR N является количеством выбранных, получают антенны, как определено набором числа элементов к 1 в векторе, предоставленном входу selrx.

Выходные path усиления, возвращенные как N S NP NT NR массивом со значениями NaN для отменявшей передачи - получают пары антенны.

  • N S является количеством выборок.

  • N P равняется значению свойства PathDelays.

  • N T является количеством антенн передачи.

  • N R является количеством, получают антенны.

Функции объекта

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj, используйте этот синтаксис:

release(obj)

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

infoХарактеристическая информация об исчезающем объекте канала
stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примечание

  • Если вы устанавливаете свойство 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. Каждая ссылка включает все мультипути для той ссылки.

Ссылки

[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.

Расширенные возможности

Смотрите также

Системные объекты

Блоки

Представленный в R2012a