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

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

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

 

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

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

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

 

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

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

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

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

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

 

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

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

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


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

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

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


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

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

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

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

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


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

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

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

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

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

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

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

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


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

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

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


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

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

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

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

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

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

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

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

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

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