dvbrcs2TurboDecode

Декодируйте DVB-RCS2-compliant турбокоды

    Описание

    пример

    decoded = dvbrcs2TurboDecode(code,r,permparams) декодирует мягкие биты в code при помощи Цифрового телевидения Второе поколение Возвращают Канал по Спутнику (DVB-RCS2) стандартно-совместимый бинарный дуэтом турбо декодер, как задано в Разделе ETSI EN 301 545-2 V1.2.1 7.3.5.1 [1]. r скорость кода и permparams параметры управления сочетанием что функциональное использование, чтобы чередовать вход мягкие данные о битах.

    decoded = dvbrcs2TurboDecode(code,r,permparams,numiter) задает количество декодирования итераций.

    Примеры

    свернуть все

    Передача Второе поколение Цифрового телевидения Возвращает Канал по Спутнику (DVB-RCS2), кодировала сообщение через канал аддитивного белого Гауссова шума (AWGN), и затем декодируйте его с помощью турбо декодера двоичного файла дуэта DVB-RCS2.

    Задайте длину системы координат, скорость кода и параметры управления сочетанием.

    frameLen = 100*8;         % Payload length in bits
    r = "2/3";
    permParams = [37 0 2 0 2];

    Сгенерируйте вектор-столбец случайных двоичных данных, и затем закодируйте сообщение при помощи турбо энкодера DVB-RCS2.

    msg = randi([0 1],frameLen,1);
    code = dvbrcs2TurboEncode(msg,r,permParams);

    Модулируйте закодированное сообщение, и затем передайте его через канал AWGN.

    modCode = qammod(code,16,'gray', ...
                 'InputType','bit', ...
                 'UnitAveragePower',true);  % 16QAM Modulation
    snrdB = 10;                             % SNR
    receivedCode = awgn(modCode,snrdB);

    Демодулируемый полученный сигнал.

    noiseVar = 10.^(-snrdB/10);                   % Noise variance
    demodLLR = qamdemod(receivedCode,16,'gray', ...
                  'OutputType','llr', ...
                  'UnitAveragePower',true, ...
                  'NoiseVariance',noiseVar);      % 16QAM Demodulation

    Декодируйте демодулируемые мягкие биты при помощи турбо декодера DVB-RCS2.

    decoded = dvbrcs2TurboDecode(-1*demodLLR,r, ...
                                 permParams);

    Отобразите ошибочные биты.

    fprintf('Number of bit errors = %f\n',sum(msg~=decoded))
    Number of bit errors = 0.000000
    

    Вычислите частота ошибок по битам (BER) для Второго поколения Цифрового телевидения Возвращаются, Канал по Спутнику (DVB-RCS2) кодируют - декодируют цепь.

    Задайте длину системы координат, скорость кода и параметры управления сочетанием.

    frameLen = 25*8;            % Payload length in bits
    r = "3/4";
    permParams = [19 13 2 9 15];

    Задайте параметры симуляции.

    snrdB = 6;                  % SNR
    nVar = 10.^(-snrdB/10);     % Noise variance
    errorRate = comm.ErrorRate; % Calculates BER

    Запуститесь кодировать - декодируют цепочечную симуляцию для 10 систем координат и вычисляют BER.

    for frmIdx = 1:10 
        msg = randi([0 1],frameLen,1);
        code = dvbrcs2TurboEncode(msg,r,permParams);
        modCode = qammod(code,4,[0 2 3 1], ...
                     'InputType','bit', ...
                     'UnitAveragePower',true);         % QPSK Modulation
        receivedOut = awgn(modCode, snrdB);
        demodOut = qamdemod(receivedOut,4,[0 2 3 1], ...
                     'OutputType','llr', ...
                     'UnitAveragePower',true, ...
                     'NoiseVariance',nVar);            % QPSK Demodulation
        decoded = dvbrcs2TurboDecode(-1*demodOut,r, ...
                                    permParams);
        errorStats = errorRate(int8(msg),decoded);
    end

    Отобразите частоту ошибок по битам.

    fprintf('Error rate = %f\n',errorStats(1));
    Error rate = 0.003500
    
    fprintf('Number of errors detected = %f\n',errorStats(2));
    Number of errors detected = 7.000000
    
    fprintf('Total bits compared = %f\n',errorStats(3));
    Total bits compared = 2000.000000
    

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

    свернуть все

    Закодированные мягкие биты в виде вектор-столбца.

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

    Скорость кода в виде одного из этих значений.

    • "1/3"

    • "1/2"

    • "2/3"

    • "3/4"

    • "4/5"

    • "5/6"

    • "6/7"

    • "7/8"

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

    Параметры управления сочетанием, что функциональное использование, чтобы чередовать вход мягкие данные о битах в виде вектора из этих пяти элементов в порядке: P, Q 0, Q 1, Q 2, и Q 3. P должен быть в области значений [9, 255], и Q 0, Q 1, Q 2, и Q 3 должен быть в области значений [0, 15].

    Чтобы сгенерировать уникальные interleaver индексы, значение P должно быть взаимно-простым к floor((inputmsglen x r)/2). inputmsglen является длиной входного сигнала перед кодированием.

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

    Количество декодирования итераций в виде положительного целого числа.

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

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

    свернуть все

    Декодируемое сообщение, возвращенное как вектор-столбец с бинарным знаком.

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

    Ссылки

    [1] EN 301 545-2 - V1.2.1. Цифровое телевидение (DVB); DVB Второго поколения Интерактивная Спутниковая система (DVB-RCS2); Часть 2: Нижние уровни для Спутникового стандарта (etsi.org).

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

    Генерация кода C/C++
    Генерация кода C и C++ с помощью MATLAB® Coder™.

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

    Функции

    Объекты

    Введенный в R2021b
    Для просмотра документации необходимо авторизоваться на сайте