ofdmmod

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

Описание

пример

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

пример

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

пример

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-by N Sym-by N T массив символов. Количество поднесущих данных, N D, должно равняться nfft - длина (nullidx) - длина (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 массив символов Pilot-by N Sym-by N T. N Пилот должен равняться длине pilotidx. N Sym является количеством символов OFDM на передающую антенну. N T - количество передающих антенн. Функция предполагает, что местоположения поднесущей пилот-сигнала одинаковы между каждым символом OFDM и передающей антенной. Используйте comm.OFDMModulator изменять местоположения поднесущих пилот-сигнала через символы OFDM или антенны.

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

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

свернуть все

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

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

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

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

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

Подробнее о

свернуть все

OFDM-модуляция

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

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

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

Передатчик применяет обратное быстрое преобразование Фурье (IFFT) к N символам за раз. Выход IFFT является суммой 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 null и служить буферами между ресурсными блоками OFDM.

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

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

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

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

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

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

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

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

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

.

См. также

Функции

Объекты

Введенный в R2018a