Цитата(Grizzzly @ Dec 26 2013, 20:02)

Необходимо реализовать декодер Витерби на C под ARM 7, код (133, 171), скорость 200 бит/с. Однако вопросы, скорее, теоретические.
Собираюсь копить в буфере несколько сотен символов, затем их декодировать, потом переходить к следующей порции. При переходе к новому блоку нужно сохранять предыдущее состояние декодера и метрики ребер или же начинать всё с нуля?
Во всех книгах и статьях декодирование начинается из нулевого состояния. Обязательно ли нужна начальная синхронизация декодера или можно обойтись без неё, сразу начав декодирование?
Если кодер инициализируется 0-ми на границах блоков и в конце каждого блока засовываются 0 (хвостовые биты), то начинать нужно в нулевом состоянии. (0-вая метрика = 0, остальные - наименьшее возможное значение). В конце блока трейсбек тоже надо из нулевого состояния начинать. Иначе в битах в начале и конце блока будет больше ошибок, чем в тех, которые в середине.
Если поток данных непрерывный (кодер не переинициализируется), то начинать надо с одинакового значения всех метрик (обычно это минимальное возможное значение). В конце блока трейсбек начинать из состояния с максимальной метрикой. Между блоками метрики при таком раскладе сбрасывать не нужно - нормализовать разве что.
Сообщение отредактировал andyp - Dec 26 2013, 16:24