Jump to content
    

Добиться прозрачного понимания в LDPC кодах.

Объясните, как пользоваться LDPC ?

 

Вот взять к примеру кодек Рида-Соломона:  есть процедура кодирования и декодирования.  В качестве исходных данных - массив бит или байт.

При кодировании получаем - дополнительные проверочные слова.

При декодировании - получаем восстановленное сообщение (если повезёт).

 

А как LDPC использовать?

Смотрю примеры на гитхабе с LDPC, и чё-т я вкурить не могу - там какие-то полярные модуляции, шумы замешивают... какие -то вероятности...

Ничего не понимаю.

Мне нужно закодировать массив байт и потом раскодировать.

Не вижу прозрачности в пользовании LDPC кодов.

 

Что не так?  И почему?

Edited by repstosw

Share this post


Link to post
Share on other sites

Пролейте свет просвещения в понимании LDPC кодов с жёсткими решениями пожалуйста...

Share this post


Link to post
Share on other sites

18 минут назад, repstosw сказал:

Пролейте свет просвещения в понимании LDPC кодов с жёсткими решениями пожалуйста...

Умножение кодового слова на проверочную матрицу. Не эффективно.

Share this post


Link to post
Share on other sites

В 02.03.2024 в 13:26, repstosw сказал:

Пролейте свет просвещения в понимании LDPC кодов с жёсткими решениями пожалуйста...

Самый известный алгоритм - bit-flipping. Очень быстрый, но для перфорированных кодов я его применить нормально не смог.

С прозрачностью там все нормально. По сравнению с Ридом-Соломоном точно. Код обычно систематический, кодовое слово очень длинное. При кодировании все операции выполняются в двоичном поле (по модулю 2). При декодировании используется разреженная проверочная матрица. Там много нулей и мало единиц. Для того, чтобы в декодере она занимала меньше места ее не хранят целиком - только номера позиций с единицами. В декодере формируются две таблицы. В одной связь между информационными битами и проверочными - какие проверочные зависят от каждого информационного. В другой- наоборот, для каждого проверочного бита хранятся номера бит, которые используются при его вычислении. 

С помощью второй таблицы по кодовому слову вычисляются проверки и суммируются. Если сумма не равна 0, в слове есть ошибки. Дальше алгоритм пытается их исправить. bit-flipping самый тупой, для каждого информационного бита проверяется, сколько проверок, в которых он участвует, не сошлось. Если больше половины, то бит инвертируется. Так проходим по всему слову, потом операция повторяется. Число итераций - до 20, больше в этом методе по моему не имеет смысла.

Кодирование - это отдельная тема. Выполняется путем умножения на порождающую матрицу. Она не разреженная, то есть, реально занимает очень много места. Для конкретных кодов есть варианты формировать строки этой матрицы на лету, путем циклического сдвига. В документации эту матрицу полностью обычно не приводят, поэтому ее построение может оказаться проблемой.

Share this post


Link to post
Share on other sites

Мне кажется, что ldpc с жестким решением практически не выигрывает у бчх со аналогичным кодрейтом, особенно если это простой битфлип. Или я не прав?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...