ofdmmod

Модулируйте сигнал частотной области, использующий ортогональное частотное разнесение (OFDM)

Описание

пример

ofdmSig = ofdmmod(inSym,nfft,cplen) выполняет модуляцию OFDM на поднесущих входных данных частотного диапазона, inSym, использование размера БПФ задано nfft и длина циклического префикса задана cplen. Для получения информации см. Модуляцию OFDM.

пример

ofdmSig = ofdmmod(inSym,nfft,cplen,nullidx) вставляет пустые поднесущие в сигнал входных данных частотного диапазона до выполнения модуляции OFDM. Пустые поднесущие вставляются в местоположениях индекса от 1 до nfft, как задано nullidx. Для этого синтаксиса, количества строк во входе inSym должен быть nfftдлина (nullidx). Используйте пустые несущие с учетом поднесущих DC и защитных полос. Для получения информации смотрите Распределение поднесущих, Защитные полосы и Защитные интервалы.

пример

ofdmSig = ofdmmod(inSym,nfft,cplen,nullidx,pilotidx,pilots) вставляет пустой указатель и пилотные поднесущие в символы входных данных частотного диапазона до выполнения модуляции OFDM. Пустые поднесущие вставляются в местоположениях индекса, заданных nullidx. Пилотные поднесущие, pilots, вставляются в местоположениях индекса, заданных pilotidx. Для этого синтаксиса, количества строк во входе inSym должен быть nfftдлина (nullidx)длина (pilotidx). Функция принимает, что местоположение пилотных поднесущих является тем же самым через каждый символ OFDM и передающую антенну.

Примеры

свернуть все

OFDM-модулируйте полностью упакованный вход по двум передающим антеннам.

Инициализируйте входные параметры, сгенерируйте случайные данные и выполните модуляцию OFDM.

nfft  = 128;
cplen = 16;
nSym  = 5;
nt    = 2;
dataIn = complex(randn(nfft,nSym,nt),randn(nfft,nSym,nt));

y1 = ofdmmod(dataIn,nfft,cplen);

Примените модуляцию OFDM, присваивающую пустые поднесущие.

Инициализируйте входные параметры и сгенерируйте случайные данные.

M = 16; % Modulation order for 16QAM
nfft  = 64;
cplen = 16;
nSym  = 10;
nullIdx  = [1:6 33 64-4:64]';
numDataCarrs = nfft-length(nullIdx);
inSig = randi([0 M-1],numDataCarrs,nSym);

QAM модулируют данные. Выполните модуляцию OFDM.

qamSym = qammod(inSig,M,'UnitAveragePower',true);
outSig = ofdmmod(qamSym,nfft,cplen,nullIdx);

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

Инициализируйте входные параметры и сгенерируйте случайные данные.

M = 16; % Modulation order for 16QAM
nfft  = 64;
cplen = [4 8 10 7 2 2 4 11 16 3];
nSym  = 10;
nullIdx  = [1:6 33 64-4:64]';
numDataCarrs = nfft-length(nullIdx);
inSig = randi([0 M-1],numDataCarrs,nSym);

QAM модулируют данные. Выполните модуляцию OFDM.

qamSym = qammod(inSig,M,'UnitAveragePower',true);
outSig = ofdmmod(qamSym,nfft,cplen,nullIdx);

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

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

M = 4; % Modulation order for QPSK
nfft  = 64;
cplen = 16;
nSym  = 5;
nt    = 2;
nullIdx  = [1:6 33 64-4:64]';
pilotIdx = [12 26 40 54]';
numDataCarrs = nfft-length(nullIdx)-length(pilotIdx);
pilots = repmat(pskmod((0:M-1).',M),1,nSym,2);

ant1 = randi([0 M-1],numDataCarrs,nSym);
ant2 = randi([0 M-1],numDataCarrs,nSym);

QPSK модулирует данные индивидуально для каждой антенны. Выполните модуляцию OFDM.

qpskSym(:,:,1) = pskmod(ant1,M);
qpskSym(:,:,2) = pskmod(ant2,M);
y1 = ofdmmod(qpskSym,nfft,cplen,nullIdx,pilotIdx,pilots);

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

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

nfft     = 64;
cplen    = 16;
nSym     = 10;

nullIdx  = [1:6 33 64-4:64]';
pilotIdx = [12 26 40 54]';

numDataCarrs = nfft-length(nullIdx)-length(pilotIdx);
dataIn = complex(randn(numDataCarrs,nSym),randn(numDataCarrs,nSym));
pilots = repmat(pskmod((0:3).',4),1,nSym);

y2 = ofdmmod(dataIn,nfft,cplen,nullIdx,pilotIdx,pilots);

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

свернуть все

Поднесущие входных данных в виде N D NSym NT массивом символов. Количество поднесущих данных, N D, должно равняться nfftдлина (nullidx)длина (pilotidx). N Sym является количеством символов OFDM на передающую антенну, N T, является количеством передающих антенн.

Символы входных данных к модулятору OFDM обычно создаются с цифровым baseband модулятором, такой как qammod.

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

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

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

Длина циклического префикса в виде скаляра или как вектор-строка из длины N Sym.

  • Когда вы задаете cplen как скаляр, длина циклического префикса является тем же самым для всех символов через все антенны.

  • Когда вы задаете cplen как вектор-строка из длины N Sym, длина циклического префикса может варьироваться через символы, но остается та же длина через все антенны.

Для получения дополнительной информации смотрите Распределение поднесущих, Защитные полосы и Защитные интервалы.

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

Индексы местоположений пустой поднесущей в виде вектор-столбца со значениями элемента от 1 до nfft.

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

Индексы местоположения пилотных поднесущих в виде вектор-столбца со значениями элемента от 1 до nfft.

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

Пилотные поднесущие в виде Пилота N NSym NT массивом символов. Пилот N должен равняться длине pilotidx. N Sym является количеством символов OFDM на передающую антенну. N T является количеством передающих антенн. Функция принимает, что местоположение пилотных поднесущих является тем же самым через каждый символ OFDM и передающую антенну. Используйте comm.OFDMModulator варьироваться местоположение пилотных поднесущих через символы OFDM или антенны.

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

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

свернуть все

Модулированные OFDM символы, возвращаемые в виде 2D массива комплексных символов.

  • Если cplen скаляр, размер массивов ((nfft + cplen) × N Sym)-by-NT.

  • Если cplen вектор-строка, размер массивов ((nfft × N Sym) + sum(cplen))-by-NT.

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

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

Больше о

свернуть все

Модуляция OFDM

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

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

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

Передатчик применяет обратное быстрое преобразование Фурье (ОБПФ) к символам N за один раз. Выход ОБПФ является суммой N ортогональные синусоиды:

x(t)=k=0N1Xkej2πkΔft,0tT,

где {X k} является символами данных, и T является длительностью OFDM символа. Символы данных X k является обычно комплексным и может быть от любого алфавита цифровых модуляций (например, QPSK, 16-QAM, 64-QAM).

Расстояние между поднесущими является Δf = 1/T; гарантирование, что поднесущие являются ортогональными по каждому символьному периоду, как показано ниже:

1T0T(ej2πmΔft)*(ej2πnΔft)dt=1T0Tej2π(mn)Δftdt=0дляmn.

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

Распределение поднесущих, защитные полосы и защитные интервалы

Отдельные OFDM поднесущие выделяются как данные, пилоты или пустые поднесущие.

Как показано здесь, поднесущие обозначены как данные, DC, пилот или поднесущие защитной полосы.

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

  • Пилотные поднесущие используются для оценки канала.

  • Пустые поднесущие не передают данных. Поднесущие без данных используются, чтобы обеспечить пустой указатель DC и служить буферами между блоками ресурса OFDM.

    • Пустая поднесущая DC является центром диапазона частот со значением индекса (nfft/2 + 1), если nfft является четным, или ((nfft + 1) / 2), если nfft является нечетным.

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

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

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

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

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

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

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

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Смотрите также

Функции

Объекты

Введенный в R2018a