comm.SphereDecoder

Декодируйте вход с помощью сферического декодера

Описание

The Sphere Decoder Система object™ декодирует символы, посланные N Т антеннам, используя алгоритм сферического декодирования.

Чтобы декодировать входные символы с помощью сферического декодера:

  1. Определите и настройте объект декодера сферы. См. «Конструкция».

  2. Функции step декодировать входные символы в соответствии со свойствами comm.SphereDecoder. Поведение step характерен для каждого объекта в тулбоксе.

Примечание

Начиная с R2016b, вместо использования step метод для выполнения операции, заданной системным объектом, можно вызвать объект с аргументами, как если бы это была функция. Для примера, y = step(obj,x) и y = obj(x) выполнять эквивалентные операции.

Конструкция

H = comm.SphereDecoder создает Системный объект, H. Этот объект использует алгоритм сферического декодирования, чтобы найти решение максимальной вероятности для набора принятых символов по каналу MIMO с N T передающими антеннами и N R приемными антеннами.

H = comm.SphereDecoder(Name,Value) создает объект сферического декодера, H, с заданным именем свойства, установленным на заданное значение. Имя должно находиться внутри одинарных кавычек (") Можно задать несколько аргументы пары "имя-значение" в любом порядке, как Name1,Value1,...,NameN,ValueN.

H = comm.SphereDecoder(CONSTELLATION,BITTABLE) создает объект сферического декодера, Hс Созвездием набора свойств для CONSTELLATION, и BitTable значение свойства установлено в BITTABLE.

Свойства

Constellation

Сигнальное созвездие на передающую антенну

Задайте созвездие как комплексный вектор-столбец, содержащее точки созвездия, с которыми отображены переданные биты. Настройкой по умолчанию является созвездие QPSK со средней степенью 1. Длина вектора должна быть степенью двойки. Объект принимает, что каждая передающая антенна использует одно и то же созвездие.

BitTable

Битовое отображение, используемое для каждой точки созвездия.

Задайте битовое отображение для символов, которые Constellation свойство задается как числовая матрица. Значение по умолчанию является [0 0; 0 1; 1 0; 1 1], что соответствует значению по умолчанию Constellation значение свойства.

Размер матрицы должен быть [ConstellationLength bitsPerSymbol]. ConstellationLength представляет длину Constellation свойство. bitsPerSymbol представляет количество бит, которое кодирует каждый символ.

InitialRadius

Начальный радиус поиска алгоритма декодирования.

Задайте начальный радиус поиска для алгоритма декодирования как Infinity | ZF Solution. Значение по умолчанию является Infinity.

Когда вы устанавливаете это свойство на Infinityобъект устанавливает начальный радиус поиска равным Inf.

Когда вы устанавливаете это свойство на ZF Solutionобъект устанавливает начальный радиус поиска в решение с нулевой силой. Это вычисление использует псевдовращение входного канала при декодировании. Большие созвездия и/или счетчики антенн могут быть полезны от начального сокращения радиуса поиска. Однако в большинстве случаев дополнительные расчеты ZF Solution не предоставит льготы.

DecisionType

Укажите метод решения о декодировании как Soft | Hard. Значение по умолчанию является Soft.

Когда вы устанавливаете это свойство на Softдекодер выводит логарифмические коэффициенты логарифмической правдоподобности (LLR) или мягкие биты.

Когда вы устанавливаете это свойство на Hardдекодер преобразует мягкие LLR в биты. Выходной логический массив с жестким решением следует за отображением нуля для отрицательного LLR и одного для всех других значений.

Методы

шагДекодируйте принятые символы, используя алгоритм сферического декодирования
Общий для всех системных объектов
release

Разрешить изменение значения свойства системного объекта

Примеры

свернуть все

Модулируйте набор бит, используя 16-QAM созвездие. Передайте сигнал как два параллельных потока по каналу MIMO. Декодируйте с помощью сферического декодера с совершенными знаниями о канале.

Задайте порядок модуляции, количество переданных бит, отношение Eb/No и отображение символов.

bps = 4; % Bits per symbol
M = 2^bps; % Modulation order
nBits = 1e3*bps;
ebno = 10;
symMap = [11 10 14 15 9 8 12 13 1 0 4 5 3 2 6 7];

Сгенерируйте и отобразите отображение символов модулятора 16-QAM при помощи qammod функция и пользовательская карта символов.

sym = qammod(symMap(1:M)',M,symMap,'UnitAveragePower',true,'PlotConstellation',true);

Figure contains an axes. The axes with title 16-QAM, Custom Mapping, UnitAveragePower=true contains 19 objects of type line, text.

Преобразуйте десятичное значение карты символов в двоичные биты, используя левый бит как самый значащий бит (msb). The M-by- bps матрица bitTable используется сферическим декодером.

bitTable = de2bi(symMap,bps,'left-msb');

Создайте объект 2x2 MIMO Channel System с PathGainsOutputPort установлено на true использовать коэффициент усиления пути в качестве оценки канала. Чтобы гарантировать повторяемость результатов, установите объект на использование глобального потока случайных чисел.

mimo = comm.MIMOChannel( ...
    'PathGainsOutputPort',true, ...
    'RandomStream','Global stream');

Создайте объект системы канала AWGN.

awgnChan = comm.AWGNChannel('EbNo',ebno,'BitsPerSymbol',bps);

Создайте объект Sphere Decoder System, который обрабатывает биты с помощью декодирования с жестким решением. Сконфигурируйте с помощью пользовательской битовой таблицы и карты символов.

sphDec = comm.SphereDecoder('Constellation',sym, ...
    'BitTable',bitTable,'DecisionType','Hard');

Создайте Системный объект частоты ошибок.

berRate = comm.ErrorRate;

Установите глобальный генератор случайных чисел seed.

rng(37)

Сгенерируйте случайный поток данных.

data = randi([0 1],nBits,1);

Модулируйте данные и измените их форму на два потока, которые будут использоваться с каналом 2x2 MIMO.

modData = qammod(data,M,symMap,'InputType','bit','UnitAveragePower',true);
modData = reshape(modData,[],2);

Передайте модулированные данные через канал MIMO с замираниями и добавьте AWGN.

[fadedSig,pathGains] = mimo(modData);
rxSig = awgnChan(fadedSig);

Декодируйте принятый сигнал, используя pathGains как идеальная оценка канала.

decodedData = sphDec(rxSig,squeeze(pathGains));

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

dataOut = double(decodedData(:));
errorStats = berRate(data,dataOut);
errorStats(1:2)
ans = 2×1

    0.0380
  152.0000

Алгоритм

Этот объект реализует MIMO-детектор апостериорной вероятности (APP) с помощью Schnorr-Euchner-sphere decoder (SESD) с soft-output, реализованный как обход дерева поиска одиночного дерева (STS). Алгоритм принимает одно и то же созвездие и битовую таблицу на всех передающих антеннах. Заданный как входы, принятый вектор символов и оцененная матрица канала, алгоритм выводит логарифмические коэффициенты логарифмической правдоподобности (LLR) переданных бит.

Алгоритм принимает системную модель MIMO с N Т передающими антеннами и N R приемными антеннами, где одновременно посылаются N Т символов, выраженную как:

y = Hs + n.

где y - принятые символы, H - матрица канала MIMO, s - переданный вектор символа, и n - тепловой шум.

Детектор MIMO ищет решение максимальной вероятности (ML), s^ML, таким образом:

s^ML=argminsoyHs2

где O - комплексное созвездие, из которого выбираются N Т-элементы s.

Мягкое обнаружение также вычисляет коэффициент логарифмической правдоподобности (LLR) для каждого бита, который служит мерой надежности оценки для каждого бита. LLR вычисляется как использование максимального логарифмического приближения:

L(xj,b)=minsxj,b(0)yHs2λMLminsxj,b(1)yHs2λj,bML¯

где

  • L (x j,b) является оценкой LLR для каждого бита.

  • xj,b каждый переданный бит, b-й бит j-го символа.

  • xj,b(0) и xj,b(1) являются несвязанными наборами векторных символов, которые имеют b-й бит в метке j-го скалярного символа, равные 0 и 1, соответственно. Эти два символа - это расстояние, вычисленное как норма в квадрате., в частности:

    • λML это расстояние s^ML.

    • λj,bML¯ - расстояние до контргипотезы, которое обозначает двоичное дополнение b-го бита в двоичной метке j-й записи s^ML, в частности, минимум набора символов xj,b(xj,bML¯), который содержит все возможные векторы, для которых b-й бит j-й записи перевернут по сравнению с тем же входом s^ML.

Исходя из того, xj,b(xj,bML) является 0 или 1, оценка LLR для бита xj,b определяется следующим образом:

L(xj,b)={λMLλj,bML¯,xj,bML=0λj,bML¯λML,xj,bML=1

Проект декодера стремится эффективно найти s^ML, λML, и λj,bML¯.

Этот поиск может быть преобразован в древовидный поиск с помощью алгоритмов декодирования сферы. С этой целью матрица канала разлагается на H=QR посредством QR разложения. Умножение y на QH, задача может быть переформулирована как:

λML=argminsoy¯Rs2λj,bML¯=sxj,b(xj,bML¯)argminy¯Rs2

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

В алгоритме STS, λML и λj,bML¯ метрики просматриваются одновременно. Цель состоит в том, чтобы иметь список, содержащий метрику λML, наряду с соответствующей битовой последовательностью xML и метрики xj,b(xj,bML) всех контргипотез. Поиск поддерева, происходящего из данного узла, выполняется только в том случае, если результат может привести к обновлению либо λML или λj,bML¯.

Поток алгоритма STS может быть суммирован как:

  1. Если при достижении узла листа обнаруживается новая гипотеза ML (d(x)<λML), все λj,bML¯ для чего xj,b=xj,bML¯ установлены в λML который теперь превращается в ценную контргипотезу. Затем, λML устанавливается на текущее расстояние, d (x).

  2. Если d(x)λML, только контргипотезы должны быть проверены. Для всех j и b, для которых (d(x)<λML) и xj,b=xj,bML¯, декодер обновляется λj,bML¯ подлежит d (x).

  3. Поддерево обрезается, если частичное расстояние узла больше, чем текущее λj,bML¯ которые могут быть затронуты при прохождении поддерева.

  4. STS завершается после того, как все узлы дерева были посещены один раз или обрезаны.

Ограничения

  • Выходные значения LLR не масштабируются отклонением шума. Для закодированных ссылок, использующих итеративное кодирование (LDPC или turbo) или MIMO OFDM с декодированием Viterbi, выходные значения LLR должны масштабироваться информацией о состоянии канала, чтобы достичь лучшей эффективности.

Избранная библиография

[1] Studer, C., A. Burg, and H. Bölcskei. «Декодирование сферы Soft-Output: алгоритмы и реализация VLSI». Журнал IEEE по выбранным областям в коммуникациях. Том 26, № 2, февраль 2008, стр. 290-300.

[2] Чо, Я. С., et.al. «MIMO-OFDM Wireless Communications with MATLAB», IEEE Press, 2011.

[3] Hochwald, B.M., S. ten Brink. «Достижение ближней пропускной способности в многоантенном канале», Транзакции IEEE по связи, том 51, № 3, Mar 2003, pp. 389-399.

[4] Agrell, E., T. Eriksson, A. Vardy, K. Zeger. «Поиск по ближайшей точке в решетках», Транзакции IEEE по теории информации, том 48, № 8, авг. 2002, стр. 2201-2214.

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

.
Введенный в R2013a