Перейти к содержанию
    

Помехоустойчивость. Моделирование полярных и LDPC кодов. Алгоритм непереборного декодирования

Добрый день. Пишу диплом с целью "разработка непереборного алгоритма последовательного исключения". По окончанию разработки мне его надо сравнить с имеющимися методами декодирования. Я установил библиотеку aff3ct на с++, но ни как с ней не разберусь. Подскажите пожалуйста как в ней смоделировать кодирование, декодирование полярного и LDPC кодов.

Мне надо для полярного кода декодирование методам: алгоритм последовательного исключения, списочный алгоритм последовательного исключения, стековый алгоритм последовательного исключения. Желательно еще декодирование методом направленного поиска, но главное первые три.

Для LDPC нужно: Алгоритм «Sum-Product», Алгоритм «min-sum», Алгоритм «min-sum normalized».

Проблема как вызвать в aff3ct коды с нужными настройками, я конечно сам разбираюсь потихоньку, но библиотека довольно большая и боюсь, что "разбирательство" затянется.

Алгоритм непереборного декодирования. Суть: при кодировании 0 заменяется на 1 (0->1), а 1 на -1 (1->-1). Идея заключается в переходе от {0,1} к множеству действительных чисел. Декодировать получившийся код предполагается за счет мат. анализа. Сам отрыл эту тему в институте и не до конца представляю весь процесс.  Если у кого-то есть умные мысли по кодированию/декодированию буду рад выслушать. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

за aff3ct не скажу, а матлабовский код "алгоритм последовательного исключения, списочный алгоритм последовательного исключения, стековый алгоритм последовательного исключения" представлен в работах/диссертации Петра Трифонова и его учеников. В частности, в матлабе последовательное исключение, это ЕМНП порядка 10 строчек на весь декодер. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 12.06.2022 в 10:37, des00 сказал:

за aff3ct не скажу, а матлабовский код "алгоритм последовательного исключения, списочный алгоритм последовательного исключения, стековый алгоритм последовательного исключения" представлен в работах/диссертации Петра Трифонова и его учеников. В частности, в матлабе последовательное исключение, это ЕМНП порядка 10 строчек на весь декодер. 

Как в матлабе реализовать алгоритм последовательное исключение? Я с ним вообще не работал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

32 minutes ago, MeIh said:

Как в матлабе реализовать алгоритм последовательное исключение? Я с ним вообще не работал.

я же написал в каких материалах искать код, там в статьях есть функция для SC алгоритма

function [u,x] = polar_decode(y,f)
% y = bit APP from channel in output order % f = input a priori probs in input order
% x = output hard decision in output order % u = input hard decisions in input order
% Recurse down to length 1
N = length(y);
if (N==1)
    if (f==1/2)
        % If info bit, make hard decision based on observation
        x = (1-sign(1-2*y))/2; u = x;
    else
        % If frozen, use frozen bit
        x = f; u = x;
    end
else
    % Compute soft mapping back one stage
    u1est = cnop(y(1:2:end),y(2:2:end));
    % R_N^T maps u1est to top polar code
    [uhat1,u1hardprev] = polar_decode(u1est,f(1:(N/2)));
    % Using u1est and x1hard, we can estimate u2
    u2est = vnop(cnop(u1hardprev,y(1:2:end)),y(2:2:end));
    % R_N^T maps u2est to bottom polar code
    [uhat2,u2hardprev] = polar_decode(u2est,f((N/2+1):end));
    % Tunnel u decisions back up. Compute and interleave x1,x2 hard decisions
    u = [uhat1 uhat2];
    x = reshape([cnop(u1hardprev,u2hardprev); u2hardprev],1,[]);
end
return
% Check-node operation in P1 domain
function z=cnop(w1,w2)
    z = w1.*(1-w2) + w2.*(1-w1);
return
% Bit-node operation in P1 domain
function z=vnop(w1,w2)
    z = w1.*w2 ./ (w1.*w2 + (1-w1).*(1-w2));
return

также в этих материалах есть отсылка вот на этот код 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 12.06.2022 в 13:21, des00 сказал:

я же написал в каких материалах искать код, там в статьях есть функция для SC алгоритма

function [u,x] = polar_decode(y,f)
% y = bit APP from channel in output order % f = input a priori probs in input order
% x = output hard decision in output order % u = input hard decisions in input order
% Recurse down to length 1
N = length(y);
if (N==1)
    if (f==1/2)
        % If info bit, make hard decision based on observation
        x = (1-sign(1-2*y))/2; u = x;
    else
        % If frozen, use frozen bit
        x = f; u = x;
    end
else
    % Compute soft mapping back one stage
    u1est = cnop(y(1:2:end),y(2:2:end));
    % R_N^T maps u1est to top polar code
    [uhat1,u1hardprev] = polar_decode(u1est,f(1:(N/2)));
    % Using u1est and x1hard, we can estimate u2
    u2est = vnop(cnop(u1hardprev,y(1:2:end)),y(2:2:end));
    % R_N^T maps u2est to bottom polar code
    [uhat2,u2hardprev] = polar_decode(u2est,f((N/2+1):end));
    % Tunnel u decisions back up. Compute and interleave x1,x2 hard decisions
    u = [uhat1 uhat2];
    x = reshape([cnop(u1hardprev,u2hardprev); u2hardprev],1,[]);
end
return
% Check-node operation in P1 domain
function z=cnop(w1,w2)
    z = w1.*(1-w2) + w2.*(1-w1);
return
% Bit-node operation in P1 domain
function z=vnop(w1,w2)
    z = w1.*w2 ./ (w1.*w2 + (1-w1).*(1-w2));
return

также в этих материалах есть отсылка вот на этот код 

Спасибо за пояснения, но вы неправилоьно поняли мой вопрос. ВЫ мне посоветовали библиотеку (https://github.com/tavildar/Polar) как ее устанавливать в матлаб? Вот я его скачал, что делать дальше? Тупо скопировать код и вставить или как в с++ надо через git, cmake, nmake это все скачивать устанавливать?

Далее по материалам. Я нашел Методы построения и декодирования многочленных кодов Трифонова (http://iitp.ru/upload/content/1393/trifonovDr.pdf) и Методы построения и декодирования полярных кодов Милославской (https://dcn.icc.spbstu.ru/~petert/papers/mil-thesis.pdf), это ученица его. Там только алгоритмы на псевдокоде (похоже по крайней мере на него), функций там нет. 

Изменено пользователем MeIh

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

17 hours ago, MeIh said:

Спасибо за пояснения, но вы неправилоьно поняли мой вопрос. ВЫ мне посоветовали библиотеку (https://github.com/tavildar/Polar) как ее устанавливать в матлаб? Вот я его скачал, что делать дальше?

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

17 hours ago, MeIh said:

Далее по материалам. Я нашел Методы построения и декодирования многочленных кодов Трифонова (http://iitp.ru/upload/content/1393/trifonovDr.pdf) и Методы построения и декодирования полярных кодов Милославской (https://dcn.icc.spbstu.ru/~petert/papers/mil-thesis.pdf), это ученица его. Там только алгоритмы на псевдокоде (похоже по крайней мере на него), функций там нет. 

эммм, 3.2. Последовательное декодирование полярных кодов с ядром Арикана -> Рис. 3.5. Последовательное декодирование полярных кодов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 13.06.2022 в 09:01, des00 сказал:

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

эммм, 3.2. Последовательное декодирование полярных кодов с ядром Арикана -> Рис. 3.5. Последовательное декодирование полярных кодов

" Рис. 3.5. Последовательное декодирование полярных кодов" Нашел но это же псевдо код, алгоритм грубо говоря, там и автор это пишет "На Рис. 3.5 представлен предлагаемый алгоритм последовательного декодирования. " И я его не полностью понимаю, что он там описал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...