exponenta event banner

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

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

Описание

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

Для модуляции сигнала с использованием OFDM:

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

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

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

Создание

Описание

пример

hMod = comm.OFDMModulator создает object™ системы модулятора OFDM.

пример

hMod = comm.OFDMModulator(Name,Value) задает свойства, использующие один из нескольких аргументов пары имя-значение. Заключите каждое имя свойства в кавычки. Например, comm.OFDMModulator('NumSymbols',8) задает восемь символов OFDM во временной частотной сетке.

пример

hMod = comm.OFDMModulator(hDemod) устанавливает свойства объекта системы модулятора OFDM на основе указанного объекта системы демодулятора OFDM comm.OFDMDemodulator.

Свойства

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

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

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

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

Число точек быстрого преобразования Фурье (FFT), указанное как положительное целое число. Длина FFT, NFFT, должна быть больше или равна 8 и эквивалентна количеству поднесущих.

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

Количество поднесущих, выделенных левой и правой защитным диапазонам, задаваемое как двухэлементный вектор-столбец целых чисел. Число поднесущих должно находиться в пределах [0, NFFT/2 ⌋ − 1]. Этот вектор имеет вид [NleftG, NireG], где NleftG и NireG определяют левую и правую защитные полосы соответственно.

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

Параметр для вставки значения DC null, заданного как числовой или логический 0 (false) или 1 (true). Поднесущая постоянного тока является центром полосы частот и имеет значение индекса:

  • (FFTLength / 2) + 1, когда FFTLength является четным

  • (FFTLength + 1 )/2, когда FFTLength является нечетным

Параметр для указания входного сигнала пилота, заданного как числовой или логический 0 (false) или 1 (true). Если это свойство 1 (true), можно назначить отдельные поднесущие для передачи пилот-сигнала. Если это свойство 0 (false), предполагается, что информация пилот-сигнала встроена во входные данные.

Индексы пилотной поднесущей, заданные как вектор столбца. Если свойство PilotTaxingIndices имеет значение 1 (true), можно указать индексы пилотных поднесущих. Индексы можно назначить тем же или разным поднесущим для каждого символа. Аналогично, индексы несущих пилот-сигнала могут различаться в нескольких передающих антеннах. В зависимости от требуемого уровня управления для назначений индексов размеры свойства различаются. Допустимые индексы пилота попадают в диапазон

[Nлефт G + 1, NFFT/2]∪[NFFT/2+2, NFFT NireG],

где значение индекса не может превышать число поднесущих. Когда индексы пилот-сигнала одинаковы для каждого символа и передающей антенны, свойство имеет размеры Npilot-by-1. Если пилотные индексы различаются по символам, свойство имеет размеры Npilot-by-Nsym. Если передается только один символ, но несколько передающих антенн, свойство имеет размеры Npilot-by-1-by-Nt., где Nt. - количество передающих антенн. Если индексы изменяются по количеству символов и передающих антенн, свойство имеет размеры Npilot-by-Nsym-by-Nt. Если число передающих антенн больше единицы, убедитесь, что индексы на символ должны быть взаимно различимы между антеннами, чтобы минимизировать помехи.

Чтобы включить это свойство, установите значение PilotInputPort свойство для 1 (true).

Длина циклического префикса, заданная как положительное целое число. При указании скаляра длина префикса одинакова для всех символов через все антенны. Если задан вектор строки длиной Nsym, длина префикса может изменяться для разных символов, но остается одинаковой для всех антенн.

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

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

Длина приподнятого окна косинуса, заданная как положительный скаляр. Это значение должно быть меньше или равно минимальной длине циклического префикса. Например, в конфигурации из четырех символов с длиной циклического префикса 12, 14, 16 и 18 длина окна должна быть меньше или равна 12.

Чтобы включить это свойство, установите значение Windowing свойство для 1 (true).

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

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

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

Описание

waveform = hMod(insignal) применяет модуляцию OFDM к указанному сигналу основной полосы частот и возвращает модулированный сигнал основной полосы частот OFDM.

waveform = hMod(data,pilot) назначает пилот-сигнал, pilot, в частотные поднесущие, указанные значением свойства PilotTraIndices hMod системный объект. Чтобы включить этот синтаксис, задайте для свойства PilotTaxingIndices значение true.

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

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

Входной сигнал основной полосы частот, заданный как матрица или 3-D массив числовых значений. Входной сигнал основной полосы должен иметь размер Nf-by-Nsym-by-Nt. где Nf - количество частотных поднесущих, исключая защитные полосы и нуль постоянного тока.

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

Входные данные, заданные как матрица или массив 3-D. Вход должен быть числовым размером Nd-by-Nsym-by-Nt. где Nd - количество поднесущих данных в каждом символе. Дополнительные сведения о том, как вычисляется Nd, см. в свойстве PilotTaxingIndices.

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

Пилот-сигнал, заданный как 3-D массив числовых значений. Пилот-сигнал должен иметь размер Nпилот-на-Нсым-на-Нт.

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

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

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

OFDM модулированный сигнал основной полосы частот, возвращаемый как 2-D массив. Если CyclicPrefixLength свойство - скаляр, выход waveform имеет размер ((NFFT + CPlen) Nsym) -by-Nt. В противном случае размер равен (NFFT⁎Nsym+∑ (CPlen)) -by-Nt.

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

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

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

release(obj)

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

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

Примеры

свернуть все

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

hMod = comm.OFDMModulator
hMod = 
  comm.OFDMModulator with properties:

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

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

hMod.FFTLength = 128;
hMod.NumSymbols = 2;

Убедитесь, что количество поднесущих и символов изменилось.

disp(hMod)
  comm.OFDMModulator with properties:

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

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

showResourceMapping(hMod)

Figure OFDM Subcarrier Mapping for All Tx Antennas contains an axes. The axes with title OFDM Subcarrier Mapping for All Tx Antennas contains an object of type image.

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

Установка PilotCarrierIndices свойство демодулятора влияет на количество передающих антенн в модуляторе OFDM, когда вы используете демодулятор при создании модулятора. Количество приемных антенн в демодуляторе не коррелирует с количеством передающих антенн.

ofdmDemod = comm.OFDMDemodulator;
ofdmDemod.PilotOutputPort = true;
ofdmDemod.PilotCarrierIndices = cat(3,[12; 26; 40; 54],[13; 27; 41; 55]);

Используйте OFDM-демодулятор для построения OFDM-модулятора.

ofdmMod = comm.OFDMModulator(ofdmDemod);

Отображение свойств модулятора OFDM и демодулятора, проверка соответствия применимых свойств.

disp(ofdmMod)
  comm.OFDMModulator with properties:

               FFTLength: 64
    NumGuardBandCarriers: [2x1 double]
            InsertDCNull: false
          PilotInputPort: true
     PilotCarrierIndices: [4x1x2 double]
      CyclicPrefixLength: 16
               Windowing: false
              NumSymbols: 1
     NumTransmitAntennas: 2
disp(ofdmDemod)
  comm.OFDMDemodulator with properties:

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

showResourceMapping способ отображает отображение частотно-временного ресурса для каждой передающей антенны.

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

mod = comm.OFDMModulator;

Применить showResourceMapping способ.

showResourceMapping(mod)

Figure OFDM Subcarrier Mapping for All Tx Antennas contains an axes. The axes with title OFDM Subcarrier Mapping for All Tx Antennas contains an object of type image.

Вставьте элемент DC null.

mod.InsertDCNull = true;

Отображение сопоставления ресурсов после добавления NULL контроллера домена.

showResourceMapping(mod)

Figure OFDM Subcarrier Mapping for All Tx Antennas contains an axes. The axes with title OFDM Subcarrier Mapping for All Tx Antennas contains an object of type image.

Создайте модулятор OFDM и задайте индексы поднесущих для пилот-сигналов. Укажите индексы для каждого символа и передающей антенны. Когда число передающих антенн больше единицы, установите различные индексы пилот-сигнала для каждого символа между антеннами.

Создайте объект системы модулятора OFDM, указав два символа и вставив нуль DC.

mod = comm.OFDMModulator('FFTLength',128,'NumSymbols',2,...
    'InsertDCNull',true);

Включите входной порт пилота, чтобы можно было задать индексы пилота.

mod.PilotInputPort = true;

Укажите одинаковые пилотные индексы для обоих символов.

mod.PilotCarrierIndices = [12; 56; 89; 100];

Визуализация размещения пилот-сигналов и нулей во временной частотной сетке OFDM с использованием showResourceMapping объектная функция.

showResourceMapping(mod)

Figure OFDM Subcarrier Mapping for All Tx Antennas contains an axes. The axes with title OFDM Subcarrier Mapping for All Tx Antennas contains an object of type image.

Укажите различные индексы для второго символа путем объединения второго столбца пилотных индексов с PilotCarrierIndices собственность.

mod.PilotCarrierIndices = cat(2,mod.PilotCarrierIndices, ...
    [17; 61; 94; 105]);

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

showResourceMapping(mod)

Figure OFDM Subcarrier Mapping for All Tx Antennas contains an axes. The axes with title OFDM Subcarrier Mapping for All Tx Antennas contains 2 objects of type image, line.

Увеличьте число передающих антенн до двух.

mod.NumTransmitAntennas = 2;

Укажите индексы пилот-сигнала для каждой из двух передающих антенн. Чтобы обеспечить индексы для нескольких антенн при минимизации помех между антеннами, установите PilotCarrierIndices свойство как массив 3-D, так что индексы для каждого символа различаются между антеннами.

mod.PilotCarrierIndices = cat(3,[20; 50; 70; 110], [15; 60; 75; 105]);

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

showResourceMapping(mod)

Figure OFDM Subcarrier Mapping for Tx Antenna 1 contains an axes. The axes with title OFDM Subcarrier Mapping for Tx Antenna 1 contains an object of type image.

Figure OFDM Subcarrier Mapping for Tx Antenna 2 contains an axes. The axes with title OFDM Subcarrier Mapping for Tx Antenna 2 contains an object of type image.

Укажите длину циклического префикса для каждого символа OFDM.

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

mod = comm.OFDMModulator('NumGuardBandCarriers',[4;3],...
    'NumSymbols',5,...
    'CyclicPrefixLength',[12 10 14 11 13]);

Отображение свойств модулятора OFDM, verifyING, в котором длина циклического префикса изменяется по символам.

disp(mod)
  comm.OFDMModulator with properties:

               FFTLength: 64
    NumGuardBandCarriers: [2x1 double]
            InsertDCNull: false
          PilotInputPort: false
      CyclicPrefixLength: [12 10 14 11 13]
               Windowing: false
              NumSymbols: 5
     NumTransmitAntennas: 1

Получение размеров данных модулятора OFDM с помощью info объектная функция.

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

hMod = comm.OFDMModulator('NumGuardBandCarriers',[4;3], ...
    'PilotInputPort',true, ...
    'PilotCarrierIndices',cat(3,[12; 26; 40; 54], ...
    [11; 25; 39; 53]), ...
    'InsertDCNull',true, ...
    'NumTransmitAntennas',2);

Используйте info объектная функция для получения входных данных модулятора, входных данных пилот-сигнала и размеров выходных данных.

info(hMod)
ans = struct with fields:
     DataInputSize: [48 1 2]
    PilotInputSize: [4 1 2]
        OutputSize: [80 2]

Генерировать OFDM-модулированные символы для использования в моделировании на уровне линии связи.

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

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

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

modDim = info(mod);

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

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

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

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

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

modData = step(mod,dataIn,pilotIn);

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

demod = comm.OFDMDemodulator(mod);

Демодулируют сигнал OFDM и выводят данные и пилот-сигналы.

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

Убедитесь, что в пределах жесткого допуска входные данные и символы пилот-сигнала совпадают с выходными данными и символами пилот-сигнала.

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

Подробнее

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

Ссылки

[1] Дальман, Эрик, Стефан Парквалл и Йохан Скёльд. 4G LTE/LTE-Advanced для мобильного широкополосного доступа. Амстердам: Elsevier, Acad. Press, 2011.

[2] Эндрюс, Дж. Г., А. Гош и Р. Мухамед. Основы WiMAX. Река Верхнее Седло, Нью-Джерси: Прентис Холл, 2007.

[3] Agilent Technologies, Inc., «Увеличение косинусного окна OFDM», http://rfmw.em.keysight.com/wireless/helpfiles/n7617a/ofdm_raised_cosine_windowing.htm.

[4] Монтрёй, Л., Р. Продан и Т. Кользе. «Формирование символов TX OFDM 802,3млрд», https://www.ieee802.org/3/bn/public/jan13/montreuil_01a_0113.pdf. Вещание, 2013.

[5] «Стандарт IEEE 802.16TM-2009,» Нью-Йорк: IEEE, 2009.

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

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