exponenta event banner

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

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

Описание

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

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

  1. Создать comm.MIMOChannel и задайте его свойства.

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

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

Создание

Описание

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

пример

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

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

Свойства

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

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

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

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

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

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

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

  • При установке PathDelays для скаляра канал MIMO является плоским по частоте.

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

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

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

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

Нормализовать усиление тракта, указанное как true или false.

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

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

Средние значения степеней усиления пути определяются свойством AvereyStartGains.

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

Распределение замирания для использования в канале, указанное как 'Rayleigh' или 'Rician'.

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

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

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

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

Зависимости

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

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

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

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

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

Зависимости

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

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

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

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

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

Зависимости

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

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

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

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

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

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

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

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

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

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

Зависимости

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

При назначении свойства FadingTechnique 'Sum of sinusoids', необходимо установить DopplerSpectrum кому doppler('Jakes').

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

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

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

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

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

Число передающих антенн, указанное как положительное целое число.

Зависимости

Это свойство применяется в том случае, если свойство RealedCorrelationSpecification имеет значение 'None' или 'Combined'.

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

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

Зависимости

Это свойство применяется в том случае, если свойство RealedCorrelationSpecification имеет значение 'None' или 'Combined'.

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

Укажите пространственную корреляцию передатчика в виде матрицы NT-by-NT или матрицы NT-by-NT-by-NP. NT - это количество передающих антенн, и NP равно значению свойства StartDelays.

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

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

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

Зависимости

Эта собственность применяется, когда Вы устанавливаете собственность SpatialCorrelationSpecification в 'Separate Tx Rx'.

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

Задайте пространственную корреляцию приемника в виде матрицы NR-за-NR или матрицы NR-за-NR-за-NP. NR - это количество приемных антенн, и NP равно значению свойства

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

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

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

Зависимости

Эта собственность применяется, когда Вы устанавливаете собственность SpatialCorrelationSpecification в 'Separate Tx Rx'.

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

Комбинированная матрица пространственной корреляции, заданная как матрица NTR-за-NTR или массив NTR-за-NTR-за-NP, где NTR = (NT NR), и NP равно значению свойства «» StartDelays «».

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

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

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

Зависимости

Эта собственность применяется, когда Вы устанавливаете собственность 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' -- Используйте свойство InitityTime для установки начального временного смещения.

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

Зависимости

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

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

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

Зависимости

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

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

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

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

  • 'mt19937ar with seed' - Алгоритм mt19937ar используется для создания нормально распределенных случайных чисел. В этом случае reset объектная функция сбрасывает фильтры, а также повторно инициализирует поток случайных чисел до значения свойства 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 до NP, где NP равно значению свойства, представляющего собой ΔDelays.

Зависимости

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

Процент отображаемых образцов, указанный как 10%, 25%, 50%, или 100%. Увеличение процента повышает точность отображения за счет скорости моделирования.

Зависимости

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

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

Описание

пример

outsignal = mimochan(insignal) фильтрует входной сигнал через канал замирания MIMO, указанный mimochan и возвращает результат в outsignal.

outsignal = mimochan(insignal,seltx) включает передающие антенны, выбранные seltx для обработки канала.

Этот синтаксис применяется при задании для свойства объекта SharingSelection значения 'Tx'.

Например, для выбора первого и третьего индекса передающей антенны в качестве активного:

mimochan = comm.MIMOChannel('AntennaSelection','Tx');
seltx = [1 0 1];
...
outsignal = mimochan(insignal,seltx);

outsignal = mimochan(insignal,selrx) включает приемные антенны, выбранные selrx для обработки канала.

Этот синтаксис применяется при задании для свойства объекта SharingSelection значения 'Rx'.

Например, чтобы выбрать второй индекс приемной антенны как активный:

mimochan = comm.MIMOChannel('AntennaSelection','Rx');
selrx = [0 1];
...
outsignal = mimochan(insignal,selrx);

пример

outsignal = mimochan(insignal,seltx,selrx) включает передающие и приемные антенны, выбранные seltx и selrx для обработки канала.

Этот синтаксис применяется при задании для свойства объекта SharingSelection значения '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' и свойство InitityTimeSource объекта для 'Input port'. Синтаксис поддерживает параметры ввода из предыдущих синтаксисов.

пример

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

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

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

Входной сигнал, заданный как скаляр, вектор столбца элемента NS, матрица NS-by-NT или матрица NS-by-NST.

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

  • NT - количество передающих антенн. NT определяется значениями свойств объекта TransmissoredMatrix или NumTransmissAntennas.

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

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

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

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

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

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

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

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

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

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

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

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

Выходной сигнал данных, возвращаемый в виде матрицы NS-by-NR или NS-by-NSR.

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

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

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

Коэффициенты усиления выходного тракта, возвращаемые в виде массива NS-by-NP-by-NT-by-NR с NaN значения для невыбранных пар передающая-приемная антенна.

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

  • Значение NP равно значению свойства StartDelays.

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

  • NR - количество приемных антенн.

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

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

release(obj)

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

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

Примечание

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

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

Примеры

свернуть все

Создайте канал MIMO 4 на 2 с помощью объекта MIMO channel System. Модулировать и пространственно кодировать данные, а затем передавать их через канал.

Создание данных, модулированных 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' и затем подтвердить невыбранные пары антенн приема-передачи.

Анализ пространственных корреляционных характеристик без указания выбора антенны

Создайте системный object™ модулятора PSK для модуляции случайно сгенерированных данных.

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 и передайте через него данные с использованием метода sum-of-sinusoids. Пример демонстрирует, как поддерживается состояние канала в случаях, когда данные передаются прерывисто.

Определите общее время моделирования и три временных сегмента, для которых будут передаваться данные. В этом случае канал моделируется в течение 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 channel System с помощью Sum of sinusoids техника затухания. Чтобы результаты можно было повторить, укажите начальное число, используя пару имя-значение. В качестве 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/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.2151

Алгоритмы

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

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

Ссылки

[1] Oestges, C. и Б. Клерккс. Беспроводная связь MIMO: от распространения в реальном мире до проектирования кода в пространстве-времени, Academic Press, 2007.

[2] Коррейра, Л.М. Мобильные широкополосные мультимедийные сети: методы, модели и инструменты для 4G, Академическая пресса, 2006.

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

[4] Иероним, М., П. Балабан и К. С. Шанмуган. Моделирование систем связи, второе издание, Нью-Йорк: Kluwer Academic/Plenum, 2000.

[5] Пятцольд, Матиас, Чэн-Сян Ван и Бьорн Олав Хогстанд. «Два новых метода, основанных на сумме синусоид, для эффективного генерирования множественных некоррелированных волн релейного замирания». Транзакции IEEE по беспроводной связи. Том 8, номер 6, 2009, стр. 3122-3131.

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

.
Представлен в R2012a