реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> укороченый рида-соломона.. извините за баян..., интересуют подробности
diwil
сообщение Feb 20 2009, 09:35
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107



Люди, кто силен в кодировании подскажите, пожалуйста:
- GF(2^8), (32,28) код укороченый:

Я укороченый код получаю путем тупого забития неиспользуемых символов нулями. При этом процедура кодирования не страдает. Однако, при декодировании наибольшую сложность представляет собой поиск Чина, ибо приходится перебирать 255 корней. Я это обошел некоторым способом, который позволил избежать полного перебора, но получилось как-то не оч красиво - два цикла вместо одного (однако это сильно ускоряет)

За сим два вопроса:
1. Есть ли какие модные процедуры декодирования укороченого кода РС?
2. А какое усиление даст 32,28 код? -- тут я совсем лох. Извините, если глупость спосил.
Go to the top of the page
 
+Quote Post
kons
сообщение Feb 28 2009, 11:54
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 106
Регистрация: 28-09-05
Пользователь №: 9 035



Так в процедуре Ченя достаточно перебрать только те возможные локаторы, которые соответствуют реально имеющимся символам. Разве не экономия?
Go to the top of the page
 
+Quote Post
diwil
сообщение Feb 28 2009, 12:37
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107



Цитата(kons @ Feb 28 2009, 14:54) *
Так в процедуре Ченя достаточно перебрать только те возможные локаторы, которые соответствуют реально имеющимся символам. Разве не экономия?

так и делаю. тока не красиво это ка-то - вот циклы:
CODE


count = 0; /* Number of roots of lambda(x) */
for (i = 1; i <= CHECK_LEN; i++)
{
q = 1;
j = deg_lambda;
do //for (j = deg_lambda; j > 0; j--)
{
r = reg[j] + j;
reg[j] = r;
q ^= Alpha2[reg[j]];
}
while(--j > 0);

if (!q)
{
/* store root (index-form) and error location number */
// root[count] = i;
loc[count] = NN - i;
count++;
}
}

reg[4] = reg[4] + 127;// + 16; // modnn(reg[4] + 223*4); // 127
reg[3] = reg[3] + 159;// + 12; // modnn(reg[3] + 223*3); // 159
reg[2] = reg[2] + 191;// + 8; // modnn(reg[2] + 223*2); // 191
reg[1] = reg[1] + 223;// + 4; // modnn(reg[1] + 223);

for (i = NN-MAX_DATA_LEN+1; i <= NN; i++)
{
q = 1;
j = deg_lambda;
do //for (j = deg_lambda; j > 0; j--)
{
r = reg[j] + j;
reg[j] = r;
q ^= Alpha2[reg[j]];
}
while (--j > 0);

if (!q)
{
/* store root (index-form) and error location number */
// root[count] = i;
loc[count] = NN - i;
count++;
}
}


Go to the top of the page
 
+Quote Post
evg123
сообщение Mar 17 2009, 09:51
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 353
Регистрация: 11-09-06
Из: Минск
Пользователь №: 20 282



Возьмите сайт http://the-art-of-ecc.com
Там примеры реализаций произвольных Ридов-Соломонов, в том числе и укороченных.
Длина кода указывается параметром (декодер сам определяет, укороченный код или нет).
Мы для своих целей брали исходники оттуда, единственно, что оптимизировали - это вручную забивали поля Галуа.
(матрицы символьного и степенного представления поля). Про алгоритм Ченя написано, что кроме перебора пока еще ничего другого не придумано.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 13:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01374 секунд с 7
ELECTRONIX ©2004-2016