comm.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- 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