comm.MIMOChannel

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

Описание

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

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

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

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

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

Создание

Описание

mimochannel = comm.MIMOChannel создает MIMO выборочный частотой или плоский частотой исчезающий Системный объект канала.

пример

mimochannel = comm.MIMOChannel(Name,Value) свойства наборов с помощью одних или нескольких аргументов name-value. Например, 'SampleRate',2 устанавливает частоту дискретизации входного сигнала на 2.

Свойства

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

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

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

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

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

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

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

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

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

PathDelays и AveragePathGains свойства должны быть той же длиной.

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

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

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

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

  • 1 TRUE) — Процессы исчезновения нормированы так, чтобы общая степень усилений пути, усредняемых в зависимости от времени, составила 0 дБ.

  • 0 ложь) — Общая степень усилений пути не нормирована.

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

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

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

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

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

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

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

Зависимости

Чтобы включить это свойство, установите FadingDistribution свойство к 'Rician'.

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

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

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

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

Зависимости

Чтобы включить это свойство, установите FadingDistribution свойство к 'Rician'.

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

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

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

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

Зависимости

Чтобы включить это свойство, установите FadingDistribution свойство к 'Rician'.

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

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

Максимальный предел эффекта Доплера применяется к каждому пути к каналу. Когда вы устанавливаете это свойство на 0, канал остается статическим для целого входа. Можно использовать reset возразите функции, чтобы сгенерировать новую реализацию канала. MaximumDopplerShift значение свойства должно быть меньшим, чем SampleRate/10/fc для каждого пути, где f c является фактором частоты среза пути. Для большинства Доплеровских типов спектра значение f c равняется 1. Для Гауссовых и bi-Gaussian Доплеровских типов спектра f c зависит от Доплеровских полей структуры спектра. Для получения дополнительной информации о том, как f c задан, смотрите раздел Cutoff Frequency Factor.

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

Доплеровский спектр формирует для всех путей к каналу в виде Доплеровской структуры спектра или 1 NP массивом ячеек Доплеровских структур спектра. Этими Доплеровскими структурами спектра должны быть выходные параметры формы, возвращенной из doppler функция. N P является количеством дискретных задержек пути, заданных PathDelays свойство. MaximumDopplerShift свойство задает максимальное значение эффекта Доплера что DopplerSpectrum свойство разрешает, когда вы задаете Доплеровский спектр.

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

  • Когда вы устанавливаете DopplerSpectrum к массиву ячеек Доплеровских структур спектра каждому пути задала Доплеровский спектр соответствующая структура в массиве ячеек.

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

Зависимости

Чтобы включить это свойство, установите MaximumDopplerShift свойство к положительной скалярной величине.

Типы данных: struct | cell

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

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

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

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

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

Количество передающих антенн в виде положительного целого числа.

Зависимости

Чтобы включить это свойство, установите SpatialCorrelationSpecification свойство к 'None' или 'Combined'.

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

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

Зависимости

Чтобы включить это свойство, установите SpatialCorrelationSpecification свойство к 'None' или 'Combined'.

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

Пространственная корреляция передатчика в виде матрицы T-by-NT N или N T NT NP массивом. N T является количеством передающих антенн. N P является количеством дискретных задержек пути, заданных PathDelays свойство.

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

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

    • Матрица T-by-NT N. В этом случае каждый путь имеет ту же передачу пространственная корреляционная матрица.

    • N T NT NP массивом. В этом случае каждый путь имеет свою собственную заданную передачу пространственная корреляционная матрица.

Зависимости

Чтобы включить это свойство, установите SpatialCorrelationSpecification свойство к 'Separate Tx Rx'.

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

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

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

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

    • Матрица R-by-NR N. В этом случае каждый путь имеет то же самое, получают пространственную корреляционную матрицу.

    • N R NR NP массивом. В этом случае каждый путь имеет свое заданное собственное, получают пространственную корреляционную матрицу.

Зависимости

Чтобы включить это свойство, установите SpatialCorrelationSpecification свойство к 'Separate Tx Rx'.

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

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

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

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

    • Матрица TR-by-NTR N. В этом случае каждый путь имеет ту же объединенную пространственную корреляционную матрицу.

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

Зависимости

Чтобы включить это свойство, установите SpatialCorrelationSpecification свойство к 'Combined'.

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

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

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

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

Нормируйте канал выходные параметры в виде одного из этих логических значений:

  • 1 TRUE) — Канал выходные параметры нормированы на количество, получают антенны.

  • 0 ложь) — Канал выходные параметры не нормированы.

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

Фильтрация канала в виде одного из этих логических значений:

  • 1 TRUE) — Канал принимает входной сигнал и производит отфильтрованный выходной сигнал.

  • 0 ложь) — Объект не принимает входной сигнал, не производит отфильтрованного выходного сигнала, и выходные параметры только образовывают канал усиления пути. Необходимо задать длительность процесса исчезновения при помощи NumSamples свойство.

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

Выведите усиления пути к каналу в виде логического 0 ложь) или 1 TRUE). Установите это свойство на true выводить усиления пути к каналу базового процесса исчезновения.

Зависимости

Чтобы включить это свойство, установите ChannelFiltering свойство к true.

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

Количество отсчетов используется для длительности процесса исчезновения в виде неотрицательного целого числа.

Настраиваемый: да

Зависимости

Чтобы включить это свойство, установите ChannelFiltering свойство к false.

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

Выходные данные усиления пути вводят в виде 'double' или 'single'.

Зависимости

Чтобы включить это свойство, установите ChannelFiltering свойство к false.

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

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

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

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

Зависимости

Чтобы включить это свойство, установите FadingTechnique свойство к 'Sum of sinusoids'.

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

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

  • Когда вы устанавливаете InitialTimeSource к 'Property', установите начальное смещение времени при помощи InitialTime свойство.

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

Зависимости

Чтобы включить это свойство, установите FadingTechnique свойство к 'Sum of sinusoids'.

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

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

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

Зависимости

Чтобы включить это свойство, установите FadingTechnique свойство к 'Sum of sinusoids' и InitialTimeSource свойство к 'Property'.

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

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

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

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

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

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

Зависимости

Чтобы включить это свойство, установите RandomStream свойство к 'mt19937ar with seed'.

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

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

Зависимости

Чтобы включить это свойство, установите FadingTechnique свойство к 'Filtered Gaussian noise'.

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

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

Зависимости

Чтобы включить это свойство, установите Visualization свойство к 'Impulse response', 'Frequency response', 'Doppler spectrum', или 'Impulse and frequency responses'.

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

Путь, для которого Доплеровский спектр отображен в виде целого числа в области значений [1, N P]. N P является количеством дискретных задержек пути, заданных PathDelays свойство. Используйте это свойство выбрать дискретный путь, используемый в построении Доплеровского графика спектра.

Зависимости

Чтобы включить это свойство, установите Visualization свойство к 'Doppler spectrum'.

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

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

Зависимости

Чтобы включить это свойство, установите Visualization свойство к 'Impulse response', 'Frequency response', или 'Impulse and frequency responses'.

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

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

Описание

пример

y = mimochannel(x) фильтрует входной сигнал x через MIMO, исчезающий канал и, возвращает результат в y.

Чтобы включить этот синтаксис, установите ChannelFiltering свойство к true.

y = mimochannel(x,seltx) пропускает входной сигнал через MIMO, исчезающий канал при помощи передающих антенн, заданных seltx.

Чтобы включить этот синтаксис устанавливает AntennaSelection свойство к 'Tx'.

Например, этот код показывает, как выбрать первый и третий индекс передающей антенны как активный.

mimochannel = comm.MIMOChannel('AntennaSelection','Tx');
seltx = [1 0 1];
...
y = mimochannel(x,seltx);

y = mimochannel(x,selrx) пропускает входной сигнал через MIMO, исчезающий канал при помощи получить антенн, выбранных selrx.

Чтобы включить этот синтаксис устанавливает AntennaSelection свойство к 'Rx'.

Например, этот код показывает, как выбрать второе, получают индекс антенны как активный.

mimochannel = comm.MIMOChannel('AntennaSelection','Rx');
selrx = [0 1];
...
y = mimochannel(x,selrx);

пример

y = mimochannel(x,seltx,selrx) пропускает входной сигнал через MIMO, исчезающий канал при помощи передающих и приемных антенн, выбранных seltx и selrx.

Чтобы включить этот синтаксис устанавливает AntennaSelection свойство к 'Tx and Rx'.

Например, этот код показывает, как выбрать первую и вторую передающую антенну, и вторые получают антенну как активную.

mimochannel = comm.MIMOChannel( ...
    'AntennaSelection','Tx and Rx');
seltx = [1 1];
selrx = [0 1];
...
y = mimochannel(x,selrx);

пример

y = mimochannel(___,inittime) задает время начала для процесса исчезновения в дополнение к комбинации входных аргументов от любого из предыдущих синтаксисов.

Чтобы включить этот синтаксис, также установите FadingTechnique свойство к 'Sum of sinusoids' и InitialTimeSource свойство к 'Input port'.

пример

[y,pathgains] = mimochannel(___) также возвращает усиления пути к каналу MIMO для схем выбора антенны с помощью любой из комбинаций входных аргументов в предыдущих синтаксисах.

pathgains = mimochannel() возвращает усиления пути к каналу базового процесса исчезновения. В этом случае канал не требует никакого входного сигнала и действует как источник усилений пути.

Чтобы включить этот синтаксис, установите ChannelFiltering свойство к false.

pathgains = mimochannel(seltx) возвращает усиления пути к каналу базового процесса исчезновения при помощи передающих антенн, заданных seltx.

Чтобы включить этот синтаксис устанавливает ChannelFiltering свойство к false и AntennaSelection свойство к 'Tx'.

pathgains = mimochannel(selrx) возвращает усиления пути к каналу базового процесса исчезновения при помощи передающих антенн, заданных selrx.

Чтобы включить этот синтаксис устанавливает ChannelFiltering свойство к false и AntennaSelection свойство к 'Rx'.

pathgains = mimochannel(seltx,selrx) возвращает усиления пути к каналу базового процесса исчезновения при помощи передающих и приемных антенн, выбранных seltx и selrx.

Чтобы включить этот синтаксис устанавливает ChannelFiltering свойство к false и AntennaSelection свойство к 'Tx and Rx'.

пример

pathgains = mimochannel(___,inittime) задает время начала для процесса исчезновения в дополнение к комбинации входных аргументов от любого из предыдущих синтаксисов.

Чтобы включить этот синтаксис, также установите FadingTechnique свойство к 'Sum of sinusoids' и InitialTimeSource свойство к 'Input port'.

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

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

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

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

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

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

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

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

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

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

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

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

Когда mod(inittime/SampleRate, начальное смещение времени окружено к самой близкой демонстрационной позиции.

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

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

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

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

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

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

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

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

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

  • N P является количеством дискретных задержек пути, заданных PathDelays свойство.

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

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

Когда вы устанавливаете ChannelFiltering свойство к false, тип данных этого выхода имеет ту же точность как входной сигнал x. Когда вы устанавливаете ChannelFiltering свойство к true, тип данных этого выхода задан OutputDataType свойство.

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

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

release(obj)

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

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

Примечание

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

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

Примеры

свернуть все

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

Сгенерируйте модулируемые QPSK данные.

data = randi([0 3],1000,1);
modData = pskmod(data,4,pi/4);

Создайте ортогональный пространственно-временной Системный объект блочного энкодера, чтобы закодировать модулируемые данные в четыре пространственно разделенных потока. Затем закодируйте данные.

ostbc = comm.OSTBCEncoder( ...
    'NumTransmitAntennas',4, ...
    'SymbolRate',1/2);
txSig = ostbc(modData);

Создайте Системный объект канала MIMO, с помощью пар "имя-значение", чтобы установить свойства. Канал состоит из двух путей, каждого эффекта Доплера имеющего 5 Гц. Установите SpatialCorrelationSpecification свойство к 'None', который требует, чтобы вы задали количество передающих и приемных антенн. Укажите, что четыре передающих антенны и два получают антенны.

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)
title('Channel Response Power (dBW)')
xlabel('Time (s)')
ylabel('Power (dBW)')

Figure contains an axes object. The axes object with title Channel Response Power (dBW) contains an object of type line.

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

Создайте Системный объект канала 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, ...
    'ChannelFiltering',false);

Сгенерируйте усиления пути к ответу канала с помощью объекта канала MIMO.

pathGains = mimoChan();

Передача пространственная корреляция для первого дискретного пути в первом получает антенну, задана как единичная матрица в TransmitCorrelationMatrix свойство. Подтвердите что канал выход pathGains показывает те же статистические характеристики при помощи corrcoef функционируйте, чтобы отобразить передачу, пространственная корреляция для первого дискретного пути и первого получает антенну.

corrcoef(squeeze(pathGains(:,1,:,1)))
ans = 2×2 complex

   1.0000 + 0.0000i  -0.3391 + 0.4285i
  -0.3391 - 0.4285i   1.0000 + 0.0000i

Передача пространственная корреляция для второго дискретного пути во втором получает антенну, задана как [1 0.1;0.1 1] в TransmitCorrelationMatrix свойство. Подтвердите что канал выход pathGains показывает те же статистические характеристики при помощи corrcoef функционируйте, чтобы отобразить передачу, пространственная корреляция для второго дискретного пути и второго получает антенну.

corrcoef(squeeze(pathGains(:,2,:,2)))
ans = 2×2 complex

   1.0000 + 0.0000i  -0.8989 - 0.2663i
  -0.8989 + 0.2663i   1.0000 + 0.0000i

Получение пространственной корреляции для первого дискретного пути во второй передающей антенне задано как [1 0.2;0.2 1] в ReceiveCorrelationMatrix свойство. Подтвердите что канал выход pathGains показывает те же статистические характеристики при помощи corrcoef функционируйте, чтобы отобразить получение пространственной корреляции для первого дискретного пути и второй передающей антенны.

corrcoef(squeeze(pathGains(:,1,2,:)))
ans = 2×2 complex

   1.0000 + 0.0000i   0.9170 + 0.3141i
   0.9170 - 0.3141i   1.0000 + 0.0000i

Получение пространственной корреляции для второго дискретного пути в первой передающей антенне задано как единичная матрица в ReceiveCorrelationMatrix свойство. Подтвердите что канал выход pathGains показывает те же статистические характеристики при помощи corrcoef функционируйте, чтобы отобразить получение пространственной корреляции для второго дискретного пути и первой передающей антенны.

corrcoef(squeeze(pathGains(:,2,1,:)))
ans = 2×2 complex

   1.0000 + 0.0000i   0.9227 - 0.3435i
   0.9227 + 0.3435i   1.0000 + 0.0000i

Создайте выборочный частотой канал MIMO, и затем отобразите его импульсные и частотные характеристики.

Установите частоту дискретизации на 10 МГц. Задайте задержки пути и усиления с помощью параметров канала расширенного автомобильного A (EVA). Установите максимальный эффект Доплера на 70 Гц.

fs = 10e6;                                                % Hz
pathDelays = [0 30 150 310 370 710 1090 1730 2510]*1e-9;  % Seconds
avgPathGains = [0 -1.5 -1.4 -3.6 -0.6 -9.1 -7 -12 -16.9]; % dB
fD = 70;                                                  % Hz

Создайте Системный объект канала MIMO 2 на 2, задав ранее заданные параметры и установив визуализацию канала построить импульсные и частотные характеристики. По умолчанию график отображает соответствие пары антенны первым передающим и приемным антеннам.

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

Figure Frequency Response contains an axes object and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes object contains 2 objects of type text, line. This object represents Channel 1.

Figure Impulse Response contains an axes object and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes object contains 3 objects of type stem, text. These objects represent Path Gain, Channel Filter Coefficient.

Чтобы просмотреть соответствие пары антенны второй передаче и сначала получить антенны, выпустите Системный объект канала MIMO, и затем установите его AntennaPairsToDisplay свойство к [2 1]. Поскольку AntennaPairsToDisplay свойство является ненастраиваемым, чтобы изменить его значение, необходимо выпустить Системный объект.

release(mimoChan)
mimoChan.AntennaPairsToDisplay = [2 1];
y = mimoChan(x);

Figure Impulse Response contains an axes object and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes object contains 3 objects of type text, stem. These objects represent Path Gain, Channel Filter Coefficient.

Figure Frequency Response contains an axes object and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes object contains 2 objects of type text, line. This object represents Channel 1.

Создайте и визуализируйте Доплеровские спектры канала MIMO, который имеет два пути.

Создайте массив ячеек Доплеровских структур, которые будут использоваться в создании канала. Установите Доплеровский спектр первого пути быть сформированным звонком и второй путь, чтобы быть плоским.

dp{1} = doppler('Bell');
dp{2} = doppler('Flat');

Создайте Системный объект канала MIMO 2 на 2, задав два пути и максимальный эффект Доплера 100 Гц, отключив фильтрацию канала и включение визуализации Доплеровского спектра для первого Доплеровского пути.

mimoChan = comm.MIMOChannel('SampleRate',1000, ...
    'PathDelays',[0 0.002], ...
    'AveragePathGains',[0 -3], ...
    'MaximumDopplerShift',100, ...
    'DopplerSpectrum',dp, ...
    'ChannelFiltering',false, ...
    'NumSamples',10000, ...
    'Visualization','Doppler spectrum', ...
    'PathsForDopplerDisplay',1);

Используйте канал MIMO, чтобы сгенерировать Доплеровский спектр первого пути. Поскольку Доплеровский график спектра не обновляется, пока его буфер не заполнен, вызовите объект канала MIMO многократно, чтобы помочь улучшить точность оценки. Заметьте, что спектр имеет форму звонка и что ее минимальные и максимальные частоты находятся в пределах пределов, установленных MaximumDopplerShift свойство.

for k = 1:25
    mimoChan();
end

Figure Doppler Spectrum contains an axes object and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes object contains 3 objects of type line, text. These objects represent Theoretical, Empirical.

Выпустите объект канала MIMO и установите его PathsForDopplerDisplay свойство отобразить второй путь. Поскольку PathsForDopplerDisplay свойство является ненастраиваемым, чтобы изменить его значение, необходимо выпустить Системный объект. Вызовите объект многократно, чтобы отобразить Доплеровский спектр второго пути. Результаты показывают, что спектр является плоским.

release(mimoChan)
mimoChan.PathsForDopplerDisplay = 2;
for k = 1:25
    y = mimoChan();
end

Figure Doppler Spectrum contains an axes object and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes object contains 3 objects of type text, line. These objects represent Theoretical, Empirical.

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

Установите свойства канала.

fs = 1000;               % Sample rate (Hz)
pathDelays = [0 2.5e-3]; % Path delays (s)
pathPower = [0 -6];      % Path power (dB)
fD = 5;                  % Maximum Doppler shift (Hz)
ns = 1000;               % Number of samples
nsdel = 100;             % Number of samples for delayed paths

Задайте непрерывный отрезок времени и три прерывистых сегмента времени, по которым можно построить и просмотреть ответ канала. Просмотрите непрерывный ответ канала с 1000 выборками, запускающийся во время 0 и три ответа канала с 100 выборками, запускающиеся время от времени 0.1, 0.4, и 0,7 секунды, соответственно.

to0 = 0.0;
to1 = 0.1;
to2 = 0.4;
to3 = 0.7;
t0 = (to0:ns-1)/fs;      % Transmission 0
t1 = to1+(0:nsdel-1)/fs; % Transmission 1
t2 = to2+(0:nsdel-1)/fs; % Transmission 2
t3 = to3+(0:nsdel-1)/fs; % Transmission 3

Создайте плоско исчезающий Системный объект канала MIMO 2 на 2, отключив фильтрацию канала и определение частоты дискретизации на 1 000 Гц, сумма синусоид, исчезающая метод и количество отсчетов, чтобы просмотреть. Задайте начальное значение так, чтобы результаты могли быть повторены. Используйте InitialTime по умолчанию установка свойства так, чтобы исчезающий канал был симулирован со времени 0.

mimoChan1 = comm.MIMOChannel('SampleRate',fs, ...
    'MaximumDopplerShift',fD, ...
    'RandomStream','mt19937ar with seed', ...
    'Seed',17, ...
    'FadingTechnique','Sum of sinusoids', ...
    'ChannelFiltering',false, ...
    'NumSamples',ns);

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

mimoChan2 = clone(mimoChan1);
mimoChan2.InitialTimeSource = 'Input port';
mimoChan2.NumSamples = nsdel;

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

pg0 = mimoChan1();
pg1 = mimoChan2(to1);
pg2 = mimoChan2(to2);
pg3 = mimoChan2(to3);

Сравните количество отсчетов, обработанное двумя каналами при помощи info метод. Результаты показывают тот mimoChan1 обработанный 1 000 выборок и тот mimoChan2 обработанный только 300 выборок.

G = info(mimoChan1);
H = info(mimoChan2);
[G.NumSamplesProcessed H.NumSamplesProcessed]
ans = 1×2

        1000         300

Преобразуйте усиления пути в децибелы для пути, соответствующего первой передаче, и сначала получите антенну.

pathGain0 = 20*log10(abs(pg0(:,1,1,1)));
pathGain1 = 20*log10(abs(pg1(:,1,1,1)));
pathGain2 = 20*log10(abs(pg2(:,1,1,1)));
pathGain3 = 20*log10(abs(pg3(:,1,1,1)));

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

plot(t0,pathGain0,'r--')
hold on
plot(t1,pathGain1,'b')
plot(t2,pathGain2,'b')
plot(t3,pathGain3,'b')
grid
title('Continuous and Discontinuous Channel Response')
xlabel('Time (sec)')
ylabel('Path Gain (dB)')
legend('Continuous','Discontinuous','location','nw')

Figure contains an axes object. The axes object with title Continuous and Discontinuous Channel Response contains 4 objects of type line. These objects represent Continuous, Discontinuous.

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

Установите параметры симуляции, таким образом, что частота дискретизации составляет 100 кГц, общее время симуляции составляет 100 секунд, и рабочий цикл для пакетных данных составляет 25%.

fs = 1e5;   % Hz
tsim = 100; % seconds
dutyCycle = 0.25; 

Создайте плоско исчезающий Системный объект канала MIMO 2 на 2, указав, что частота дискретизации и использование значения по умолчанию отфильтровали Гауссов шумовой метод.

fgn = comm.MIMOChannel('SampleRate',fs);

Создайте подобный Системный объект канала MIMO, задав ту же частоту дискретизации как предыдущий объект канала MIMO, но с помощью метода суммы синусоид. Дополнительно укажите, что 48 синусоид и для процесса исчезновения запускают времена, которые будут даны как входной параметр.

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 путем вызова его в 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.2879

Используя одну Систему канала MIMO object™ и два тождественно сконфигурированных канала фильтруют Системные объекты, переключают симуляцию уровня ссылки между 3 2 нисходящим каналом и обратной величиной 2 3 восходящие передачи сигнала.

Задайте системные параметры.

modOrder = 256;        % Modulation order
Nant1 = 3;             % Number of 'transmit' antennas
Nant2 = 2;             % Number of 'receive' antennas   
Rs = 1e6;              % Sample rate 
pd = [0 1.5 2.3]*1e-6; % Path delays
frmLen = 1e3;          % Frame length

Создайте Систему канала MIMO object™, конфигурируя его для генерации усиления пути путем отключения фильтрации канала.

chan = comm.MIMOChannel( ...
    'SampleRate',Rs, ...
    'PathDelays',pd, ...
    'AveragePathGains',[1.5 1.2 0.2], ...
    'MaximumDopplerShift',300, ...
    'SpatialCorrelationSpecification','none', ...
    'NumTransmitAntennas',Nant1, ...
    'NumReceiveAntennas',Nant2, ...
    'ChannelFiltering',false, ...
    'NumSamples',frmLen);

Создайте идентичные Системные объекты фильтра канала для обоих направлений передачи: один фильтр канала для Nant1- Nant2 передайте в нисходящем направлении канал (3 передающих антенны к 2 получают антенны), и взаимный фильтр канала для Nant2- Nant1 восходящий канал (2 передающих антенны к 3 получают антенны).

chanFiltDownlink = comm.ChannelFilter( ...
    'SampleRate',Rs, ...
    'PathDelays',pd);
chanFiltUplink = clone(chanFiltDownlink);

Нисходящая передача

Сгенерируйте случайные усиления пути для одной системы координат нисходящего канала, 3 2 образовывают канал. Передача случайным образом сгенерировала 256-QAM сигналы через 3 2 нисходящий канал.

pgDownlink = chan();
x = qammod(randi([0 modOrder-1],frmLen,Nant1),modOrder);
yDL = chanFiltDownlink(x,pgDownlink);

Восходящая передача

Переключите направление ссылки. Запустите объект канала сгенерировать другую систему координат усилений пути, переставив его 3-е (Tx), и 4-е размерности (Rx) для взаимного восходящего канала 2 3 образовывают канал. Передача случайным образом сгенерировала 256-QAM сигналы через 2 3 взаимный восходящий канал.

pgUplink = permute(chan(),[1 2 4 3]);
x = qammod(randi([0 modOrder-1],frmLen,Nant2),modOrder);
yUL = chanFiltUplink(x,pgUplink);

Нисходящие и восходящие измерения массива

Покажите размеры нисходящих и восходящих массивов усиления пути, возвращенных объектом канала MIMI как NS-NP-NT-NR массив.

  • NS количество отсчетов.

  • NP количество задержек пути.

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

  • NR количество, получают антенны. Nant2 для нисходящего канала и Nant1 для восходящего канала.

size(pgDownlink)
ans = 1×4

        1000           3           3           2

size(pgUplink)
ans = 1×4

        1000           3           2           3

Покажите размер выходных матриц канала, возвращенных объектом канала MIMI как NS-NR матрица. NS количество отсчетов. NR количество, получают антенны.

size(yDL)
ans = 1×2

        1000           2

size(yUL)
ans = 1×2

        1000           3

Алгоритмы

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

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

Ссылки

[1] Oestges, Клод и Бруно Клерккс. Радиосвязи MIMO: От Реального Распространения до Пространственно-временного Проекта Кода. 1-й редактор Бостон, MA: Elsevier, 2007.

[2] Correia, Луис М. и европейское Сотрудничество в области Научно-технического Исследования (Организация), редакторы Мобильные Широкополосные Мультимедийные Сети: Методы, Модели и Инструменты для 4G. 1-й редактор Амстердам  ; Бостон: Нажатие Elsevier/Academic, 2006.

[3] Kermoal, J.P., Л. Шумахер, К.И. Педерсен, П. Модженсен и Ф. Фредериксен. “Стохастическая Модель Канала Радио MIMO с Экспериментальной Валидацией”. Журнал IEEE на Выбранных областях в Коммуникациях 20, № 6 (август 2002): 1211–26. https://doi.org/10.1109/JSAC.2002.801223.

[4] Jeruchim, Мишель К., Филип Балабан и К. Сэм Шэнмугэн. Симуляция Систем связи. Второй выпуск. Бостон, MA: Спрингер УС, 2000.

[5] Patzold, M., Cheng-Сянцзян Ван и Б. Хогстэд. “Две Новых Суммы основанных на синусоидах Методов для Эффективной Генерации Нескольких Некоррелированых Форм волны Релеевского замирания”. Транзакции IEEE на Радиосвязях 8, № 6 (июнь 2009): 3122–31. https://doi.org/10.1109/TWC.2009.080769.

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

Представленный в R2012a
Для просмотра документации необходимо авторизоваться на сайте