MeIh 0 11 июня, 2022 Опубликовано 11 июня, 2022 · Жалоба Добрый день. Пишу диплом с целью "разработка непереборного алгоритма последовательного исключения". По окончанию разработки мне его надо сравнить с имеющимися методами декодирования. Я установил библиотеку aff3ct на с++, но ни как с ней не разберусь. Подскажите пожалуйста как в ней смоделировать кодирование, декодирование полярного и LDPC кодов. Мне надо для полярного кода декодирование методам: алгоритм последовательного исключения, списочный алгоритм последовательного исключения, стековый алгоритм последовательного исключения. Желательно еще декодирование методом направленного поиска, но главное первые три. Для LDPC нужно: Алгоритм «Sum-Product», Алгоритм «min-sum», Алгоритм «min-sum normalized». Проблема как вызвать в aff3ct коды с нужными настройками, я конечно сам разбираюсь потихоньку, но библиотека довольно большая и боюсь, что "разбирательство" затянется. Алгоритм непереборного декодирования. Суть: при кодировании 0 заменяется на 1 (0->1), а 1 на -1 (1->-1). Идея заключается в переходе от {0,1} к множеству действительных чисел. Декодировать получившийся код предполагается за счет мат. анализа. Сам отрыл эту тему в институте и не до конца представляю весь процесс. Если у кого-то есть умные мысли по кодированию/декодированию буду рад выслушать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 12 июня, 2022 Опубликовано 12 июня, 2022 · Жалоба за aff3ct не скажу, а матлабовский код "алгоритм последовательного исключения, списочный алгоритм последовательного исключения, стековый алгоритм последовательного исключения" представлен в работах/диссертации Петра Трифонова и его учеников. В частности, в матлабе последовательное исключение, это ЕМНП порядка 10 строчек на весь декодер. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MeIh 0 12 июня, 2022 Опубликовано 12 июня, 2022 · Жалоба В 12.06.2022 в 10:37, des00 сказал: за aff3ct не скажу, а матлабовский код "алгоритм последовательного исключения, списочный алгоритм последовательного исключения, стековый алгоритм последовательного исключения" представлен в работах/диссертации Петра Трифонова и его учеников. В частности, в матлабе последовательное исключение, это ЕМНП порядка 10 строчек на весь декодер. Как в матлабе реализовать алгоритм последовательное исключение? Я с ним вообще не работал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 12 июня, 2022 Опубликовано 12 июня, 2022 · Жалоба 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 также в этих материалах есть отсылка вот на этот код Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MeIh 0 12 июня, 2022 Опубликовано 12 июня, 2022 (изменено) · Жалоба В 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), это ученица его. Там только алгоритмы на псевдокоде (похоже по крайней мере на него), функций там нет. Изменено 12 июня, 2022 пользователем MeIh Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 13 июня, 2022 Опубликовано 13 июня, 2022 · Жалоба 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. Последовательное декодирование полярных кодов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MeIh 0 13 июня, 2022 Опубликовано 13 июня, 2022 · Жалоба В 13.06.2022 в 09:01, des00 сказал: там обычный матлабовский м-код, Все методы декодирования в одном файле - классе. Есть желание перепишите на функции, работы минут на 30, нет, используйте готовое как класс. эммм, 3.2. Последовательное декодирование полярных кодов с ядром Арикана -> Рис. 3.5. Последовательное декодирование полярных кодов " Рис. 3.5. Последовательное декодирование полярных кодов" Нашел но это же псевдо код, алгоритм грубо говоря, там и автор это пишет "На Рис. 3.5 представлен предлагаемый алгоритм последовательного декодирования. " И я его не полностью понимаю, что он там описал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться