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

Демодулируйте использование метод OFDM

Описание

Объект OFDMDemodulator демодулирует использование ортогонального метода демодуляции деления частоты. Вывод представляет собой репрезентацию модулированного сигнала, который был введен в сопутствующий объект OFDMModulator.

Демодулировать сигнал OFDM:

  1. Задайте и настройте объект демодулятора OFDM. Смотрите Конструкцию.

  2. Вызовите step, чтобы демодулировать сигнал согласно свойствам comm.OFDMDemodulator. Поведение step характерно для каждого объекта в тулбоксе.

Примечание

При запуске в R2016b, вместо того, чтобы использовать метод step, чтобы выполнить операцию, заданную Системой object™, можно вызвать объект с аргументами, как будто это была функция. Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Конструкция

H = comm.OFDMDemodulator создает Системный объект демодулятора, H, который демодулирует входной сигнал при помощи ортогонального метода демодуляции деления частоты.

H = comm.OFDMDemodulator(Name,Value) создает объект демодулятора OFDM, H, с каждым заданным набором свойств к заданному значению. Можно задать дополнительные аргументы пары "имя-значение" в любом порядке как (Name1, Value1..., NameN, ValueN).

H = comm.OFDMDemodulator(hMod) создает объект демодулятора OFDM, H, свойства которого определяются соответствующим объектом модулятора OFDM, hMod.

Свойства

FFTLength

Длина БПФ, БПФ N, эквивалентна количеству поднесущих, используемых в процессе модуляции. FFTLength должен быть ≥ 8.

Задайте количество поднесущих. Значением по умолчанию является 64.

NumGuardBandCarriers

Количество поднесущих защитной полосы выделяется левым и правым защитным полосам.

Задайте количество левых и правых поднесущих как неотрицательные целые числа в [0, N FFT/21], где вы задаете левых, N leftG, и право, N rightG, защитные полосы независимо в 2 1 вектор-столбец. Значениями по умолчанию является [6; 5].

RemoveDCCarrier

Переменная logical это, когда true, передает под мандат удаление поднесущей DC. Значением по умолчанию является false.

PilotOutputPort

Свойство logical, которое управляет, разделить ли экспериментальные сигналы и сделать их доступными в дополнительном выходном порту. Местоположение каждого экспериментального выходного символа определяется экспериментальными индексами поднесущей, заданными в свойстве PilotCarrierIndices. Когда ложь, экспериментальные символы могут присутствовать, но быть встроены в данные. Значением по умолчанию является false.

PilotCarrierIndices

Если свойством PilotOutputPort является true, вывод отдельные экспериментальные сигналы, расположенные в индексах, заданных свойством PilotCarrierIndices. Если индексы являются 2D массивом, экспериментальные поставщики услуг через все антенны передачи на символ являются тем же самым. Если существует больше чем одна антенна передачи (эта информация не известна демодулятором), пилоты от различных антенн передачи могут вмешаться друг в друга. Чтобы избежать этого, задайте экспериментальные индексы поставщика услуг как трехмерный массив с различными экспериментальными индексами для каждого символа через антенны. Это избегает, чтобы интерференция между пилотами от различных антенн передачи, с тех пор, на основе на символ, каждая антенна передачи имела различных экспериментальных поставщиков услуг, и модулятор OFDM создает пользовательские пустые указатели в соответствующих местоположениях. Размер третьей размерности свойства PilotCarrierIndices дает количество антенн передачи.

CyclicPrefixLength

Циклическое свойство длины префикса задает длину циклического префикса OFDM. Если вы задаете скаляр, длина префикса является тем же самым для всех символов через все антенны. Если вы задаете вектор - строку из длины N sym, длина префикса может отличаться через символы, но остается та же длина через все антенны. Значением по умолчанию является 16.

NumSymbols

Это свойство задает количество символов, N sym. Задайте N sym как положительное целое число. Значением по умолчанию является 1.

NumReceiveAntennnas

Это свойство решает, что количество антенн, N R, раньше получало OFDM модулируемый сигнал. Задайте N R как положительное целое число. Значением по умолчанию является 1.

Методы

информацияПредоставьте информацию об определении размеров для метода OFDM
сбросСбросьте состояния Системного объекта OFDMDemodulator
showResourceMappingПокажите отображение поднесущей символов OFDM, созданных Системным объектом демодулятора OFDM
шагДемодулируйте использование метод OFDM
Характерный для всех системных объектов
release

Позвольте изменения значения свойства Системного объекта

Примеры

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

Создайте Систему демодулятора OFDM object™ со свойствами по умолчанию. Измените некоторые свойства.

Создайте демодулятор OFDM.

demod = comm.OFDMDemodulator
demod = 
  comm.OFDMDemodulator with properties:

               FFTLength: 64
    NumGuardBandCarriers: [2x1 double]
         RemoveDCCarrier: false
         PilotOutputPort: false
      CyclicPrefixLength: 16
              NumSymbols: 1
      NumReceiveAntennas: 1

Измените количество поднесущих и символов.

demod.FFTLength = 128;
demod.NumSymbols = 2;

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

demod
demod = 
  comm.OFDMDemodulator with properties:

               FFTLength: 128
    NumGuardBandCarriers: [2x1 double]
         RemoveDCCarrier: false
         PilotOutputPort: false
      CyclicPrefixLength: 16
              NumSymbols: 2
      NumReceiveAntennas: 1

Создайте Систему демодулятора OFDM object™ из существующего Системного объекта модулятора OFDM.

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

mod = comm.OFDMModulator('NumTransmitAntennas',4);

Создайте соответствующий демодулятор OFDM из модулятора, mod.

demod = comm.OFDMDemodulator(mod);

Отобразите свойства модулятора и проверьте, что они совпадают с теми из демодулятора.

mod
mod = 
  comm.OFDMModulator with properties:

               FFTLength: 64
    NumGuardBandCarriers: [2x1 double]
            InsertDCNull: false
          PilotInputPort: false
      CyclicPrefixLength: 16
               Windowing: false
              NumSymbols: 1
     NumTransmitAntennas: 4

demod
demod = 
  comm.OFDMDemodulator with properties:

               FFTLength: 64
    NumGuardBandCarriers: [2x1 double]
         RemoveDCCarrier: false
         PilotOutputPort: false
      CyclicPrefixLength: 16
              NumSymbols: 1
      NumReceiveAntennas: 1

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

Метод showResourceMapping показывает отображение ресурса частоты времени для каждой антенны передачи.

Создайте демодулятор OFDM.

demod = comm.OFDMDemodulator;

Примените метод showResourceMapping.

showResourceMapping(demod)

Удалите поднесущую DC.

demod.RemoveDCCarrier = true;

Покажите ресурс, сопоставляющий после удаления поднесущей DC.

showResourceMapping(demod)

Создайте модулятор OFDM со вставленным пустым указателем DC, семью поднесущими защитной полосы и двумя символами, которые имеют различные экспериментальные индексы для каждого символа.

mod = comm.OFDMModulator('NumGuardBandCarriers',[4;3],...
'PilotInputPort',true,'PilotCarrierIndices',cat(2,[12; 26; 40; 54],...
[11; 27; 39; 55]),'NumSymbols',2,'InsertDCNull',true);

Определите входные данные, пилота и размерности выходных данных.

modDim = info(mod)
modDim = struct with fields:
     DataInputSize: [52 2]
    PilotInputSize: [4 2]
        OutputSize: [160 1]

Сгенерируйте случайные символы данных для модулятора OFDM. Определите количество символов данных при помощи переменной структуры, modDim.

dataIn = complex(randn(modDim.DataInputSize),randn(modDim.DataInputSize));

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

pilotIn = complex(rand(modDim.PilotInputSize),rand(modDim.PilotInputSize));

Примените модуляцию OFDM к данным и экспериментальным сигналам.

modSig = step(mod,dataIn,pilotIn);

Используйте объект модулятора OFDM создать соответствующий демодулятор OFDM.

demod = comm.OFDMDemodulator(mod);

Демодулируйте сигнал OFDM и выведите данные и экспериментальные сигналы.

[dataOut,pilotOut] = step(demod,modSig);

Проверьте, что входные данные и экспериментальные символы совпадают с выходными данными и экспериментальными символами.

isSame = (max(abs([dataIn(:) - dataOut(:); ...
    pilotIn(:) - pilotOut(:)])) < 1e-10)
isSame = logical
   1

Алгоритмы

Системный объект Демодулятора Ортогональной модуляции деления частоты (OFDM) демодулирует входной сигнал OFDM при помощи операции FFT, которая приводит к потокам данных параллели N.

Данные показывают демодулятор OFDM. Это состоит из банка корреляторов N с одним присвоенным к каждой поднесущей OFDM, сопровождаемой преобразованием параллельного кода в последовательный.

Защитные полосы и интервалы

Существует три типа поднесущих OFDM: данные, пилот и пустой указатель. Поднесущие данных используются для передачи данных, в то время как экспериментальные поднесущие используются для оценки канала. На пустых поднесущих нет никакой передачи, которые используются, чтобы обеспечить пустой указатель DC, а также обеспечить буферы между блоками ресурса OFDM. Эти буферы упоминаются как защитные полосы, цель которых состоит в том, чтобы предотвратить интерференцию межсимвола. Выделение пустых указателей и защитных полос отличается в зависимости от стандарта, например, 802.11n отличается от LTE. Следовательно, объект модулятора OFDM позволяет пользователю присваивать индексы поднесущей как требуется.

Аналогичный концепции защитных полос, поддержка объектов модулятора OFDM охраняет интервалы, которые обеспечивают временное разделение между символами OFDM так, чтобы сигнал не терял ортогональность из-за дисперсионных временем каналов. Пока защитный интервал более длинен, чем распространение задержки, каждый символ не вмешивается в другие символы. Интервалы охраны создаются при помощи циклических префиксов, в которые последняя часть символа OFDM копируется и вставляется как первая часть символа OFDM. Преимущество циклической префиксной вставки сохраняется, пока промежуток дисперсии времени не превышает длительность циклического префикса. Объект модулятора OFDM позволяет циклической длине префикса быть установленной. Недостаток в использовании циклического префикса увеличен наверху.

Выбранная библиография

[1] Дэхлмен, E., С. Парквол и Дж. Сколд. 4G LTE/LTE-Advanced для Мобильной Широкополосной связи. Лондон: Elsevier Ltd., 2011.

[2] Эндрюс, J. G. А. Гош, и Р. Мухэмед, основные принципы WiMAX, верхний Сэддл-Ривер, NJ: Prentice Hall, 2007.

[3] Т.е. E. E. “стандарт IEEE 802.16TM-2009”.

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

Введенный в R2014a