ofdmmod

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

Синтаксис

ofdmSig = ofdmmod(inSym,nfft,cplen)
ofdmSig = ofdmmod(inSym,nfft,cplen,nullidx)
ofdmSig = ofdmmod(inSym,nfft,cplen,nullidx,pilotidx,pilots)

Описание

пример

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

пример

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

пример

ofdmSig = ofdmmod(inSym,nfft,cplen,nullidx,pilotidx,pilots) вставляет пустые и экспериментальные поднесущие в символы входных данных частотного диапазона до выполнения модуляции OFDM. Пустые поднесущие вставляются в индексных местоположениях, заданных nullidx. Экспериментальные поднесущие, pilots, вставляются в индексных местоположениях, заданных pilotidx. Для этого синтаксиса количеством строк во входе inSym должен быть nfftlength(nullidx)length(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, должно равняться nfftlength(nullidx)length(pilotidx). N Sym является количеством символов OFDM на антенну передачи, N T, является количеством антенн передачи.

Символы входных данных к модулятору OFDM обычно создаются с основополосным цифровым модулятором, таким как 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, является количеством антенн передачи.

Больше о

свернуть все

Модуляция OFDM

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

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

Вывод представляет собой репрезентацию модулированного сигнала:

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

где {X k} является символами данных, N является количеством поднесущих, и T является временем символа OFDM. Используя интервал поднесущей Δf = 1/T, поднесущие являются ортогональными за каждый период символа, как выражено в этом уравнении:

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

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

Модулятор 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

Для просмотра документации необходимо авторизоваться на сайте