comm.MIMOChannel

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

Описание

Объект comm.MIMOChannel фильтрует входной сигнал через многолучевой канал с обратной связью (MIMO). Этот объект моделирует как Релея, так и Райса с замираниями и использует модель Кронекера для моделирования пространственной корреляции между ссылками. Для получения дополнительной информации смотрите раздел Алгоритмы.

Для фильтрации входного сигнала через MIMO многолучевой канал с замираниями:

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

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

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

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

пример

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

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

Свойства

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

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

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

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

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

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

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

  • Когда вы задаете PathDelays для скаляра канал MIMO является частотно-плоским.

  • Когда вы задаете PathDelays для вектора канал MIMO является частотно-избирательным.

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

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

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

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

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

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

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

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

Затухающее распределение для канала, заданное как 'Rayleigh' или 'Rician'.

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

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

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

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

Зависимости

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

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

Доплеровские сдвиги для компонентов линии зрения канала Райса с замираниями в герцах, заданные как скаляр или вектор-строка. Это свойство должно иметь тот же размер, что и KFactor.

  • Если вы задаете DirectPathDopplerShift к скаляру, он представляет доплеровский сдвиг компонента линии зрения первого дискретного пути, который является процессом Райса с замираниями.

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

Зависимости

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

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

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

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

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

Зависимости

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

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

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

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

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

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

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

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

  • Если вы назначаете массив вызовов 1-by N P-ячеек 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

Задайте пространственную корреляцию передатчика как N T-by- N T-матрицу или N T-by- N T-by- N P-решётку. N T является количеством передающих антенн, и N P равняется значению свойства PathDelays.

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

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

  • Также можно задать TransmitCorrelationMatrix как N T-by N T-by N P массив, где каждый путь может иметь свою собственную собственную матрицу пространственной корреляции передачи.

Зависимости

Это свойство применяется, когда вы задаете свойство SpatialCorrelationSpecification равным 'Separate Tx Rx'.

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

Задайте пространственную корреляцию приемника как N R-by N R или N R-by N R-by N P массива. N R является количеством приемных антенн, и N P равняется значению свойства PathDelays.

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

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

  • Также можно задать ReceiveCorrelationMatrix как N R-by N R-by N P массив, где каждый путь может иметь свою собственную собственную матрицу пространственной корреляции приема.

Зависимости

Это свойство применяется, когда вы задаете свойство SpatialCorrelationSpecification равным 'Separate Tx Rx'.

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

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

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

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

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

Зависимости

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

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

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

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

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

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

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

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

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

Метод затухания модели канала, заданный как 'Filtered Gaussian noise' или 'Sum of sinusoids'.

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

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

Зависимости

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

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

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

  • 'Property' -- Используйте свойство 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 функция object сбрасывает только фильтры.

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

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

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

Зависимости

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

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

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

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

Выбор визуализации канала, заданное как '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%. Увеличение процента повышает точность отображения за счет скорости симуляции.

Зависимости

Это свойство применяется, когда Visualization 'Impulse response', 'Frequency response', или 'Impulse and frequency responses'.

Использование

Описание

пример

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, матрица N S-by- N T или матрица N S-by- N ST .

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

  • N T - количество передающих антенн. N T определяется значениями свойств TransmitCorrelationMatrix или NumTransmitAntennas объекта.

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

Количество передающих антенн определяется значениями свойств TransmitCorrelationMatrix или NumTransmitAntennas объекта.

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

Выберите активные передающие антенны в виде 1-байт- N T-двоичного вектора. N T представляет количество передающих антенн. Для элементов задано значение 1 идентифицировать выбранные индексы и 0 антенны идентифицируют невыбранные индексы антенны.

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

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

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

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

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

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

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

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

Выходной сигнал данных, возвращенный как N S-by- N R или N S-by- N SR матрица.

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

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

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

Коэффициент усиления выходного пути, возвращенный как N S-by- N P-by- N T-by- N R-массив с NaN значения для невыбранных пар передающая-приемная антенна.

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

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

  • N T - количество передающих антенн.

  • N R является количеством приемных антенн.

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

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

release(obj)

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

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

Примечание

  • Если вы задаете RandomStream свойство объекта, которое должно быть 'Global stream', reset функция object сбрасывает только фильтры.

  • Если вы задаете RandomStream на 'mt19937ar with seed', reset функция object сбрасывает фильтры, а также повторно инициализирует поток случайных чисел на значение Seed свойство.

Примеры

свернуть все

Создайте канал MIMO 4 на 2 с помощью Системного объекта канала 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)')

Figure contains an axes. The axes contains an object of type line.

Не задавая выбор антенны, фильтруйте PSK-модулированные данные через Канал с релеевским замиранием 2 на 2 и исследуйте пространственные корреляционные характеристики реализации канала. Используйте release функция объекта, чтобы разблокировать объект, чтобы задать AntennaSelection свойство к 'Tx and Rx' и затем подтвердите невыбранные пары передающая-приемная антенна.

Исследуйте пространственные характеристики корреляции, не определяя выбор антенны

Создайте PSK-модулятор System 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');

Создайте канал MIMO по умолчанию 2x2 с двумя путями и доплеровским сдвигом на 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 с со частотой дискретизации 1000 Гц. Одна непрерывная последовательность данных с 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. Данные передаются за все 1000 временных выборок. В данном примере требуется только комплексное усиление пути.

[~,pg0] = mimoChan1(d0);

Передайте случайные данные через объект второго канала, mimoChan2, где начальные смещения времени предусмотрены в качестве входных параметров.

[~,pg1] = mimoChan2(d1,0.1);
[~,pg2] = mimoChan2(d2,0.4);
[~,pg3] = mimoChan2(d3,0.7);

Сравните количество выборок, обработанных двумя каналами с помощью info способ. Можно увидеть, что 1000 выборки были обработаны 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)));

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

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')

Figure contains an axes. The axes contains 4 objects of type line. These objects represent Continuous, Discontinuous.

Продемонстрировать преимущество использования метода суммирования синусоидов с замираниями при симуляции канала с данными о пакете.

Установите параметры симуляции так, чтобы частота дискретизации составляла 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
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.2151

Алгоритмы

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

Обработка с замираниями по ссылке описана в Методологии симуляции многолучевых каналов с замираниями и принимает те же параметры для всех (N T × N R) ссылок канала MIMO. Каждая ссылка содержит все мультипути для этой ссылки.

Ссылки

[1] Oestges, C. и B. Clerckx. MIMO Wireless Communications: от распространения в реальном мире до проекта кода пространства-времени, академическая пресса, 2007.

[2] Correira, L. M. Mobile Broadband Multimedia Networks: Technologies, Models and Tools for 4G, Academic Press, 2006.

[3] Кермоаль, Й. П., Л. Шумахер, К. И. Педерсен, П. Е. Могенсен, и Ф. Фредериксен. Стохастическая модель радиоканала MIMO с экспериментальной валидацией. Журнал IEEE по отдельным областям коммуникаций. Том 20, № 6, 2002, стр. 1211-1226.

[4] Иерухим, М., П. Балабан, и К. С. Шанмуган. Simulation of Communication Systems, Second Edition, New York: Kluwer Academic/Plenum, 2000.

[5] Pätzold, Matthias, Cheng-Xiang Wang, and Bjorn Olav Hogstand. «Два новых метода на основе суммы синусоидов для эффективной генерации нескольких некоррелированных Релеевских замираний волн». Транзакции IEEE по беспроводной связи. Том 8, № 6, 2009, стр. 3122-3131.

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

.
Введенный в R2012a