comm.APPDecoder

Декодируйте сверточный код при помощи метода APP

Описание

APPDecoder системный объект выполняет декодирование по опыту вероятности (APP) сверточного кода.

Декодировать сверточный код при помощи метода APP:

  1. Создайте comm.APPDecoder объект и набор его свойства.

  2. Вызовите объект с аргументами, как будто это была функция.

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?.

Создание

Описание

appDec = comm.APPDecoder создает Систему декодера APP object™, appDec, это декодирует сверточный код с помощью метода APP.

пример

appDec = comm.APPDecoder(Name,Value) свойства наборов с помощью одной или нескольких пар "имя-значение". Например, comm.APPDecoder('Algorithm','True APP') конфигурирует Системный объект, appDec, реализовывать верный по опыту декодирование вероятности. Заключите каждое имя свойства в кавычки.

пример

appDec = comm.APPDecoder(trellis,Name,Value) создает объект декодера APP, appDec, с набором свойств TrellisStructure к trellis.

Свойства

развернуть все

Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и release функция разблокировала их.

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты.

Описание решетки в виде структуры MATLAB®, которая содержит описание решетки для уровня K/N код. K представляет количество входных потоков битов, и N представляет количество выходных потоков битов.

Можно или использовать poly2trellis функция, чтобы создать структуру решетки или создать его вручную. Для больше об этой структуре, см. Описание Решетки Сверточного кода и istrellis функция.

Структура решетки содержит эти поля.

Количество входа символов к энкодеру в виде целого числа равняется 2K, где K является количеством входных потоков битов.

Типы данных: double

Количество символов, которым выход от энкодера в виде целого числа равняется 2N, где N является количеством выходных потоков битов.

Типы данных: double

Количество состояний в энкодере в виде степени 2.

Типы данных: double

Следующие состояния для всех комбинаций текущих состояний и текущих входных параметров в виде матрицы целых чисел. Матричным размером должен быть numStates- 2K.

Типы данных: double

Выходные параметры для всех комбинаций текущих состояний и текущих входных параметров в виде матрицы восьмеричных чисел. Матричным размером должен быть numStates- 2K.

Типы данных: double

Типы данных: struct

Метод завершения закодированной системы координат в виде 'Truncated' или 'Terminated'. Когда вы устанавливаете это свойство на 'Truncated', этот Системный объект принимает что остановки энкодера после кодирования последнего символа во входном кадре. Когда вы устанавливаете это свойство на 'Terminated', этот Системный объект принимает, что энкодер обеспечивает решетку, чтобы закончить каждую систему координат во все-нулевом состоянии путем кодирования дополнительных символов. Если вы используете comm.ConvolutionalEncoder Системный объект, чтобы сгенерировать закодированную систему координат, это значение свойства должно совпадать со значением свойства сверточного энкодера и этого Системного объекта.

Типы данных: char | string

Декодирование алгоритма в виде 'Max*', 'True APP', или 'Max'. Когда вы устанавливаете это свойство на 'True APP', этот Системный объект реализует истинное декодирование APP. Когда вы устанавливаете это свойство на любое другое значение, этот Системный объект использует приближения, чтобы увеличить скорость расчетов. Для получения дополнительной информации см. Алгоритмы.

Типы данных: char | string

Количество масштабирующихся битов в виде целого числа в области значений [0, 8]. Это свойство задает количество битов использование декодера, чтобы масштабировать входные данные, чтобы не терять точность во время расчетов.

Зависимости

Чтобы включить это свойство, установите свойство Algorithm на 'Max*'.

Типы данных: double

Опция, чтобы включить закодированному битному отношению логарифмической правдоподобности (LLR) выход в виде числового или логического 1 TRUE) или 0 ложь). Чтобы отключить второй выход, когда вы вызовете этот Системный объект, установите это свойство на 0 ложь).

Типы данных: логический

Использование

Описание

[LUD,LCD] = appDec(LU,LC) выполняет декодирование APP на последовательности LLRs входных битов энкодера, LU, и последовательность LLRs закодированных битов, LC. Системный объект возвращает LUD и LCD. Эти выходные значения являются обновленными версиями LU и LC, соответственно, и получены на основе информации об энкодере.

LUD = appDec(LU,LC) выполняет декодирование APP с LCD выведите отключенный. Отключить LCD выведите, установите свойство CodedBitLLROutputPort на 0 ложь).

Входные параметры

развернуть все

Последовательность LLRs входных данных энкодера в виде вектор-столбца с действительным знаком. Положительный мягкий вход интерпретирован как логический 1, и отрицательный мягкий вход интерпретирован как логический 0.

Типы данных: single | double

Последовательность LLRs закодированных данных в виде вектор-столбца с действительным знаком. Положительный мягкий вход интерпретирован как логический 1, и отрицательный мягкий вход интерпретирован как логический 0.

Типы данных: single | double

Выходные аргументы

развернуть все

Обновленное значение LU, возвращенного как вектор-столбец с действительным знаком.

Типы данных: single | double

Обновленное значение LC, возвращенного как вектор-столбец с действительным знаком.

Типы данных: single | double

Примечание

Если сверточный код использует алфавит 2n возможные символы, где n является количеством битов на вводимый символ, то LC и LCD длинами вектора является L × n для некоторого положительного целочисленного L. Точно так же, если декодируемые данные используют алфавит 2k символы выхода, где k является количеством битов на выходной символ, затем LU и LUD длинами вектора является L × k.

Этот Системный объект принимает на вход сигнал в виде вектора - столбца или скалярной величины с любым положительным целочисленным значением для L. Для входных параметров переменного размера L может варьироваться во время множественных вызовов.

Функции объекта

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj, используйте этот синтаксис:

release(obj)

развернуть все

stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примеры

свернуть все

Задайте шумовое отклонение и длину системы координат в битах. Создайте сверточный энкодер, модулятор PSK и Системные объекты канала AWGN.

noiseVar = 2e-1;
frameLength = 300;
convEncoder = comm.ConvolutionalEncoder('TerminationMethod','Truncated');
pskMod = comm.PSKModulator('BitInput',true,'PhaseOffset',0);
awgnChan = comm.AWGNChannel('NoiseMethod','Variance', ...
    'Variance',noiseVar);

Создайте сверточный декодер APP, демодулятор PSK и Системные объекты коэффициента ошибок.

appDecoder = comm.APPDecoder(...
    'TrellisStructure',poly2trellis(7,[171 133]), ...
    'Algorithm','True APP','CodedBitLLROutputPort',false);
pskDemod = comm.PSKDemodulator('BitOutput',true,'PhaseOffset',0, ...
    'DecisionMethod','Approximate log-likelihood ratio', ...
    'Variance',noiseVar);     
errRate = comm.ErrorRate;

Передайте модулируемый поток битов convolutionally закодированных 8 PSK через канал AWGN. Демодулируйте полученный сигнал с помощью мягкого решения. Декодируйте демодулируемый сигнал с помощью декодера APP.

for counter = 1:5
     data = randi([0 1],frameLength,1);
     encodedData = convEncoder(data);
     modSignal = pskMod(encodedData);
     receivedSignal = awgnChan(modSignal);
     demodSignal = pskDemod(receivedSignal);
     % The APP decoder assumes a polarization of the soft inputs that is
     % inverse to that of the demodulator soft outputs. Change the sign of
     % demodulated signal.
     receivedSoftBits = appDecoder(zeros(frameLength,1),-demodSignal);
     % Convert from soft-decision to hard-decision.
     receivedBits = double(receivedSoftBits > 0);
     % Count errors
     errorStats = errRate(data,receivedBits);
end

Отобразите информацию о коэффициенте ошибок.

fprintf('Error rate = %f\nNumber of errors = %d\n', ...
     errorStats(1), errorStats(2))
Error rate = 0.000000
Number of errors = 0

Алгоритмы

Этот Системный объект реализует мягкий вход мягкий алгоритм декодирования выхода APP согласно [1] и [2].

'True APP' опция Algorithm свойство реализует декодирование APP согласно уравнениям 20-23 в разделе V из [1]. Получать скорость, 'Max*' и 'Max' значения Algorithm свойство аппроксимированные выражения как logiexp(ai) другими количествами. 'Max' опция использует макс. (ai) в качестве приближения. 'Max*' опция использует макс. (ai) плюс срок коррекции, данный выражением ln(1+exp(|ai1ai|)).

Установка Algorithm свойство к 'Max*' включает NumScalingBits свойство этого Системного объекта. Это свойство обозначает количество битов, которыми этот Системный объект масштабирует данные, которые это обрабатывает внутренне (умножает вход на 2NumScalingBits и делит предварительный выход на тот же фактор). Используйте это свойство постараться не терять точность во время расчетов.

Ссылки

[1] Бенедетто, S., Г. Монторси, Д. Дивсэлэр и Ф. Поллара. "Модуль Мягкого Входа Мягкого Выхода Максимума следующего (MAP), чтобы декодировать параллельные и последовательные каскадные коды". Лаборатория реактивного движения отчет о выполнении работ TDA, 42–127, (ноябрь 1996).

[2] Viterbi, A.J. “Интуитивное Выравнивание и Упрощенное внедрение Декодера MAP для Сверточных кодов”. Журнал IEEE на Выбранных областях в Коммуникациях 16, № 2 (февраль 1998): 260–64. https://doi.org/10.1109/49.661114.

[3] Бенедетто, S. и Г. Монторси. “Эффективность Непрерывных и Blockwise Декодируемые Турбокоды”. Коммуникационные Буквы IEEE 1, № 3 (май 1997): 77–79. https://doi.org/10.1109/4234.585802.

Расширенные возможности

Смотрите также

Функции

Объекты

Блоки

Представленный в R2012a