comm.OFDMModulator

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

Описание

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

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

  1. Создайте comm.OFDMModulator Объекту и установите его свойства.

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

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

Создание

Описание

пример

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

пример

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

пример

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

Свойства

расширить все

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

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

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

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

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

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

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

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

  • (FFTLength / 2) + 1 при FFTLength есть даже

  • (FFTLength + 1 )/2 при FFTLength является нечетным

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

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

[NleftG+1,NFFT/2][NFFT/2+2,NFFTNrightG],

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

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

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

Типы данных: 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, в поднесущие частоты, заданные значением свойства PilotCarrierIndices hMod системный объект. Чтобы включить этот синтаксис, задайте для свойства PilotCarrierIndices значение true.

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

расширить все

Входной сгенерированный модулированный сигнал, заданный как матрица или трехмерный массив числовых значений. Размер входа сгенерированного модулированного сигнала должен быть N f-by- N sym-by- N t. где N f - количество частотных поднесущих, исключающих защитные полосы и DC null.

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

Входные данные, заданные как матрица или трехмерный массив. Этот вход должен быть числом размера N d-by- N sym-by- N t. где N d - количество поднесущих данных в каждом символе. Для получения дополнительной информации о том, как вычисляется N d, смотрите свойство PilotCarrierIndices.

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

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

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

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

расширить все

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

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

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

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

release(obj)

расширить все

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

Примеры

свернуть все

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

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.

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

Установка 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

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

Отображение сопоставления ресурсов после добавления значения DC 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 null.

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 свойство как трехмерный массив, таким образом индексы для каждого символа различаются среди антенн.

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

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

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, проверьтеING, что длина циклического префикса изменяется между символами.

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 функция объекта.

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

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 null, семью поднесущими защитного диапазона и двумя символами, имеющими различные индексы пилот-сигнала для каждого символа.

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. Верхняя Седл-Ривер, Нью-Джерси: Prentice Hall, 2007.

[3] Agilent Technologies, Inc., OFDM Raised Cosine Window, http://rfmw.em.keysight.com/wireless/helpfiles/n7617a/ofdm_raised_cosine_windowing.htm.

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

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

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

.

См. также

Функции

Объекты

Блоки

Введенный в R2014a