![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Hirurg2605 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 10.1.2012 Репутация: нет Всего: нет |
Добрый день! Я пишу декодер Кодов Рида-Соломона и из-за разногласий в разных источниках не могу закончить программу в связи со следующей проблемой.
В своей программе я кодирую сообщение стандартным кодером из библиотеки Intel Performance Primitive, а декодирую с помощью функций полиномиальной алгебры из той же библиотеки. Так вот суть проблемы: 1) если считать синдромы как значения полинома принятого кода от значения степеней примитивного элемента альфа поля Галуа (Si = r(ai), i = 0, ..., 2*t-1), то мы получаем нулевые синдромы в случае отсутствия ошибок или ненулевые синдромы с помощью которых находим адекватные позиции от 1-ой до 8-ми ошибок (включительно). Но на этапе нахождения значений ошибок получаются неверные значения; 2) если считать синдромы как значения полинома принятого кода от значения степеней примитивного элемента альфа поля Галуа (Si = r(ai), i = 1, ..., 2*t), то мы получаем ненулевой синдром S2*t в случае отсутствия ошибок, НО при этом декодер корректно находит позиции и значения от 1-ой до 7-ми ошибок (включительно). Однако, если в сообщении допущено 8 ошибок декодер не находит их позиции, так как не может найти корни многочлена локаторов ошибок, как если бы число ошибок превосходило исправляющую способность кода. В моём алгоритме я пробовал сочетать два набора синдромов, первый - для нахождения позиций ошибок, второй - для нахождения их значений, но для случая восьми ошибок значения всё равно вычисляются неверно. Кто-нибудь сталкивался с такой проблемой? Что можно или нужно изменить в алгоритме? Присоединённый файл ( Кол-во скачиваний: 12 ) ![]() |
|||
|
||||
Hirurg2605 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 10.1.2012 Репутация: нет Всего: нет |
Всем спасибо, проблема решена!
![]() Надо было всего лишь изменить синдромный многочлен (вместо s(x) = 1 + x^s1 + x^2*s2 + ... + x^(2*t)*s2*t взять s(x) = x^s1 + x^2*s2 + ... + x^(2*t)*s2*t) и локатор полиномов считать как НОД(s(x),x^(2*t)), а не НОД(s(x),x^(2*t+1)). Может кому-то поможет ![]() |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
в boost.sandbox лежит библиотека для операций с кодами Рида-Соломона. она даже работает.
вот только название немогу вспомнить. склероз совсем замучил ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |