|
Код Голея в APCO-25, Проблема декодирования |
|
|
|
Dec 15 2010, 11:45
|
Частый гость
 
Группа: Свой
Сообщений: 179
Регистрация: 27-06-05
Из: Москва
Пользователь №: 6 325

|
В стандарте цифровой радиосвязи APCO-25 используется расширенный код Галея (24, 12) со следующей генераторной матрицей: Код Oct Bin
4000 6165 100000000000 110001110101 2000 3073 010000000000 011000111011 1000 7550 001000000000 111101101000 400 3664 000100000000 011110110100 200 1732 000010000000 001111011010 100 6631 000001000000 110110011001 40 3315 000000100000 011011001101 20 1547 000000010000 001101100111 10 6706 000000001000 110111000110 4 5227 000000000100 101010010111 2 4476 000000000010 100100111110 1 4353 000000000001 100011101011 С помощью этой же матрицы можно получить стандартный код Голея (23, 12) (порождающий полином x^11 + x^10 + x^6 + x^5 + x^4 + x^2 + 1 или 0xC75) путем отбрасывания наименее значимого бита контроля четности. Это проверено и работает. В литературе по помехоустойчивому кодированию приводятся генераторные матрицы для кода Голея (24, 12), которые выглядят иначе (после отбрасывания единичной матрицы) – они симметричны относительно главной диагонали, строки матрицы циклически сдвинуты друг относительно друга. На основе симметричности строится алгоритм арифметического декодирования. Приведенная выше матрица не обладает описанными свойствами. Непонятно: - каким образом она могла быть получена. - как из нее получается циклический код (23, 12), хотя строки не цикличны. - как декодировать расширенный код (24, 12) (таблица из синдромов не устраивает)
|
|
|
|
|
Dec 16 2010, 17:03
|
Частый гость
 
Группа: Свой
Сообщений: 179
Регистрация: 27-06-05
Из: Москва
Пользователь №: 6 325

|
Цитата(Serg76 @ Dec 15 2010, 23:52)  декодируйте алгоритмами с мягким решением (например, Чейза или оптимального посимвольного декодирования) Благодарю за совет. Но надеялся на более простой алгоритм. Модем выдает жесткие решения.
|
|
|
|
|
Dec 17 2010, 07:47
|
Частый гость
 
Группа: Свой
Сообщений: 179
Регистрация: 27-06-05
Из: Москва
Пользователь №: 6 325

|
Цитата(MrYuran @ Dec 17 2010, 11:03)  А почему? Самое простое решение... Всего 4к 24-битных векторов ошибок В DSP крутится еще модем, вокодер, другие кодеры/декодеры и пр. В нем и так все под завязку. Хотелось бы обойтись без таблиц и сохранить место на будущее.
|
|
|
|
|
Jan 13 2011, 14:44
|
Группа: Новичок
Сообщений: 3
Регистрация: 13-01-11
Пользователь №: 62 211

|
to Pavel_I, насколько я помню как раз для расширенного кода Голея есть так называемый алгоритм алгебраического декодирования. Помню, что натыкалась на это в литературе. Если этот вопрос всё ещё интересует, могу в книжках поискать, где я это встречала, и Вам сообщить. to Serg76, А каким образом при декодировании с помощью алгоритма Чейза может не понадобиться таблица синдромов? Насколько я понимаю, генерируются пробные ошибочные векторы, которые добавляются к исходному жёстко декодированному вектору с помощью таблицы синдромов. Ну и потом расстояние считается уже. Поясните, пожалуйста, как синдромов можно избежать?
Сообщение отредактировал натошка - Jan 13 2011, 14:45
|
|
|
|
|
Jan 13 2011, 15:44
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
Цитата(натошка @ Jan 13 2011, 21:44)  to Serg76, А каким образом при декодировании с помощью алгоритма Чейза может не понадобиться таблица синдромов? Насколько я понимаю, генерируются пробные ошибочные векторы, которые добавляются к исходному жёстко декодированному вектору с помощью таблицы синдромов. Ну и потом расстояние считается уже. Поясните, пожалуйста, как синдромов можно избежать? А Вы почитайте повнимательнее суть методов декодирования по алгоритму Чейза. Синдромов избежать нельзя, но для алгоритма Чейза (метод 2 и 3) не надо хранить всю таблицу синдромов. Достаточно хранить проверочную матрицу и уже на ее основе вычислять массив синдромов для всего семейства пробно сгенерированных ошибочных векторов. Их количество будет значительно меньше чем в методе 1, где как раз и надо проверять все комбинации ошибок на расстоянии не более (d-1) от принятого слова. Но большой необходимости в использовании метода 1 нет, так как он лишь незначительно (порядка 0,2 дБ) выигрывает в помехоустойчивости по сравнению с методом 2. А экономия в вычислительных ресурсах налицо. Метод 3 нет смысла тоже использовать, так как он уже сильно проигрывает методам 1 и 2.
|
|
|
|
|
Jan 14 2011, 08:14
|
Группа: Новичок
Сообщений: 3
Регистрация: 13-01-11
Пользователь №: 62 211

|
Цитата - как декодировать расширенный код (24, 12) (таблица из синдромов не устраивает) Морелос-Сарагоса Р. Искусство помехоустойчивого кодирования. Методы, алгоритмы, применение. Глава 2.2.3. Арифметическое декодирование расширенного (24,12,8) кода Голея Цитата для алгоритма Чейза (метод 2 и 3) не надо хранить всю таблицу синдромов. Достаточно хранить проверочную матрицу и уже на ее основе вычислять массив синдромов для всего семейства пробно сгенерированных ошибочных векторов. Я наверное что-то недопонимаю, но почему тогда такая схема(хранить проверочную матрицу и из неё получать по требованию вектор ошибки) не применяется при жёстком декодировании?
|
|
|
|
|
Jan 14 2011, 20:06
|
Частый гость
 
Группа: Свой
Сообщений: 179
Регистрация: 27-06-05
Из: Москва
Пользователь №: 6 325

|
Цитата(натошка @ Jan 14 2011, 14:14)  Морелос-Сарагоса Р. Искусство помехоустойчивого кодирования. Методы, алгоритмы, применение. Глава 2.2.3. Арифметическое декодирование расширенного (24,12,8) кода Голея Дело в том, что порождающая матрица, приведенная мной выше, непохожа на матрицы для (24,12) кода Голея, имеющиеся в литературе. Порождающая матрица должна иметь подматрицу B такую, что B= BTАрифметическое декодирование основанно именно на этом свойстве.
|
|
|
|
|
Jan 15 2011, 08:46
|
Знающий
   
Группа: Свой
Сообщений: 812
Регистрация: 22-01-05
Из: SPb
Пользователь №: 2 119

|
Цитата(Pavel_I @ Jan 15 2011, 02:06)  Дело в том, что порождающая матрица, приведенная мной выше, непохожа на матрицы для (24,12) кода Голея, имеющиеся в литературе. Порождающая матрица должна иметь подматрицу B такую, что B=BT Арифметическое декодирование основанно именно на этом свойстве. 1) Есть только один код Голея. Все варианты коды Голея эквивалентны, т.е. любую другую матрицу можно получить из любой методом перестановки строк и столбцов. Если вы хотите прийти к другой матрице - найдите эти перестановки. 2) Почитал Сарагосу. Паренек называет арифметическим декодированием известный сто лет метод декодирования по двум информационным совокупностям с покрывающими полиномами веса 1. Бог ему судья.  Для этого метода не обязательно иметь B такую, что B= BT. Достаточно самодуальности кода. Просто первую часть алгоритма надо делать , используя B , а вторую часть - по транспонированной B 3) Советую посмотреть в сторону метода вылавливания ошибок (Декодер Меггита).Для циклического кода самый простой вариант. 4) Разговор о Чейзе не имеет отношения к поставленному вопросу.
|
|
|
|
|
Jan 15 2011, 09:44
|
Частый гость
 
Группа: Свой
Сообщений: 179
Регистрация: 27-06-05
Из: Москва
Пользователь №: 6 325

|
Цитата(SKov @ Jan 15 2011, 14:46)  1) Есть только один код Голея. Все варианты коды Голея эквивалентны, т.е. любую другую матрицу можно получить из любой методом перестановки строк и столбцов. Если вы хотите прийти к другой матрице - найдите эти перестановки. Я думал о перестановке строк и столбцов. Но что-то так с ходу не получилось. А ведь еще можно суммировать строки. К книжке Сарагосы имеются исходники. В том числе примеры кодирования-декодирования кодов Голея. Так вот при кодировании расширенным Голеем у меня получается разный результат с теми примерами. В тоже время, если из расширенного кода сделать обычный (23, 12), путем отбрасывания бита четности, то все сходится с Сарагосой. Не пойму, где ошибаюсь. Цитата(SKov @ Jan 15 2011, 14:46)  2) Почитал Сарагосу. Перенек называет арифметическим декодированием известный сто лет метод декодирования по двум информационным совокупностям с покрывающими полиномами веса 1. Бог ему судья.  Для этого метода не обязательно иметь B такую, что B= BT. Достаточно самодуальности кода. Просто первую часть алгоритма надо делать , используя B , а вторую часть - по транспонированной BВ "Error Control Coding" Shu Lin, Daniel J. Costello арифмитическое декодирование выводится именно для самодуального кода с симметричной относительно главной диагонали подматрицы. Но я подумаю над Вашим предложением. Цитата(SKov @ Jan 15 2011, 14:46)  3) Советую посмотреть в сторону метода вылавливания ошибок (Декодер Меггита).Для циклического кода самый простой вариант. Расширенный Голей (24,12) (а не (23,12)), насколько я понимаю, уже не является циклическим.
|
|
|
|
|
Jan 15 2011, 10:37
|
Знающий
   
Группа: Свой
Сообщений: 812
Регистрация: 22-01-05
Из: SPb
Пользователь №: 2 119

|
Цитата(Pavel_I @ Jan 15 2011, 15:44)  Расширенный Голей (24,12) (а не (23,12)), насколько я понимаю, уже не является циклическим. Это пофигу. Вы декодируете укороченный циклический вариант. Если получилось исправление 3 ошибок, то , возможно, было на самом деле 4. Это легко определить по четности или нечетности веса всего исходного расширенного слова с проверкой на четность. Цитата(Serg76 @ Jan 15 2011, 15:22)  Если бы был мягкий выход, то почему бы и нет? Если бы был - тогда конечно. Но в вопросе шла речь об исправлении двоичных ошибок.  Кста, если уж декодировать Голея в полунепрерывном канале, то делать это лучше не по Чейзу, а по Яше Снайдерсу (J.Snyders) с компанией. Они гарантируют максимум правдоподобия с относительно небольшой сложностью. Были работы на эту тему в IEEE IT в середине 90-х. А по Чейзу - субоптимальный алгоритм.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|