Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2019, 09:56   #1
Programmer0
Пользователь
 
Регистрация: 05.05.2015
Сообщений: 55
По умолчанию Декодер Витерби

Здравствуйте.

Написал декодер для сверточного кода памяти 2 и скорости 1/2 (5,7) на языке си. Руководитель поставил под сомнение правильность реализации. Поэтому прошу вас по возможности проверить.

Проект https://yadi.sk/d/XJzfZkqWe3vlzw

Сам пока не разобрался в двух моментах:

1. Нормализация метрик. В литературе приводится метод: "На каждом шаге декодирования значение наименьшей метрики пути сравнивается с порогом Т. Если Мmin > T, то величина Т вычитается из всех накопленных метрик." Можно ли на каждом шаге из всех метрик вычитать минимальную метрику?

2. Выбор из одинаковых метрик. Из литературы: "В этом случае можно просто бросить монетку." Не будет ли тогда ошибкой жесткий выбор (например, если М1 = М2, то всегда выбираем М1) ?

Может, ещё что упустил.
Programmer0 вне форума Ответить с цитированием
Старый 16.05.2019, 15:32   #2
Programmer0
Пользователь
 
Регистрация: 05.05.2015
Сообщений: 55
По умолчанию

Как правильно нормализовывать метрики?
Допустим, всегда передаются нули. Тогда метрика нулевого состояния декодера всегда будет равна нулю, а остальные метрики будут постоянно увеличиваться. И если вычитать минимальную метрику (т.е. ноль) из всех, то переполнения метрик не избежать.
Programmer0 вне форума Ответить с цитированием
Старый 16.05.2019, 15:34   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Так вы ж сами написали надо порог вычитать, а не мин. метрику.
p51x вне форума Ответить с цитированием
Старый 16.05.2019, 15:58   #4
Programmer0
Пользователь
 
Регистрация: 05.05.2015
Сообщений: 55
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Так вы ж сами написали надо порог вычитать, а не мин. метрику.
Цитата:
Сообщение от Programmer0 Посмотреть сообщение
"значение наименьшей метрики пути сравнивается с порогом Т. Если Мmin > T, то величина Т вычитается из всех накопленных метрик."
Если так, то наименьшая метрика = 0, и она никогда не превысит порог.
Programmer0 вне форума Ответить с цитированием
Старый 16.05.2019, 15:58   #5
Programmer0
Пользователь
 
Регистрация: 05.05.2015
Сообщений: 55
По умолчанию

Просто в инете встречается: либо сравнивать с порогом и вычитать порог, либо вычитать минимальную метрику. Но если возникла ситуация с нулём, то ни в том, ни в другом способе нормализация не происходит.

Последний раз редактировалось Programmer0; 16.05.2019 в 16:07.
Programmer0 вне форума Ответить с цитированием
Старый 16.05.2019, 16:10   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Что-то вы путаете. Кроме пороговой нормализации есть модулярная, но там метрики берутся по модулю 2*максимальную_разность_метрик.
И чем вас не устраивает 0? Это ж вроде значит, что вы нашли минимальный путь.
p51x вне форума Ответить с цитированием
Старый 16.05.2019, 16:50   #7
Programmer0
Пользователь
 
Регистрация: 05.05.2015
Сообщений: 55
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
И чем вас не устраивает 0? Это ж вроде значит, что вы нашли минимальный путь.
Если декодер работает в непрерывном режиме с обменом регистрами путей, то мне на каждой итерации декодирования надо вычислить метрики путей, входящих в каждое состояние(сложив метрику пути с расстоянием хэмминга перехода), и оставить выживший путь с наименьшей метрикой. Если на каком-то этапе произойдёт переполнение, то будет два пути с метрикой = 0, и можно выбрать не тот.

Последний раз редактировалось Programmer0; 16.05.2019 в 16:56.
Programmer0 вне форума Ответить с цитированием
Старый 16.05.2019, 16:52   #8
Programmer0
Пользователь
 
Регистрация: 05.05.2015
Сообщений: 55
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Что-то вы путаете. Кроме пороговой нормализации есть модулярная, но там метрики берутся по модулю 2*максимальную_разность_метрик.
И с этим не понял: взять число X по модулю N - это = X mod N ?
Programmer0 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кодер-Декодер Katus Паскаль, Turbo Pascal, PascalABC.NET 2 18.02.2012 03:21
Морзе декодер(с++) jambas92 Помощь студентам 3 14.11.2010 11:32
Сравнение по витерби Joker_kpi Помощь студентам 0 29.05.2010 21:00