Перейти к содержанию
    

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

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

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

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

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

Может, ещё что упустил.

Viterbi.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

50 минут назад, Michael358 сказал:

Руководитель поставил под сомнение правильность реализации.

BER не понравился?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 minutes ago, coding4dsp said:

BER не понравился? 

Да.

Кстати, сказал расписать исправляющую способность декодера (какие комбинации ошибочных бит исправляет).

С этим тоже пока не могу разобраться. Из литературы: "минимальное расстояние между всеми путями решётки, называемое иногда свободным расстоянием кода, в данном случае равно 5. Это означает, что любая пара ошибок может быть исправлена..." А в каком промежутке(2 ошибки на сколько бит)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вам BER нравится? Сравнивали с эталоном из матлабовского bertool, например? Методом нормализации целочисленных метрик много: вычитание на каждом шаге минимальной, по модулю-2 и пр. Без нормальзации метрик BER становится правильным?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 minutes ago, coding4dsp said:

А вам BER нравится? Сравнивали с эталоном из матлабовского bertool, например? Методом нормализации целочисленных метрик много: вычитание на каждом шаге минимальной, по модулю-2 и пр. Без нормальзации метрик BER становится правильным?

Не сравнивал. С матлабом дел не имел. Не могу разобраться, как оценить BER своего декодера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 минут назад, Michael358 сказал:

Не сравнивал. С матлабом дел не имел. Не могу разобраться, как оценить BER своего декодера.

https://www.mathworks.com/help/comm/ug/estimate-ber-for-hard-and-soft-decision-viterbi-decoding.html

Качайте, матлаб!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 minutes ago, coding4dsp said:

Придётся. Спасибо.

А как правильно оценить работу своего декодера(с чем сравнивать матлабовские результаты)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По bit error ratio (BER). Если ваш декодер правильно реализован, то графики BER совпадут с матлабовскими.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 minutes ago, coding4dsp said:

По bit error ratio (BER). Если ваш декодер правильно реализован, то графики BER совпадут с матлабовскими.

Т.е. сообразить функцию моделирования шума для своего декодера и посчитать количество ошибок?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не разберусь, как правильно нормализовывать метрики.
Допустим, всегда передаются нули. Тогда метрика нулевого состояния декодера всегда будет равна нулю, а остальные метрики будут постоянно увеличиваться. И если вычитать минимальную метрику (т.е. ноль) из всех, то переполнения метрик не избежать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Michael358

Не разберусь, как правильно нормализовывать метрики.
Допустим, всегда передаются нули. Тогда метрика нулевого состояния декодера всегда будет равна нулю, а остальные метрики будут постоянно увеличиваться. И если вычитать минимальную метрику (т.е. ноль) из всех, то переполнения метрик не избежать.

Можно накапливать метрики путей с коэффициентом меньше, но близким к 1. Разница буквально такая же, как между интегратором и ФНЧ на постоянной составляющей, интегратор имеет бесконечный коэффициент передачи на нулевой частоте, ФНЧ конечный, и переполнений можно избежать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, Michael358 said:

Не разберусь, как правильно нормализовывать метрики.
Допустим, всегда передаются нули. Тогда метрика нулевого состояния декодера всегда будет равна нулю, а остальные метрики будут постоянно увеличиваться. И если вычитать минимальную метрику (т.е. ноль) из всех, то переполнения метрик не избежать.

вы теплое с мягким не путаете? выбираются наиболее вероятные метрики. Для жесткого кодера, это минимальная метрика, для мягкого максимальная. При этом всегда идет сравнение двух и выбор наиболее вероятной. У вас не будет подобной ситуации. 

ЗЫ. Вычитание минимальной это не для настоящих пацанов. Для настоящих пацанов модульная арифметика. Хотя на проце, вычитать наверное проще

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, des00 said:

вы теплое с мягким не путаете? выбираются наиболее вероятные метрики. Для жесткого кодера, это минимальная метрика, для мягкого максимальная. При этом всегда идет сравнение двух и выбор наиболее вероятной. У вас не будет подобной ситуации. 

Ну вот если передаются нули, то на каждом шаге декодирования в нулевое состояние приходит нулевой путь и путь с большей метрикой из другого состояния. Сначала выжившим будет выбираться нулевой путь, а метрики остальных состояний будут расти. Но когда метрика другого состояния переполнится, в этот момент в нулевое состояние придут два пути с метрикой = 0. И можно выбрать неправильный путь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 hours ago, Michael358 said:

Ну вот если передаются нули, то на каждом шаге декодирования в нулевое состояние приходит нулевой путь и путь с большей метрикой из другого состояния. Сначала выжившим будет выбираться нулевой путь, а метрики остальных состояний будут расти. Но когда метрика другого состояния переполнится, в этот момент в нулевое состояние придут два пути с метрикой = 0. И можно выбрать неправильный путь.

Вы руками решётку распишите на длину кодового ограничения. С чего она переполнится? У вас пути сольются, как кодовое ограничение будет, а потом останутся только пути с разницей на длинну кодового ограничения. 

В этом и есть идея витерби, отбрасывать наименее вероятные пути, в которых действительно, метрика, на жёстком решении, будет расти. Но они уже отброшены. 

Ручка, бумага и распишите решётки 3,5,7. Сами все увидите

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...