Фильтрация входного сигнала через канал многолучевого замирания MIMO
Объект comm.MIMOChannel фильтрует входной сигнал через многолучевой канал замирания с множеством входов и множеством выходов (MIMO). Этот объект моделирует релеевское и рисийское замирание и использует кронекеровскую модель для моделирования пространственной корреляции между связями. Подробные сведения об обработке см. в разделе Алгоритмы.
Для фильтрации входного сигнала через канал многолучевого замирания MIMO:
Создать comm.MIMOChannel и задайте его свойства.
Вызовите объект с аргументами, как если бы это была функция.
Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.
создает частотно-селективный канал с множеством входов и множеством выходов (MIMO) или частотно-плоский канал замирания System object™. Этот объект фильтрует реальный или комплексный входной сигнал через многолучевой канал MIMO для получения сигнала с нарушением канала.mimochan = comm.MIMOChannel
задает свойства, используя одну или несколько пар имя-значение. Заключите каждое имя свойства в отдельные кавычки.mimochan = comm.MIMOChannel(Name,Value)
comm.MIMOChannel('SampleRate',2)Если не указано иное, свойства не настраиваются, что означает невозможность изменения их значений после вызова объекта. Объекты блокируются при их вызове, и release функция разблокирует их.
Если свойство настраивается, его значение можно изменить в любое время.
Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.
SampleRate - Частота дискретизации входного сигнала1 (по умолчанию) | положительный скалярЧастота дискретизации входного сигнала в герцах, заданная как положительный скаляр.
Типы данных: double
PathDelays - Задержка дискретного тракта0 (по умолчанию) | скаляр | вектор строкиДискретная задержка пути в секундах, заданная как скалярный вектор или вектор строки.
При установке PathDelays для скаляра канал MIMO является плоским по частоте.
При установке PathDelays для вектора канал MIMO является частотно избирательным.
Типы данных: double
AveragePathGains - Среднее усиление тракта (дБ)0 (по умолчанию) | скаляр | вектор строкиСреднее усиление пути в децибелах, указанное как скалярный вектор или вектор строки. AveragePathGains должен иметь тот же размер, что и StartDelays.
Типы данных: double
NormalizePathGains - Нормализация усиления трактаtrue (по умолчанию) | falseНормализовать усиление тракта, указанное как true или false.
При установке для этого свойства значения trueпроцессы замирания нормализуются таким образом, что общая мощность усиления тракта, усредненная во времени, равна 0 дБ.
При установке для этого свойства значения false, отсутствует нормализация усиления тракта.
Средние значения степеней усиления пути определяются свойством AvereyStartGains.
Типы данных: logical
FadingDistribution - Распределение замирания'Rayleigh' (по умолчанию) | 'Rician'Распределение замирания для использования в канале, указанное как 'Rayleigh' или 'Rician'.
Типы данных: char
KFactor - K-коэффициент канала замирания Rician3 (по умолчанию) | положительный скаляр | вектор строки K-фактор канала замирания Rician, определяемый как положительный скаляр или 1-by-NP вектор положительных элементов. NP равняется числу задержек пути, указанному свойством StartDelays.
Если установить KFactor до скаляра, первый дискретный путь является процессом замирания Rician с коэффициентом K Rician, равным KFactor. Все остальные дискретные пути являются независимыми процессами релеевского замирания.
Если установить KFactor к вектору строки, дискретный путь, соответствующий положительному элементу KFactor вектор представляет собой процесс замирания Rician с коэффициентом K Rician, заданным этим элементом. Дискретный путь, соответствующий нулевому элементу KFactor вектор - процесс рэлеевского замирания.
Это свойство применяется, когда FadingDistribution имеет значение Rician.
Типы данных: double
DirectPathDopplerShift - доплеровские сдвиги для компонентов линии визирования (Гц)0 (по умолчанию) | скаляр | вектор строкиДоплеровские сдвиги для составляющих линии визирования канала замирания Rician в герцах, задаваемые как скалярный вектор или вектор строки. Это свойство должно иметь тот же размер, что и KFactor.
Если установить DirectPathDopplerShift на скаляр, он представляет доплеровский сдвиг компонента линии визирования первого дискретного пути, который является процессом замирания по Рисику.
Если установить DirectPathDopplerShift к вектору строки дискретный путь, который является процессом замирания по Рисику, имеет свою составляющую доплеровского сдвига линии визирования, заданную элементами DirectPathDopplerShift которые соответствуют положительным элементам в векторе KFactor.
Это свойство применяется, когда FadingDistribution имеет значение Rician.
Типы данных: double
DirectPathInitialPhase - Начальные фазы для компонентов линии визирования (радианы)0 (по умолчанию) | скаляр | вектор строкиНачальные фазы для компонентов линии визирования канала замирания Rician в радианах, задаваемые как скалярный вектор или вектор строки. Это свойство должно иметь тот же размер, что и KFactor.
Если установить DirectPathInitialPhase на скаляр, он представляет начальную фазу компонента линии визирования первого дискретного пути, который является процессом замирания Rician.
Если установить DirectPathInitialPhase к вектору строки дискретный путь, который является процессом замирания Rician, имеет начальную фазу компонента линии визирования, заданную элементами DirectPathInitialPhase которые соответствуют положительным элементам в векторе KFactor.
Это свойство применяется, когда FadingDistribution имеет значение Rician.
Типы данных: double
MaximumDopplerShift - Максимальный доплеровский сдвиг для всех трактов канала (Гц)0.001 (по умолчанию) | неотрицательный скалярМаксимальный доплеровский сдвиг для всех трактов канала в герцах, заданный как неотрицательный скаляр.
Доплеровский сдвиг применяется ко всем канальным трактам. При установке для этого свойства значения 0канал остается статическим для всего входного сигнала. Вы можете использовать reset функция объекта для формирования новой реализации канала.
MaximumDopplerShift должно быть меньше (SampleRate/10 )/fc для каждого тракта, где fc представляет коэффициент частоты отсечки тракта. Дополнительные сведения о частоте отсечения см. в разделе Коэффициент частоты отсечения.
Типы данных: double
DopplerSpectrum - Форма доплеровского спектра для всех трактов каналаdoppler('Jakes') (по умолчанию) | doppler('Flat') | doppler('Rounded', ...) | doppler('Bell', ...) | doppler('Asymmetric Jakes', ...) | doppler('Restricted Jakes', ...) | doppler('Gaussian', ...) | doppler('BiGaussian', ...)Форма доплеровского спектра для всех трактов канала, заданная как единая структура доплеровского спектра, возвращаемая из doppler функция или 1-by-NP клеточный массив таких структур. Значением по умолчанию этого свойства является спектр Джейкса Доплера (doppler('Jakes')).
При назначении одиночного вызова dopplerвсе пути имеют одинаковый заданный доплеровский спектр.
При назначении массива 1-by-NP ячеек вызовов doppler используя любой из заданных синтаксисов, каждый тракт имеет доплеровский спектр, заданный соответствующей структурой доплеровского спектра в массиве. В этом случае NP равно значению свойства StartDelays.
Максимальное значение доплеровского сдвига, необходимое для задания доплеровского спектра/спектров, задается свойством MaximumDopplerShift.
Это свойство применяется, когда значение MaximumDopplerShift больше нуля.
При назначении свойства FadingTechnique 'Sum of sinusoids', необходимо установить DopplerSpectrum кому doppler('Jakes').
SpatialCorrelationSpecification - Спецификация пространственной корреляции'Separate Tx Rx' (по умолчанию) | 'None' | 'Combined'Спецификация пространственной корреляции, указанная как 'Separate Tx Rx', 'None', или 'Combined'.
Выбирать 'Spatial Tx Rx' для раздельного задания матриц пространственной корреляции передачи и приема, из которых получают число передающих антенн (NT) и количество приемных антенн (NR).
Выбирать 'None' для указания количества передающих и приемных антенн.
Выбирать 'Combined' задать единую корреляционную матрицу для всего канала, из которой получают произведение NT и NR.
Типы данных: char
NumTransmitAntennas - Количество передающих антенн2 (по умолчанию) | положительное целое числоЧисло передающих антенн, указанное как положительное целое число.
Это свойство применяется в том случае, если свойство RealedCorrelationSpecification имеет значение 'None' или 'Combined'.
Типы данных: double
NumReceiveAntennas - количество приемных антенн;2 (по умолчанию) | положительное целое числоКоличество приемных антенн, указанное как положительное целое число.
Это свойство применяется в том случае, если свойство RealedCorrelationSpecification имеет значение 'None' или 'Combined'.
Типы данных: double
TransmitCorrelationMatrix - Пространственная корреляция передатчика[1 0; 0 1] (по умолчанию) | матрица | массив 3-DУкажите пространственную корреляцию передатчика в виде матрицы 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
Поддержка комплексного номера: Да
ReceiveCorrelationMatrix - Пространственная корреляция приемника[1 0; 0 1] (по умолчанию) | матрица | массив 3-DЗадайте пространственную корреляцию приемника в виде матрицы NR-за-NR или матрицы NR-за-NR-за-NP. NR - это количество приемных антенн, и NP равно значению свойства
Если EventDelays является скаляром, канал является плоским по частоте, и ReceiveCorrelationMatrix является NR-по-NR эрмитовой матрицей. Величина любого внедиагонального элемента не должна превышать среднее геометрическое двух соответствующих диагональных элементов.
Если Path Delays является вектором, канал является частотно-избирательным и можно указать ReceiveCorrelationMatrix в виде матрицы. Каждый тракт имеет одинаковую матрицу пространственной корреляции приема.
Кроме того, можно указать ReceiveCorrelationMatrix как массив NR-на-NR-на-NP, где каждый тракт может иметь собственную различную матрицу пространственной корреляции приема.
Эта собственность применяется, когда Вы устанавливаете собственность SpatialCorrelationSpecification в 'Separate Tx Rx'.
Типы данных: double
Поддержка комплексного номера: Да
SpatialCorrelationMatrix - Комбинированная матрица пространственной корреляции[1 0 0 0; 0 1 0 0; 0 0 1 0; 0 0 0 1] (по умолчанию) | матрица | массив 3-DКомбинированная матрица пространственной корреляции, заданная как матрица 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
Поддержка комплексного номера: Да
AntennaSelection - Схема выбора антенны'Off' (по умолчанию) | 'Tx' | 'Rx' | 'Tx and Rx'Схема выбора антенны, указанная как 'Off', 'Tx', 'Rx', или 'Tx and Rx'.
Tx представляет передающие антенны и Rx представляет приемные антенны. При настройке любого выбора антенны, отличного от настройки по умолчанию, объекту требуется один или несколько входов, чтобы указать, какие антенны выбраны для передачи сигнала. Дополнительные сведения см. в разделе Выбор антенны.
Типы данных: char
NormalizeChannelOutputs - Нормализовать выходы каналовtrue (по умолчанию) | falseНормализовать выходы каналов, указанные как true или false.
При установке для этого свойства значения trueвыходные сигналы канала нормализуются по количеству приемных антенн.
При установке для этого свойства значения false, выходы канала не нормируются.
Типы данных: logical
FadingTechnique - Метод замирания модели канала'Filtered Gaussian noise' (по умолчанию) | 'Sum of sinusoids'Метод замирания модели канала, указанный как 'Filtered Gaussian noise' или 'Sum of sinusoids'.
Типы данных: char
NumSinusoids - Количество использованных синусоид48 (по умолчанию) | положительное целое числоЧисло синусоид, используемых для моделирования процесса замирания, указанное как положительное целое число.
Это свойство применяется, когда FadingTechnique имеет значение 'Sum of sinusoids'.
Типы данных: double
InitialTimeSource - Источник для управления временем начала процесса замирания'Property' (по умолчанию) | 'Input port'Источник для управления временем начала процесса замирания, указанный как 'Property' или 'Input port'.
'Property' -- Используйте свойство InitityTime для установки начального временного смещения.
'Input port' - Укажите время начала процесса замирания с помощью initialtime ввод в объект. Входное значение может изменяться при последовательных вызовах объекта.
Это свойство применяется, когда FadingTechnique имеет значение 'Sum of sinusoids'.
InitialTime - Начальный сдвиг по времени0 (по умолчанию) | неотрицательный скалярНачальное смещение по времени для модели замирания в секундах, указанное как неотрицательный скаляр.
Когда InitialTime не кратно 1/SampleRate, округляется до ближайшего положения образца.
Это свойство применяется, если для свойства FadingTechnique установлено значение 'Sum of sinusoids' и свойство InitityTimeSource имеет значение 'Property'.
Типы данных: double
RandomStream - Источник потока случайных чисел'Global stream' (по умолчанию) | 'mt19937ar with seed'Источник потока случайных чисел, указанный как 'Global stream' или 'mt19937ar with seed'.
'Global stream' - Текущий глобальный поток случайных чисел используется для создания обычно распределенных случайных чисел. В этом случае reset объектная функция сбрасывает только фильтры.
'mt19937ar with seed' - Алгоритм mt19937ar используется для создания нормально распределенных случайных чисел. В этом случае reset объектная функция сбрасывает фильтры, а также повторно инициализирует поток случайных чисел до значения свойства Seed.
Типы данных: char
Seed - Начальное начальное число потока случайных чисел mt19937ar73 (по умолчанию) | неотрицательное целое числоНачальное начальное число потока случайных чисел mt19937ar, указанное как неотрицательное целое число. Когда reset вызывается функция объекта, поток случайных чисел mt19937ar повторно инициализируется в Seed значение.
Это свойство применяется при установке для свойства RandomStream значения 'mt19937ar with seed'.
Типы данных: double
PathGainsOutputPort - Возможность вывода коэффициентов усиления трактаfalse (по умолчанию) | trueПараметр для вывода коэффициентов усиления тракта, указанный как false или true. Установить для этого свойства значение true для вывода коэффициентов усиления тракта канала основного процесса замирания.
Типы данных: logical
Visualization - Визуализация каналов'Off' (по умолчанию) | 'Impulse response' | 'Frequency response' | 'Impulse and frequency responses' | 'Doppler spectrum'Настройка визуализации канала, указанная как 'Off', 'Impulse response', 'Frequency response', 'Impulse and frequency responses', или 'Doppler spectrum'. Когда визуализация включена, выбранные характеристики канала, такие как импульсная характеристика или доплеровский спектр, отображаются в отдельном окне. Дополнительные сведения см. в разделе Визуализация каналов.
Визуализация применяется только в том случае, если для свойства FadingTechnique установлено значение 'Filtered Gaussian noise'.
AntennaPairsToDisplay - Пара передающая-принимающая антенна для отображения[1 1] (по умолчанию) | вектор строкиПара передающая-принимающая антенна для отображения, заданная как вектор 1 на 2, где первый элемент соответствует требуемой передающей антенне, а второй элемент соответствует требуемой приемной антенне. В это время может отображаться только одна пара.
Это свойство применяется, когда визуализация не Off.
PathsForDopplerDisplay - Путь, для которого отображается доплеровский спектр1 (по умолчанию) | положительное целое числоПуть, для которого отображается доплеровский спектр, определяемый как положительное целое число от 1 до NP, где NP равно значению свойства, представляющего собой ΔDelays.
Это свойство применяется, если для параметра «Визуализация» задано значение 'Doppler spectrum'.
SamplesToDisplay - Процент отображаемых образцов25% (по умолчанию) | 10% | 50% | 100%Процент отображаемых образцов, указанный как 10%, 25%, 50%, или 100%. Увеличение процента повышает точность отображения за счет скорости моделирования.
Это свойство применяется, когда визуализация 'Impulse response', 'Frequency response', или 'Impulse and frequency responses'.
включает передающие антенны, выбранные 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'. Синтаксис поддерживает параметры ввода из предыдущих синтаксисов.
insignal - Входной сигналВходной сигнал, заданный как скаляр, вектор столбца элемента NS, матрица NS-by-NT или матрица NS-by-NST.
NS - количество выборок.
NT - количество передающих антенн. NT определяется значениями свойств объекта TransmissoredMatrix или NumTransmissAntennas.
NST - количество выбранных передающих антенн, определяемое количеством элементов, установленных на 1 в векторе, предоставленном входу seltx.
Количество передающих антенн определяется значениями свойств объекта TransmissCorrelationMatrix или NumTransmissAntennas.
Типы данных: double | single
Поддержка комплексного номера: Да
seltx - Выбор активных передающих антеннВыберите активные передающие антенны, указанные как 1-by-NT двоичный вектор. NT представляет количество передающих антенн. Для элементов установлено значение 1 идентифицировать выбранные антенные индексы и 0 идентифицируют невыбранные антенные индексы.
Типы данных: double
selrx - Выбор активных приемных антеннВыберите активные приемные антенны, указанные как 1-by-NR двоичный вектор. NR представляет количество приемных антенн. Для элементов установлено значение 1 идентифицировать выбранные антенные индексы и 0 идентифицируют невыбранные антенные индексы.
Типы данных: double
initialtime - Начальный сдвиг по времени0 (по умолчанию) | неотрицательный скалярНачальное смещение по времени для модели замирания в секундах, указанное как неотрицательный скаляр.
Начальное смещение по времени должно быть больше времени окончания последнего кадра. Когда initialtime не кратно 1/SampleRate, округляется до ближайшего положения образца.
Типы данных: double
outsignal - Выходной сигналВыходной сигнал данных, возвращаемый в виде матрицы NS-by-NR или NS-by-NSR.
NS - количество выборок.
NR - количество приемных антенн. NR определяется значениями свойства объекта ReceiveCorrelationMatrix или NumReceiveAntennas.
NSR - количество выбранных приемных антенн, определяемое количеством элементов, установленных на 1 в векторе, предоставленном входу selrx.
pathgains - Коэффициенты усиления выходного трактаКоэффициенты усиления выходного тракта, возвращаемые в виде массива NS-by-NP-by-NT-by-NR с NaN значения для невыбранных пар передающая-приемная антенна.
NS - количество выборок.
Значение NP равно значению свойства StartDelays.
NT - количество передающих антенн.
NR - количество приемных антенн.
Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:
release(obj)
info | Характеристическая информация об объекте канала замирания |
Примечание
Если установить 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)')

Без указания выбора антенны фильтруйте 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')

Продемонстрируйте преимущество использования метода суммирования синусоид с замиранием при моделировании канала с пакетными данными.
Установите параметры моделирования таким образом, чтобы частота дискретизации составляла 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. Каждый канал содержит все многолучевые каналы для этого канала.
Модель Кронекера предполагает, что пространственные корреляции на передающей и приемной сторонах являются разделяемыми. Эквивалентно, предполагается, что направление отправления (DoD) и направления прибытия (DoA) спектры являются разделяемыми. Полная корреляционная матрица:
Символ ⊗ представляет продукт Кронекера.
Rt представляет корреляционную матрицу на стороне передачи: HHH] размера NT-by-NT.
Rr представляет корреляционную матрицу на стороне приема: HHH] размера NR-by-NR.
Реализовать матрицу канала MIMO можно следующим образом:
Rr12ARt12
A - матрица NR-by-NT независимых идентично распределенных комплексных гауссовых переменных с нулевым средним и единичной дисперсией.
Для различных типов доплеровского спектра определяют коэффициент частоты отсечки fc.
Для любого типа доплеровского спектра, отличного от гауссова и бигауссова, fc равно 1.
Для doppler('Gaussian') тип спектра, fc равно NormalizedStandardDeviation2log2.
Для doppler('BiGaussian') тип спектра:
Если PowerGains(1) и NormalizedCenterFrequencies(2) значения полей оба 0, то fc равно NormalizedStandardDeviation(1)2log2.
Если PowerGains(2) и NormalizedCenterFrequencies(1) значения полей оба 0, то fc равно NormalizedStandardDeviation(2)2log2.
Если NormalizedCenterFrequencies значение поля - [0,0] и NormalizedStandardDeviation поле имеет два одинаковых элемента, затем fc равно NormalizedStandardDeviation(1)2log2.
Во всех остальных случаях fc равно 1.
Когда объект находится в режиме выбора антенны, он использует следующие алгоритмы для обработки входного сигнала:
Все случайные усиления тракта всегда генерируются и продолжают развиваться для каждой линии связи, независимо от того, выбрана ли данная линия связи или нет. Значения усиления тракта, выводимые для невыбранных линий связи, заполняются NaN.
Пространственная корреляция применяется только к выбранным передающим и/или приемным антеннам, и коэффициенты корреляции являются соответствующими элементами в матрицах корреляции передачи, приема или комбинированной корреляции. Другими словами, матрица пространственной корреляции для выбранных передающих или приемных антенн является подматрицей значения свойства матрицы пространственной корреляции передачи, приема или комбинированной.
Для трактов сигналов, связанных с неактивными антеннами, сигнал с нулевой мощностью передается в канальный фильтр.
Нормализация выходного сигнала канала происходит по количеству выбранных приемных антенн.
[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.
Примечания и ограничения по использованию:
См. Системные объекты в создании кода MATLAB (кодер MATLAB).
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.