comm.APPDecoder

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

Описание

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

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

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

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

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

Создание

Описание

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).

Структура решетки сверточного кода в виде структуры, которая содержит описание решетки сверточного кода. Используйте istrellis функционируйте, чтобы проверять, является ли структура допустимой структурой решетки.

Типы данных: 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);

Создайте сверточный декодер, демодулятор 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]. '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), чтобы декодировать параллельные и последовательные каскадные коды”. Отчет о выполнении работ JPL TDA, издание 42-127, ноябрь 1996.

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

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

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

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