wlanConstellationDemap

Демпфирование созвездия

Описание

пример

y = wlanConstellationDemap(sym,noiseVarEst,numBPSCS) демпфирует полученный вход sym использование метода аппроксимации LLR с мягким решением для заданного количества кодированных бит на поднесущую в каждом пространственном потоке numBPSCS. Принятые символы должны быть сгенерированы одной из следующих модуляций:

  • BPSK, QPSK, 16QAM или 64QAM, согласно IEEE® 802.11™-2012, раздел 18.3.5.8

  • 256QAM, согласно 802.11ac™-2012 IEEE, раздел 22.3.10.9.1

  • 1024QAM, согласно IEEE 802.11-16/0922r2

пример

y = wlanConstellationDemap(sym,noiseVarEst,numBPSCS,demapType) задает тип демпфирования.

пример

y = wlanConstellationDemap(sym,noiseVarEst,numBPSCS,phase) определяет символы по часовой стрелке перед демпфированием по количеству радианов, заданному в phase.

пример

y = wlanConstellationDemap(sym,noiseVarEst,numBPSCS,demapType,phase) задает тип демпфирования и поворот фазы.

Примеры

свернуть все

Выполните демпфирование 256QAM, как определено в IEEE ® 802.11ac™-2013, раздел 22.3.10.9.1.

Создайте последовательность бит данных.

bits = randi([0 1],416,1,'int8');

Выполните отображение созвездий с битами данных с помощью 256QAM модуляции. Размер выхода равен размеру входной последовательности, разделенной на восемь.

numBPSCS = 8;
mappedData = wlanConstellationMap(bits,numBPSCS);
size(mappedData)
ans = 1×2

    52     1

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

noiseVar = 0;
demappedData = wlanConstellationDemap(mappedData,noiseVar,numBPSCS);
size(demappedData)
ans = 1×2

   416     1

Выполните демпфирование 256QAM при помощи жесткой демодуляции. Демпфирование определено в IEEE ® 802.11™-2012 раздел 18.3.5.8

Создайте последовательность бит данных.

 bits = randi([0 1],416,1);

Выполните отображение созвездий с битами данных с помощью 256QAM созвездия.

numBPSCS = 8;
mappedData = wlanConstellationMap(bits,numBPSCS);

Выполните демпфирование 256QAM созвездия. Поскольку это жесткое отключение, предполагаемое отклонение шума игнорируется.

noiseVar = 0;
demapType = 'hard';
demappedData = wlanConstellationDemap(mappedData,noiseVar,numBPSCS,demapType);

Проверьте, что демпфированные данные совпадают с исходными данными.

isequal(bits,demappedData)
ans = logical
   1

BPSK и QBPSK для различных символов OFDM для поля VHT-SIG-A при помощи мягкой демодуляции. Демпфирование определено в IEEE ® 802.11ac™-2013 раздел 22.3.8.3.3

Создайте последовательность бит данных. Задайте два символа OFDM в столбцах.

 bits = randi([0 1],48,2,'int8');

Выполните отображение созвездий с битами данных. Задайте размер поворота созвездия в виде числа в столбцах входа последовательности. Первый столбец сопоставлен с модуляцией BPSK. Второй столбец модулируется модуляцией QBPSK.

numBPSCS = 1;
phase = [0 pi/2];
mappedData = wlanConstellationMap(bits,numBPSCS,phase);

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

noiseVar = 0;
demappedData = wlanConstellationDemap(mappedData,noiseVar,numBPSCS,phase);

Проверьте, что демпфированные данные совпадают с исходными данными. Поскольку шум отсутствует, можно восстановить исходные данные без ошибок, присвоив отрицательные значения логическому элементу 1, а положительные - логическому элементу 0. Другими словами, вы можете преобразовать мягкие биты в жесткие биты.

demappedBits = int8((demappedData<=0));
isequal(bits,demappedBits)
ans = logical
   1

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

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

numCBPSSI = 416; 
numSym = 4;
numSS = 2;
numSeg = 2; 
bits = randi([0 1],numCBPSSI,numSym,numSS,numSeg);
size(bits)
ans = 1×4

   416     4     2     2

Выполните QBPSK отображение созвездий на битах данных с поворотом на π2 радианы.

numBPSCS = 1;
phase = pi/2;
mappedData = wlanConstellationMap(bits,numBPSCS,phase);
size(mappedData)
ans = 1×4

   416     4     2     2

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

noiseVar = 0;
demapType = 'hard';
demappedData = wlanConstellationDemap(mappedData,noiseVar,numBPSCS,demapType);

Проверьте, что демпфированные данные совпадают с исходными данными.

isequal(bits,demappedData)
ans = logical
   1

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

свернуть все

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

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

Оценка отклонения шума, заданная как неотрицательный скаляр. Когда для типа демпфирования задано значение 'hard'оценка отклонения шума не требуется и, следовательно, игнорируется.

Пример: 0.7071

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

Количество кодированных бит на поднесущую в каждом пространственном потоке, заданное как log2 (M), где M является порядком модуляции. Поэтому numBPSCS должен быть равен:

  • 1 для BPSK модуляции

  • 2 для QPSK модуляции

  • 4 для 16QAM модуляции

  • 6 для 64QAM модуляции

  • 8 для 256QAM модуляции

  • 10 для 1024QAM модуляции

Пример: 4

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

Тип демпфирования, заданный как вектор символов или строковый скаляр. Это может быть 'hard' для демпфирования с жестким решением или 'soft' для метода аппроксимации LLR с мягким решением.

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

Вращение созвездия в радианах, заданное как скалярный, векторный или многомерный массив. Размер phase должна быть совместима с размером входа sym. phase и sym имеют совместимые размеры, если для каждой соответствующей размерности размеры размерности равны или один из них равен 1. Когда одна из размерностей sym равно 1, и соответствующая размерность phase больше 1, тогда выходные размерности имеют тот же размер, что и размерности phase.

Пример: pi*(0:size(bits,1)/numBPSCS-1).'/2;

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

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

свернуть все

Демпфированные символы, возвращенные как числовой вектор, матрица или многомерный массив целых чисел. y имеет тот же размер, что и sym кроме количества строк, которое равно количеству строк sym, умноженный на numBPSCS.

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

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

.

См. также

Введенный в R2017b