exponenta event banner

ofdmmod

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

Описание

пример

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

пример

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

пример

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

КАМ модулирует данные. Выполните модуляцию 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);

КАМ модулирует данные. Выполните модуляцию 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);

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

свернуть все

Поднесущие входных данных, заданные как массив символов ND-by-NSym-by-NT. Количество поднесущих данных, ND, должно равняться nfftlength(nullidx)length(pilotidx). NSym - количество символов OFDM на передающую антенну, NT - количество передающих антенн.

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

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

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

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

Длина циклического префикса, заданная как скаляр или как вектор строки длиной NSym.

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

    NSym - количество символов на передающую антенну, NT - количество передающих антенн.

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

Подробнее

свернуть все

Модуляция OFDM

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

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

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

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

x (t) =∑k=0N−1Xkej2πkΔft, 0≤t≤T,

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

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

1T∫0T (ej2πmΔft) * (ej2πnΔft) dt=1T∫0Tej2π (m n) Δft dt = 0 для m≠n.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.

См. также

Функции

Объекты

Представлен в R2018a