comm.MIMOChannel

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

Описание

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

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

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

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

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

Создание

Описание

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

пример

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

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

Свойства

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Зависимости

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

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

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

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

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

Зависимости

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

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

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

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

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

Зависимости

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

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

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

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

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

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

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

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

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

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

Зависимости

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

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

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

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

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

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

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

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

Зависимости

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

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

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

Зависимости

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

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

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

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

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

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

Зависимости

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

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

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

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

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

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

Зависимости

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

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

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

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

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

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

Зависимости

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

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

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

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

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

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

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

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

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

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

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

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

Зависимости

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

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

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

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

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

Зависимости

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

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

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

Зависимости

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

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

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

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

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

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

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

Зависимости

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

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

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

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

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

Зависимости

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

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

Зависимости

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

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

Зависимости

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

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

Зависимости

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

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

Описание

пример

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

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

Этот синтаксис применяется, когда вы устанавливаете свойство AntennaSelection объекта к 'Tx'.

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

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

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

Этот синтаксис применяется, когда вы устанавливаете свойство AntennaSelection объекта к 'Rx'.

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

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

пример

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

Этот синтаксис применяется, когда вы устанавливаете свойство AntennaSelection объекта к 'Tx and Rx'.

Например:

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

пример

outsignal = mimochan(___,initialtime) задает время начала для процесса исчезновения.

Этот синтаксис применяется, когда вы устанавливаете свойство FadingTechnique объекта к 'Sum of sinusoids' и свойство InitialTimeSource объекта к 'Input port'. Синтаксис поддерживает входные опции от предшествующих синтаксисов.

пример

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

release(obj)

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

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

Примечание

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

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

Примеры

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

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

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

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

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

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

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

mimochannel = comm.MIMOChannel(...
    'SampleRate',1000, ...
    'PathDelays',[0 2e-3], ...
    'AveragePathGains',[0 -5], ...
    'MaximumDopplerShift',5, ...
    'SpatialCorrelationSpecification','None', ...
    'NumTransmitAntennas',4, ...
    'NumReceiveAntennas',2);

Передайте модулируемые и закодированные данные через канал MIMO.

rxSig = mimochannel(txSig);

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

ts = 1/mimochannel.SampleRate;
t = (0:ts:(size(txSig,1)-1)*ts)';

Вычислите и постройте степень сигнала, полученного антенной 1.

pwrdB = 20*log10(abs(rxSig(:,1)));

plot(t,pwrdB)
xlabel('Time (s)')
ylabel('Power (dBW)')

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

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

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

pskModulator = comm.PSKModulator;
modData = pskModulator(randi([0 pskModulator.ModulationOrder-1],1e5,1));

Разделите модулируемые данные в два пространственных потока.

channelInput = reshape(modData,[2 5e4]).';

Создайте Системный объект канала MIMO 2 на 2 с двумя дискретными путями. Каждый путь имеет различную передачу, и получите корреляционные матрицы, заданные TransmitCorrelationMatrix и ReceiveCorrelationMatrix свойства.

mimoChan = comm.MIMOChannel('SampleRate',1000, 'PathDelays',[0 1e-3], ...
    'AveragePathGains',[3 5], 'NormalizePathGains',false, 'MaximumDopplerShift',5, ...
    'TransmitCorrelationMatrix',cat(3,eye(2),[1 0.1;0.1 1]), ...
    'ReceiveCorrelationMatrix',cat(3,[1 0.2;0.2 1],eye(2)), ...
    'RandomStream','mt19937ar with seed', 'Seed',33, 'PathGainsOutputPort',true);

Отфильтруйте модулируемые данные с помощью объекта канала MIMO.

[~,pathGains] = mimoChan(channelInput);

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

disp('Tx spatial correlation, first path, first Rx:');
Tx spatial correlation, first path, first Rx:
disp(corrcoef(squeeze(pathGains(:,1,:,1))));
   1.0000 + 0.0000i   0.0357 - 0.0253i
   0.0357 + 0.0253i   1.0000 + 0.0000i

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

disp('Tx spatial correlation, second path, second Rx:');
Tx spatial correlation, second path, second Rx:
disp(corrcoef(squeeze(pathGains(:,2,:,2))));
   1.0000 + 0.0000i   0.0863 + 0.0009i
   0.0863 - 0.0009i   1.0000 + 0.0000i

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

disp('Rx spatial correlation, first path, second Tx:');
Rx spatial correlation, first path, second Tx:
disp(corrcoef(squeeze(pathGains(:,1,2,:))));
   1.0000 + 0.0000i   0.2236 + 0.0550i
   0.2236 - 0.0550i   1.0000 + 0.0000i

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

disp('Rx spatial correlation, second path, first Tx:');
Rx spatial correlation, second path, first Tx:
disp(corrcoef(squeeze(pathGains(:,2,1,:))));
   1.0000 + 0.0000i  -0.0088 - 0.0489i
  -0.0088 + 0.0489i   1.0000 + 0.0000i

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

Включите передачу и получите выбор антенны для mimoChan объект. Размер входного кадра сокращен к 100.

release(mimoChan);
mimoChan.AntennaSelection = 'Tx and Rx';
modData = pskModulator(randi([0 pskModulator.ModulationOrder-1],100,1));

Выберите первую антенну передачи, и второй получают антенну.

[channelOutput,pathGains] = mimoChan(modData,[1 0],[0 1]);

Подтвердите, что усиления пути, которые возвращает тот MATLAB®, имеют NaN значения для отменявшей передачи - получают пары антенны.

disp('Return 1 if the path gains for the second transmit antenna are NaN:');
Return 1 if the path gains for the second transmit antenna are NaN:
disp(isequal(isnan(squeeze(pathGains(:,:,2,:))), ones(100,2,2)));
   0
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)));
   0

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

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

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

Создайте 2x2 Системный объект канала MIMO ранее заданными параметрами и установите Visualization свойство к Impulse and frequency responses использование пар "имя-значение". По умолчанию пара антенны, соответствующая, чтобы передать антенну 1 и получить антенну 1, будет отображена.

mimoChan = comm.MIMOChannel('SampleRate',fs, ...
    'PathDelays',pathDelays, ...
    'AveragePathGains',avgPathGains, ...
    'MaximumDopplerShift',fD, ...
    'Visualization','Impulse and frequency responses');

Сгенерируйте случайные двоичные данные и передайте его через канал MIMO. График импульсной характеристики позволяет вам легко идентифицировать отдельные пути и их соответствующие коэффициенты фильтра. Частоту выборочная природа канала EVA показывает график частотной характеристики.

x = randi([0 1],1000,2);
y = mimoChan(x);

Выпустите mimoChan и набор AntennaPairsToDisplay свойство к [2 1], чтобы просмотреть пару антенны, соответствующую, чтобы передать антенну 2 и получить антенну 1. Необходимо выпустить объект, когда свойство является ненастраиваемым.

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

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

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

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

Создайте значение по умолчанию 2x2 канал MIMO с двумя путями и максимальным эффектом Доплера на 100 Гц с помощью пар "имя-значение". Установите Visualization свойство к Doppler spectrum и набор PathsForDopplerDisplay к 1. Доплеровский спектр первого пути будет отображен.

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

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

for k = 1:25
    x = randi([0 1],10000,2);
    y = mimoChan(x);
end

Выпустите mimoChan и набор PathsForDopplerDisplay свойство к 2. Необходимо выпустить объект, когда свойство является ненастраиваемым. Вызовите функцию многократно, чтобы отобразить Доплеровский спектр второго пути. Заметьте, что спектр является плоским.

release(mimoChan)
mimoChan.PathsForDopplerDisplay = 2;
for k = 1:25
    x = randi([0 1],10000,2);
    y = mimoChan(x);
end

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

Задайте полное время симуляции и в три раза сегменты, для которых будут переданы данные. В этом случае канал симулирован в течение 1 с с 1 000 Гц, производящими уровень. Одна последовательность текущих данных с 1000 выборками передается во время 0. Три пакета с 100 выборочными данными передаются во время 0,1 с, 0,4 с и 0,7 с.

t0 = 0:0.001:0.999;   % Transmission 0
t1 = 0.1:0.001:0.199; % Transmission 1
t2 = 0.4:0.001:0.499; % Transmission 2
t3 = 0.7:0.001:0.799; % Transmission 3

Сгенерируйте случайные двоичные данные, соответствующие ранее заданным временным интервалам.

d0 = randi([0 1],1000,2);  % 1000 samples
d1 = randi([0 1],100,2);   % 100 samples
d2 = randi([0 1],100,2);   % 100 samples
d3 = randi([0 1],100,2);   % 100 samples

Создайте плоское исчезновение 2x2 Системный объект канала MIMO с Sum of sinusoids исчезающий метод. Таким образом, это заканчивается, может быть повторен, задать seed с помощью пары "имя-значение". Как InitialTime свойство не задано, исчезающий канал будет симулирован со времени 0. Включите выходной порт усилений пути.

mimoChan1 = comm.MIMOChannel('SampleRate',1000, ...
    'MaximumDopplerShift',5, ...
    'RandomStream','mt19937ar with seed', ...
    'Seed',17, ...
    'FadingTechnique','Sum of sinusoids', ...
    'PathGainsOutputPort',true);

Создайте клон Системного объекта канала MIMO. Установите InitialTimeSource свойство к Input port так, чтобы исчезающее время смещения канала могло быть задано как входной параметр к mimoChan функция.

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

Передайте случайные двоичные данные через первый объект канала, mimoChan1. Данные передаются за все 1 000 раз выборки. В данном примере только усиление сложного контура необходимо.

[~,pg0] = mimoChan1(d0);

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

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

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

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

        1000         300

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

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

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

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

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

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

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

Создайте плоское исчезновение 2x2 объект канала MIMO использование Filtered Gaussian noise по умолчанию метод.

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

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

sos = comm.MIMOChannel('SampleRate',fs, ...
    'FadingTechnique','Sum of sinusoids', ...
    'NumSinusoids',48, ...
    'InitialTimeSource','Input port');

Запустите непрерывную последовательность случайных битов через отфильтрованный Гауссов шумовой объект канала MIMO. Используйте tic/toc таймерные функции секундомера, чтобы измерить время выполнения вызова функции.

tic
y = fgn(randi([0 1],fs*tsim,2));
tFGN = toc;

Чтобы передавать пакет данных каждую секунду, передайте случайные биты через сумму синусоид объект канала MIMO путем вызова sos функционируйте в цикле for. Используйте tic/toc таймер секундомера, чтобы измерить время выполнения.

tic
for k = 1:tsim
    z = sos(randi([0 1],fs*dutyCycle,2),0.5+(k-1));
end
tSOS = toc;

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

tSOS/tFGN
ans = 0.2621

Алгоритмы

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

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

Ссылки

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

[2] Correira, L. M. Мобильные широкополосные мультимедийные сети: методы, модели и инструменты для 4G, Academic Press, 2006.

[3] Kermoal, J. P. Л. Шумахер, К. Ай. Педерсен, П. Э. Модженсен и Ф. Фредериксен. "Стохастическое радио MIMO образовывает канал модель с экспериментальной валидацией". Журнал IEEE на Выбранных областях Коммуникаций. Издание 20, Номер 6, 2002, стр 1211–1226.

[4] Jeruchim, M., П. Балабан и К. С. Шэнмугэн. Симуляция систем связи, Секонд-Эдайшн, Нью-Йорк: академический Kluwer / пленум, 2000.

[5] Pätzold, Мэттиас, Cheng-Сянцзян Ван и Бьорн Олав Хогштанд. "Две Новых Суммы основанных на синусоидах Методов для Эффективной Генерации Нескольких Некоррелированых Форм волны Релеевского замирания". Транзакции IEEE на Радиосвязях. Издание 8, Номер 6, 2009, стр 3122–3131.

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

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