коммуникация. SphereDecoder

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

Описание

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

Декодировать вводимые символы с помощью декодера сферы:

  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, декодер выходные логарифмические отношения правдоподобия (LLRs) или мягкие биты.

Когда вы устанавливаете это свойство на Hard, декодер преобразовывает мягкий LLRs вдребезги. Выходной логический массив трудного решения следует за отображением нуля для отрицательного 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);

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

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

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

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

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

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

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

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

Алгоритм

Этот объект реализует по опыту вероятность (APP) макс. журнала мягкого вывода детектор MIMO посредством Декодера сферы Schnorr-Euchner (SESD) мягкого вывода, реализованного как обход дерева одного поиска по дереву (STS). Алгоритм принимает ту же совокупность и битную таблицу на всех антеннах передачи. Данный как входные параметры, полученный вектор символа и предполагаемая матрица канала, алгоритм выводит логарифмические отношения правдоподобия (LLRs) переданных битов.

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

y = Hs + n.

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

Детектор MIMO ищет решение наибольшего правдоподобия (ML), такое что:

s^ML=аргументminsoyHs2

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

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

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

где

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

  • xj,b каждый отправляется бит, b th бит the jth символа.

  • xj,b(0) и xj,b(1) непересекающиеся наборы векторных символов, которые имеют b th бит в метке j th скалярный символ, равный 0 и 1, соответственно. Два λ символа обозначают расстояние, вычисленное, когда норма придала квадратную форму., в частности:

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

    • λj,bML¯ расстояние до противогипотезы, которая обозначает бинарное дополнение b th бит в бинарной метке j th запись s^ML, в частности минимум набора символов xj,b(xj,bML¯), который содержит все возможные векторы, для которых b th бит j th запись инвертируется по сравнению с той же записью 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 на Q H, проблема может быть повторно сформулирована как:

λML=аргументminsoy¯Rs2λj,bML¯=sxj,b(xj,bML¯)аргументminy¯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 или турбо) или MIMO OFDM с декодированием Viterbi, значения вывода LLR должны масштабироваться информацией о состоянии канала, чтобы достигнуть лучшей производительности.

Выбранная библиография

[1] Studer, C. A. Город и Х. Белкскеи. “Декодирование Сферы мягкого вывода: Алгоритмы и Реализация VLSI”. Журнал IEEE Выбранных областей в Коммуникациях. Издание 26, № 2, февраль 2008, стр 290–300.

[2] Чо, Y. S. et.al. "Радиосвязи MIMO-OFDM с MATLAB", Нажатие IEEE, 2011.

[3] Хохвальд, B.M., S. десять Краев. “Достигая почти способности на канале нескольких-антенн”, Транзакции IEEE на Коммуникациях, Издании 51, № 3, март 2003, стр 389-399.

[4] Agrell, E., Т. Эрикссон, А. Варди, К. Зеджер. “Самая близкая точка ищет в решетках”, Транзакции IEEE на Теории информации, Издании 48, № 8, август 2002, стр 2201-2214.

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

Введенный в R2013a