exponenta event banner

коммуникация. LDPCDecoder

Декодирование двоичного кода с низкой плотностью проверки на четность (LDPC)

Описание

comm.LDPCDecoder Система object™ использует алгоритм распространения убеждений для декодирования двоичного LDPC-кода, который вводится в объект как выходной сигнал мягкого решения (логарифмическое отношение правдоподобия принятых битов) из демодуляции. Объект декодирует базовые двоичные LDPC-коды, где не предполагается никаких шаблонов в матрице проверки на четность. Дополнительные сведения см. в разделе Декодирование распространения убеждений.

Для декодирования сигнала, кодированного LDPC:

  1. Создать comm.LDPCDecoder и задайте его свойства.

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

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Описание

пример

ldpcdecoder = comm.LDPCDecoder создает двоичный системный объект LDPC-декодера. Этот объект выполняет декодирование LDPC на основе указанной матрицы проверки на четность.

ldpcdecoder = comm.LDPCDecoder(parity) устанавливает ParityCheckMatrix свойство для parity и создает системный объект LDPC-декодера. parity входные данные должны быть указаны в соответствии с описанием ParityCheckMatrix собственность.

ldpcdecoder = comm.LDPCDecoder(___,Name,Value) задает свойства, используя одну или несколько пар имя-значение, в дополнение к входам из любого из предыдущих синтаксисов. Например, comm.LDPCDecoder('DecisionMethod','Soft decision') конфигурирует системный объект LDPC-декодера для декодирования данных с использованием метода мягкого решения и выходных логарифмических отношений правдоподобия типа данных double. Заключите каждое имя свойства в кавычки.

Свойства

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

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

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

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Матрица проверки четности, заданная как разреженная (N - K) -by-N двоично-значная матрица. N - длина принятого сигнала и должна находиться в диапазоне (0, 231). K - длина некодированного сообщения и должна быть меньше N. Последние (N - K) столбцы в матрице проверки на четность должны быть обратимой матрицей в поле Галуа порядка 2 ,gf(2).

Можно также указать матрицу проверки четности как матрицу индекса без разбора двух столбцов. I, которая определяет индексы строк и столбцов 1s в матрице контроля четности так, что sparse(I(:,1),I(:,2),1).

Это свойство принимает числовые типы данных. При установке для этого свойства разреженной двоичной матрицы это свойство также принимает logical тип данных.

Значение по умолчанию использует dvbs2ldpc для конфигурирования разреженной матрицы проверки четности для кодирования LDPC с половинной скоростью, как указано в стандарте DVB-S.2.

Пример: dvbs2ldpc(R,'indices') конфигурирует матрицу индекса для стандарта DVB-S.2, где R - кодовая скорость, и 'indices' задает формат вывода dvbs2ldpc как матрица двойной точности с двумя столбцами, которая определяет индексы строк и столбцов 1s в матрице контроля четности.

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

Формат выходного значения, указанный как одно из следующих значений:

  • 'Information part' - объект выводит вектор K-by-1 столбца, содержащий только информационную часть принятого вектора логарифмического отношения правдоподобия. K - длина некодированного сообщения.

  • 'Whole codeword' - объект выводит вектор столбца N-by-1, содержащий весь вектор логарифмического отношения правдоподобия. N - длина принятого сигнала.

    N и K должны совпадать с размером матрицы контроля четности (N-K) -by-K.

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

Метод принятия решения, используемый для декодирования, указанный как одно из следующих значений:

  • 'Hard decision' - Объект выводит декодированные данные типа данных logical.

  • 'Soft decision' - Объект выводит логарифмические отношения правдоподобия типа данных double.

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

Условие завершения итерации, указанное как одно из следующих значений:

  • 'Maximum iteration count' - Декодирование завершается после количества итераций, указанных MaximumIterationCount собственность.

  • 'Parity check satisfied' - Декодирование прекращается после выполнения всех проверок четности. Если не все проверки на четность выполнены, декодирование завершается после числа итераций, заданного MaximumIterationCount собственность.

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

Максимальное число итераций декодирования, указанное как положительное целое число.

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

Количество выполненных итераций, указанных как false или true. Чтобы вывести число выполненных итераций, задайте для этого свойства значение true.

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

Выходные окончательные проверки четности, указанные как false или true. Чтобы вывести окончательные рассчитанные проверки четности, установите для этого свойства значение true.

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

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

Описание

пример

y = ldpcdecoder(x) декодирует входные данные с использованием кода LDPC на основе матрицы проверки четности по умолчанию.

[y,numiter] = ldpcdecoder(x) возвращает декодированные данные, yи количество выполненных итераций, numiter. Чтобы использовать этот синтаксис, установите NumIterationsOutputPort свойство для true.

[y,parity] = ldpcdecoder(x) возвращает декодированные данные, yи окончательные проверки четности, parity. Чтобы использовать этот синтаксис, установите FinalParityChecksOutputPort свойство для true.

[y,numiter,parity] = ldpcdecoder(x) возвращает декодированные данные, количество выполненных итераций и окончательные проверки четности. Чтобы использовать этот синтаксис, установите NumIterationsOutputPort и FinalParityChecksOutputPort свойства для true.

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

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

Логарифмические отношения правдоподобия, заданные как вектор N-by-1 столбца, содержащий выходной сигнал мягкого решения демодуляции. N - количество битов в кодовом слове LDPC перед модуляцией. Каждый элемент является логарифмическим отношением правдоподобия для принятого бита. Значения элементов более вероятны 0 если логарифмическое отношение правдоподобия положительное. Первые K элементов соответствуют информационной части входного сообщения.

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

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

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

Декодированные данные, возвращаемые в виде вектора столбца. DecisionMethod свойство определяет, выводит ли объект жесткие решения или мягкие решения (логарифмические отношения правдоподобия).

  • Если OutputValue свойство имеет значение 'Information part', выходной сигнал включает в себя только информационную часть принятого вектора логарифмического отношения правдоподобия.

  • Если OutputValue свойство имеет значение 'Whole codeword', выходной сигнал включает в себя весь вектор логарифмического отношения правдоподобия.

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

Число выполненных итераций декодирования, возвращаемых как положительное целое число.

Зависимости

Чтобы включить этот вывод, установите NumIterationsOutputPort свойство для true.

Окончательные проверки четности после декодирования входного LDPC-кода, возвращаемого в виде вектора столбца (N-K) -by-1. N - количество битов в кодовом слове LDPC перед модуляцией. K - длина некодированного сообщения.

Зависимости

Чтобы включить этот вывод, установите FinalParityChecksOutputPort свойство для true.

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

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

release(obj)

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

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

Примеры

свернуть все

Передача кодированного LDPC, модулированного QPSK битового потока через канал AWGN. Демодулируют и декодируют принятый сигнал. Вычислите статистику ошибок для приема некодированных и LDPC-кодированных сигналов.

Определите переменные моделирования. Создание системных объектов для кодера LDPC, декодера LDPC, модулятора QPSK и демодуляторов QPSK.

M = 4; % Modulation order (QPSK)
snr = [0.25,0.5,0.75,1.0,1.25];
numFrames = 10;
ldpcEncoder = comm.LDPCEncoder;
ldpcDecoder = comm.LDPCDecoder;
pskMod = comm.PSKModulator(M,'BitInput',true);
pskDemod = comm.PSKDemodulator(M,'BitOutput',true,...
    'DecisionMethod','Approximate log-likelihood ratio');
pskuDemod = comm.PSKDemodulator(M,'BitOutput',true,...
    'DecisionMethod','Hard decision');
errRate = zeros(1,length(snr));
uncErrRate = zeros(1,length(snr));

Для каждой настройки SNR и всех кадров вычислите статистику ошибок для некодированных и LDPC-кодированных сигналов.

for ii = 1:length(snr)
    ttlErr = 0;
    ttlErrUnc = 0;
    pskDemod.Variance = 1/10^(snr(ii)/10); % Set variance using current SNR
    for counter = 1:numFrames
        data = logical(randi([0 1],32400,1));
        % Transmit and receiver uncoded signal data
        mod_uncSig = pskMod(data);
        rx_uncSig = awgn(mod_uncSig,snr(ii),'measured');
        demod_uncSig = pskuDemod(rx_uncSig);
        numErrUnc = biterr(data,demod_uncSig);
        ttlErrUnc = ttlErrUnc + numErrUnc;
        % Transmit and receive LDPC coded signal data
        encData = ldpcEncoder(data);
        modSig = pskMod(encData);
        rxSig = awgn(modSig,snr(ii),'measured');
        demodSig = pskDemod(rxSig);
        rxBits = ldpcDecoder(demodSig);
        numErr = biterr(data,rxBits);
        ttlErr = ttlErr + numErr;
    end
    ttlBits = numFrames*length(rxBits);
    uncErrRate(ii) = ttlErrUnc/ttlBits;
    errRate(ii) = ttlErr/ttlBits;
end

Постройте график статистики ошибок для некодированных и LDPC-кодированных данных.

plot(snr,uncErrRate,snr,errRate)
legend('Uncoded', 'LDPC coded')
xlabel('SNR (dB)')
ylabel('BER')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Uncoded, LDPC coded.

Алгоритмы

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

Этот объект выполняет LDPC-декодирование с использованием алгоритма распространения убеждений, также известного как алгоритм передачи сообщений.

Ссылки

[1] Галлагер, Роберт Г. Коды проверки четности с низкой плотностью. Кембридж, Массачусетс: MIT Press, 1963.

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

.

См. также

Объекты

Функции

Блоки

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