Декодируйте сверточный код с помощью метода по опыту вероятности (APP)
Сверточная подбиблиотека Выявления ошибок и Исправления
Блок APP Decoder выполняет декодирование по опыту вероятности (APP) сверточного кода.
Вход L (u) представляет последовательность логарифмических вероятностей входных битов энкодера, в то время как вход L (c) представляет последовательность логарифмических вероятностей битов кода. Выходные параметры L (u) и L (c) являются обновленными версиями этих последовательностей, на основе информации об энкодере.
Если сверточный код использует алфавит 2n возможные символы, L этого блока (c), векторы имеют длину Q *n для некоторого положительного целочисленного Q. Точно так же, если декодируемые данные используют алфавит 2k возможных выходных символов, то L этого блока (u) векторы имеет длину Q *k.
Этот блок принимает на вход сигнал в виде вектора - столбца или скалярной величины с любым положительным целым числом для Q.
Если вам только нужен вход L (c) и вывод L (u), можно присоединить блок Simulink Ground к входу L (u) и блок Terminator Simulink® к выводу L (c).
Этот блок принимает типы данных double
и single
. Оба входных параметров, однако, должны иметь тот же тип. Тип выходных данных совпадает с типом входных данных.
Чтобы задать сверточный энкодер, который произвел закодированный вход, используйте параметр Trellis structure. Этот параметр является структурой MATLAB®, формат которой описан в Описании Решетки Сверточного кода. Можно использовать это поле параметра двумя способами:
Если у вас есть переменная в рабочем пространстве MATLAB, которое содержит структуру решетки, введите ее имя как параметр Trellis structure. Этот путь предпочтителен, потому что он заставляет Simulink проводить меньше времени, обновляя схему в начале каждой симуляции, по сравнению с использованием, описанным затем.
Если вы хотите задать энкодер с помощью его продолжительности ограничения, полиномы генератора, и возможно полиномы связи обратной связи, используют команду poly2trellis
в поле Trellis structure. Например, чтобы использовать энкодер с продолжительностью ограничения 7, полиномы генератора кода 171 и 133 (в восьмеричных числах), и связь обратной связи 171 (в восьмеричном), устанавливают параметр Trellis structure на
poly2trellis(7,[171 133],171)
Чтобы указать, как энкодер обрабатывает решетку вначале и конец каждого кадра, устанавливает параметр Termination method или на Truncated
или на Terminated
. Опция Truncated
указывает, что энкодер сбрасывает ко все-нулевому состоянию в начале каждого кадра. Опция Terminated
указывает, что энкодер обеспечивает решетку, чтобы закончить каждый кадр во все-нулевом состоянии. Если вы используете блок Convolutional Encoder с набором параметра Operation mode к Truncated (reset every frame)
, используйте опцию Truncated
в этом блоке. Если вы используете блок Convolutional Encoder с набором параметра Operation mode к Terminate trellis by appending bits
, используйте опцию Terminated
в этом блоке.
Можно управлять частью алгоритма декодирования с помощью параметра Algorithm. Опция True APP
реализует по опыту декодирование вероятности согласно уравнениям 20–23 в разделе V из [1]. Чтобы получить скорость, и Max*
и опции Max
аппроксимируют выражения как
другими количествами. Опция Max
использует макс. (ай) в качестве приближения, в то время как опция Max*
использует макс. (ай) плюс срок исправления, данный
[3].
Опция Max*
включает параметр Scaling bits в диалоговом окне. Этот параметр является количеством битов, которыми блок масштабирует данные, которые это обрабатывает внутренне (умножает вход на (2^numScalingBits)
и делит предварительный вывод на тот же фактор). Используйте этот параметр, чтобы не терять точность во время вычислений.
Структура MATLAB, которая содержит описание решетки сверточного энкодера.
Или Truncated
или Terminated
. Этот параметр указывает, как сверточный энкодер обрабатывает решетку вначале и конец кадров.
Или True APP
, Max*
или Max
.
Целое число между 0 и 8, который указывает тем, сколько битов декодер масштабирует данные во избежание проигрывающей точности. Это поле активно только, когда Algorithm установлен в Max*
.
Установите этот флажок, чтобы отключить вторичный блок вывод, L (c).
Для примера с помощью этого блока смотрите, что Итеративное Декодирует Последовательно Конкатенированного примера Сверточного кода.
[1] Бенедетто, S., Г. Монторси, Д. Дивсэлэр и Ф. Поллара, “Модуль Мягкого Входа Мягкого Вывода Максимума следующей (MAP), чтобы декодировать параллельные и последовательные каскадные коды”, отчет о выполнении работ JPL TDA, издание 42-127, ноябрь 1996.
[2] Бенедетто, Серджио и Гидо Монторси, “Производительность непрерывных и Blockwise декодируемые турбокоды”. Коммуникационные буквы IEEE, издание 1, май 1997, 77–79.
[3] Viterbi, Эндрю Дж., “Интуитивное выравнивание и упрощенное внедрение декодера MAP для сверточных кодов”, журнал IEEE на выбранных областях в коммуникациях, издании 16, февраль 1998, 260–264.