Поиск:

Ответ в темуСоздание новой темы Создание опроса
> многопороговый декодер 
:(
    Опции темы
iri1989
Дата 19.4.2015, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 19.4.2015

Репутация: нет
Всего: нет



Здравствуйте. У меня закоден однопороговый алгоритм. Как из него сделать многопороговый. Многопороговый алгоритм - это когда от итерации к итерации этот порог динамически меняется. Только вот на какие именно значения он меняется. Помогите пожалуйста!
+ еще надо переделать на мягкие решения.
Код:

void bitflip()
{
// BIT-FLIP decoding

int i,j,l,iter;
int delt,m,aux;
int all_zero; // Flag for syndrome testing
int count;

// -------------------
// INITIALIZATION STEP
// -------------------

// Prior values (used to be probabilities in soft-decision)

for (i=0;i<N;i++)
{
decoded[i] = hard[i];
}

iter = 0; // Counter of iterations

do {

// ---------------------------------------
// HORIZONTAL STEP = BOTTOM-UP PROPAGATION
// ---------------------------------------
//
// Run through the checks m and compute, for each n in N(m) the
// probabilitiy of a check symbol when code symbol is 0 (or 1)
// given that the other code symbols have values 0, 1
//
// Pearl:
// Node x_m computes new "lambda" messages to be sent to its parents
// u_1, u_2, ..., u_K

// Flag to determine if syndrome is all zero
all_zero = 1;

for (i=0; i<M; i++)
{
delt = 0;
for (j=0; j<check_node[i].size; j++)
{
aux = check_node[i].index[j];
delt ^= decoded[aux-1];
}
check_node[i].syndrome = delt;

// Check if anyone of the syndromes is not zero
if (delt) all_zero = 0;
}


// CONTINUE IF A CODEWORD HAS NOT BEEN FOUND
if (!all_zero) {

// ------------------------------------
// VERTICAL STEP = TOP-DOWN PROPAGATION
// ------------------------------------
//
// MacKay:
// Take the computed values of rm0, rm1 and update the values of
// the probabilities qm0, qm1
//
// Pearl:
// Each node u_l computes new "pi" messages to be send to its
// children x_1, x_2, ..., x_J

for (i=0; i<N; i++)
{
count = 0;
for (j=0; j<code_node[i].size; j++)
{
aux = code_node[i].index[j]-1; 

// Compute index "m" of message from children
m = 0;
while ( ( (check_node[aux].index[m]-1) != i )
&& ( m < check_node[aux].size ) ) m++;

if (check_node[aux].syndrome)
count++;
}

// If more that 1/2 checks are unsatisfied, FLIP the BIT
if (count > threshold)
// if (count > (code_node[i].size-1)/2 )
{
decoded[i] ^= 1;
}
}
}

// Increment the number of iterations, and check if maximum reached
iter++;

} while (iter < max_iter);

}
PM MAIL   Вверх
Romikgy
Дата 19.4.2015, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 2
Всего: 146



это вопрос больше имеет отношение к алгоритмам , чем к С++
а по куску кода который вы выгрызли .... понять что делает ваш декодер очень сложно... и тем более добавить какой то новый ф-ционал... вам в раздел алгоритмов!!!!
PS на любом языке программирования можно реализовать только то, что имеет четкий и известный алгоритм!


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
iri1989
Дата 19.4.2015, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 19.4.2015

Репутация: нет
Всего: нет



http://rghost.ru/87MPMtVXZ здесь все работает, декодер исправляет ошибки

Добавлено через 3 секунды
http://rghost.ru/87MPMtVXZ здесь все работает, декодер исправляет ошибки
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0710 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.