Старый 18.04.2015, 20:38   #1   
Форумец
 
Сообщений: 7
Регистрация: 18.04.2015
Возраст: 33

ivan199 вне форума Не в сети
Ищу программиста с++

Здравствуйте. У меня закоден однопороговый алгоритм. Как из него сделать многопороговый. Многопороговый алгоритм - это когда от итерации к итерации этот порог динамически меняется. Только вот на какие именно значения он меняется. Помогите пожалуйста!
+ еще надо переделать на мягкие решения.
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);

}.

Последний раз редактировалось ivan199; 19.04.2015 в 15:55.
  Ответить с цитированием
Старый 19.04.2015, 17:34   #2   
Registered User
 
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56

Hopkroft вне форума Не в сети
ivan199, хоть бы ссылку на доку привёл.
У тебя алгоритм запускается хоть?
где описание переменных?
Код:
decoded[i] = hard[i];
  Ответить с цитированием
Старый 19.04.2015, 18:00   #3   
Форумец
 
Сообщений: 7
Регистрация: 18.04.2015
Возраст: 33

ivan199 вне форума Не в сети
http://rghost.ru/87MPMtVXZ
  Ответить с цитированием
Старый 19.04.2015, 18:48   #4   
Форумец
 
Аватар для Spectator
 
Сообщений: 39,853
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
ivan199, вопрос состоит в том, что за алгоритм?
однопороговый или многопороговый - это уже его свойства, а что он делает?
  Ответить с цитированием
Старый 19.04.2015, 22:26   #5   
highly mean
 
Сообщений: 1,128
Регистрация: 26.05.2011
Возраст: 35

silly вне форума Не в сети
Судя по комментариям, это bit-flipping hard-decision decoding algorithm со страницы http://www.the-art-of-ecc.com/8_Iterative/index.html (ну или модификация этого кода).
  Ответить с цитированием
Старый 19.04.2015, 22:28   #6   
Registered User
 
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56

Hopkroft вне форума Не в сети
silly, опередил я тоже хотел эту ссыль кинуть.

Spectator, ждём нормального ТЗ от автора.
  Ответить с цитированием
Старый 19.04.2015, 22:38   #7   
highly mean
 
Сообщений: 1,128
Регистрация: 26.05.2011
Возраст: 35

silly вне форума Не в сети
Цитата:
Сообщение от Hopkroft Посмотреть сообщение
silly, опередил я тоже хотел эту ссыль кинуть.
Да, я только сейчас заметил, что название можно было посмотреть в приложенном архиве вместо получаса гугления :/
  Ответить с цитированием
Старый 21.04.2015, 20:10   #8   
Форумец
 
Сообщений: 7
Регистрация: 18.04.2015
Возраст: 33

ivan199 вне форума Не в сети
Bit-flipping1_10 - однопороговый, он же "с инвертированием бита"
log1+encoder_10 - логарифмическая версия алгоритма распространения доверия.
BP2_10 - алг. распр. доверия (от англ. Belief Propagation)
В ссылках все это есть:
http://rghost.ru/6lwfsJlYx
http://rghost.ru/7NvYmlQfF
Нужно однопороговый переделать в многопороговый, а потом его соединить с алгоритмом распространения доверия. чтоб декодер при эквивалентной длине лучше исправлял ошибки
  Ответить с цитированием
Старый 24.04.2015, 18:34   #9   
Форумец
 
Сообщений: 7
Регистрация: 18.04.2015
Возраст: 33

ivan199 вне форума Не в сети
Неужели никто не сможет помочь?((
  Ответить с цитированием
Старый 24.04.2015, 18:40   #10   
Registered User
 
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56

Hopkroft вне форума Не в сети
Цитата:
Сообщение от ivan199 Посмотреть сообщение
Неужели никто не сможет помочь?((
У тебя нету чётко описанного алгоритма или просто хоть какой-то нормальной инфы.
Поэтому никто не хочет браться.
  Ответить с цитированием
Старый 24.04.2015, 20:45   #11   
Форумец
 
Сообщений: 7
Регистрация: 18.04.2015
Возраст: 33

ivan199 вне форума Не в сети
есть книга..Морелос-Сарагоса "Искусство помехоустойчивого кодирования", там на стр. 258-269 описаны подробно эти алгоритмы
  Ответить с цитированием
Старый 24.04.2015, 23:24   #12   
Registered User
 
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56

Hopkroft вне форума Не в сети
Цитата:
Сообщение от ivan199 Посмотреть сообщение
есть книга..Морелос-Сарагоса "Искусство помехоустойчивого кодирования", там на стр. 258-269 описаны подробно эти алгоритмы

Комментарий к книге с сайта ozon.ru

Цитата:
В целом книга подробно освещает одно из современных направлений помехоустойчивого кодирования - турбо коды и итерационное их декодирование. Однако не рассмотрены альтернативные модели, а именно "многопороговое декодирование" и "плетённые коды". Это не менее важные и полезные направления теории и практики современных кодов.
Можешь поискать эту книгу
Золотарёв В.В.,Овечкин Г.В. Помехоустойчивое кодирование.Методы и алгоритмы
Там твой метод описан
  Ответить с цитированием
Старый 24.04.2015, 23:56   #13   
Форумец
 
Сообщений: 7
Регистрация: 18.04.2015
Возраст: 33

ivan199 вне форума Не в сети
Есть у меня и книга Золотарёва и Морелоса Сарагосы. http://cyberleninka.ru/article/n/mno...ok-na-chetnost
в ссылке описан многопороговый алгоритм и вот его надо воспроизвести в майкрософт вижуал с++ 2010
  Ответить с цитированием
Старый 25.04.2015, 00:26   #14   
Registered User
 
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56

Hopkroft вне форума Не в сети
ivan199, тебе для диплома или курсяка?
  Ответить с цитированием
Старый 25.04.2015, 00:41   #15   
Форумец
 
Сообщений: 7
Регистрация: 18.04.2015
Возраст: 33

ivan199 вне форума Не в сети
для курсяка
  Ответить с цитированием
Старый 25.04.2015, 00:56   #16   
Registered User
 
Сообщений: 1,114
Регистрация: 23.06.2007
Возраст: 56

Hopkroft вне форума Не в сети
Цитата:
Сообщение от ivan199 Посмотреть сообщение
для курсяка
Купи у чуваков со старшего курса. Децл переделаешь интерфейс и всё.
Как показывает практика, алгоритмистов сейчас мало
Твою теорию врядтли кто ковырять будет.
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind