ldpcDecoderConfig

Создайте настройку декодера LDPC

Описание

ldpcDecoderConfig объект является объектом настройки для ldpcDecode функция. Объект задает имеющую малую плотность проверку четности (LDPC) матричные и свойства только для чтения предоставить информацию о сконфигурированной матрице.

Создание

Описание

decodercfg = ldpcDecoderConfig создает объект настройки декодера LDPC, который задает уровень 5/6 LDPC код от WLAN 802.11™ стандарт [1].

пример

decodercfg = ldpcDecoderConfig(H) конфигурирует выходной параметр объекта ParityCheckMatrix свойство H.

decodercfg = ldpcDecoderConfig(H,alg) конфигурирует выходной параметр объекта ParityCheckMatrix свойство к H и Algorithm свойство к alg.

decodercfg = ldpcDecoderConfig(encodercfg) свойства наборов на основе входа ldpcEncoderConfig объект настройки, encodercfg.

decodercfg = ldpcDecoderConfig(encodercfg,alg) свойства наборов на основе входа ldpcEncoderConfig объект настройки, encodercfg, и устанавливает Algorithm свойство к alg.

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

Свойства

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

Матрица проверки четности в виде разреженного логического (NK)-by-N матрица, где N> K> 0. N является длиной блока кодовой комбинации LDPC. K является количеством информационных битов в кодовой комбинации LDPC. Значением по умолчанию является матрица проверки четности уровня 5/6 LDPC код с длиной блока 648, как задано в стандарте WLAN 802.11 [1]. А именно, значением по умолчанию является разреженное логическое 108 648 матричный H выведите ldpcQuasiCyclicMatrix функция в этом коде.

P = [
 17 13  8 21  9  3 18 12 10  0  4 15 19  2  5 10 26 19 13 13  1  0 -1 -1
  3 12 11 14 11 25  5 18  0  9  2 26 26 10 24  7 14 20  4  2 -1  0  0 -1
 22 16  4  3 10 21 12  5 21 14 19  5 -1  8  5 18 11  5  5 15  0 -1  0  0
  7  7 14 14  4 16 16 24 24 10  1  7 15  6 10 26  8 18 21 14  1 -1 -1  0
 ];
blockSize = 27;
H = ldpcQuasiCyclicMatrix(blockSize,P);

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

LDPC декодирование алгоритма в виде одного из этих значений:

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

Это свойство доступно только для чтения.

Длина блока кодовой комбинации LDPC (N) в виде положительной скалярной величины. N равняется количеству столбцов в матрице проверки четности.

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

Это свойство доступно только для чтения.

Количество информационных битов в кодовой комбинации LDPC (K) в виде положительной скалярной величины. K равняется количеству столбцов матрицы проверки четности минус количество строк матрицы проверки четности.

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

Это свойство доступно только для чтения.

Количество битов проверки четности в кодовой комбинации LDPC (NK) в виде положительной скалярной величины. NK равняется количеству строк в матрице проверки четности.

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

Это свойство доступно только для чтения.

Скорость кода кода LDPC в виде положительной скалярной величины, которая равна NumInformationBits/BlockLength.

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

Это свойство доступно только для чтения.

Количество строк на слой в виде положительной скалярной величины. Это свойство указывает на количество строк на слой, когда вы используете многоуровневый алгоритм декодирования. А именно, это свойство является самым большим целым числом, таким образом что ParityCheckMatrix может быть равномерно разделен в последовательные подматрицы в который самое большее один 1 существует в любом столбце в любой из этих подматриц.

ParityCheckMatrix(1:NumRowsPerLayer,:)

ParityCheckMatrix((NumRowsPerLayer + 1):2*NumRowsPerLayer,:)

ParityCheckMatrix((2*NumRowsPerLayer + 1):3*NumRowsPerLayer,:)

...

ParityCheckMatrix((конец - NumRowsPerLayer + 1): конец

Зависимости

Включить этому набору свойств Algorithm свойство к 'layered-bp', 'norm-min-sum', или 'offset-min-sum'.

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

Примеры

свернуть все

Инициализируйте параметры для прототипной матрицы и размера блока, чтобы сконфигурировать уровень 3/4 LDPC код, заданный в IEEE 802.11. Создайте матрицу проверки четности при помощи ldpcQuasiCyclicMatrix функция.

P = [
    16 17 22 24  9  3 14 -1  4  2  7 -1 26 -1  2 -1 21 -1  1  0 -1 -1 -1 -1
    25 12 12  3  3 26  6 21 -1 15 22 -1 15 -1  4 -1 -1 16 -1  0  0 -1 -1 -1
    25 18 26 16 22 23  9 -1  0 -1  4 -1  4 -1  8 23 11 -1 -1 -1  0  0 -1 -1
     9  7  0  1 17 -1 -1  7  3 -1  3 23 -1 16 -1 -1 21 -1  0 -1 -1  0  0 -1
    24  5 26  7  1 -1 -1 15 24 15 -1  8 -1 13 -1 13 -1 11 -1 -1 -1 -1  0  0
     2  2 19 14 24  1 15 19 -1 21 -1  2 -1 24 -1  3 -1  2  1 -1 -1 -1 -1  0
    ];
blockSize = 27;
pcmatrix = ldpcQuasiCyclicMatrix(blockSize,P);

Создайте объекты настройки энкодера и декодера LDPC, отобразив их свойства.

cfgLDPCEnc = ldpcEncoderConfig(pcmatrix)
cfgLDPCEnc = 
  ldpcEncoderConfig with properties:

     ParityCheckMatrix: [162x648 logical]

   Read-only properties:
           BlockLength: 648
    NumInformationBits: 486
    NumParityCheckBits: 162
              CodeRate: 0.7500

cfgLDPCDec = ldpcDecoderConfig(pcmatrix)
cfgLDPCDec = 
  ldpcDecoderConfig with properties:

     ParityCheckMatrix: [162x648 logical]
             Algorithm: 'bp'

   Read-only properties:
           BlockLength: 648
    NumInformationBits: 486
    NumParityCheckBits: 162
              CodeRate: 0.7500

Передайте LDPC-закодированный, модулируемый QPSK поток битов через канал AWGN. Демодулируйте сигнал, декодируйте полученные кодовые комбинации, и затем считайте битовые ошибки. Используйте вложил for циклы, чтобы обработать несколько настроек SNR и систем координат с и без кодирования прямого исправления ошибок (FEC) LDPC передаваемых данных.

M = 4;
maxnumiter = 10;
snr = [20 6 3];
numframes = 10;
qpskmod = comm.PSKModulator(M,'BitInput',true);
qpskmod2 = comm.PSKModulator(M);

ber = comm.ErrorRate;
ber2 = comm.ErrorRate;

for ii = 1:length(snr)
    qpskdemod = comm.PSKDemodulator(M,'BitOutput',true, ...
        'DecisionMethod','Approximate log-likelihood ratio', ...
        'Variance',1/10^(snr(ii)/10));
    qpskdemod2 = comm.PSKDemodulator(M);
    for counter = 1:numframes
        data = randi([0 1],cfgLDPCEnc.NumInformationBits,1,'int8');
        % Transmit and receive with LDPC coding
        encodedData = ldpcEncode(data,cfgLDPCEnc);
        modSignal = qpskmod(encodedData);
        receivedSignal = awgn(modSignal,snr(ii));
        demodSignal = qpskdemod(receivedSignal);
        receivedBits = ldpcDecode(demodSignal,cfgLDPCDec,maxnumiter);
        errStats = ber(data,receivedBits);
        % Transmit and receive with no LDPC coding
        noCoding = qpskmod2(data);
        rxNoCoding = awgn(noCoding,snr(ii));
        rxBitsNoCoding = qpskdemod2(rxNoCoding);
        errStatsNoCoding = ber2(data,int8(rxBitsNoCoding));
    end
    fprintf(['SNR = %2d\n   Coded: Error rate = %1.2f, ' ...
        'Number of errors = %d\n'], ...
        snr(ii),errStats(1),errStats(2))
    fprintf(['Noncoded: Error rate = %1.2f, ' ...
        'Number of errors = %d\n'], ...
        errStatsNoCoding(1),errStatsNoCoding(2))
end
SNR = 20
   Coded: Error rate = 0.00, Number of errors = 0
Noncoded: Error rate = 0.00, Number of errors = 0
SNR =  6
   Coded: Error rate = 0.00, Number of errors = 0
Noncoded: Error rate = 0.02, Number of errors = 196
SNR =  3
   Coded: Error rate = 0.02, Number of errors = 353
Noncoded: Error rate = 0.07, Number of errors = 976

Алгоритмы

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

LDPC, декодирующий использование одного из этих алгоритмов передачи сообщений.

Ссылки

[1] Станд. IEEE 802.11-2016 (Версия Станд. IEEE 802.11-2012). "Часть 11: Беспроводное Среднее управление доступом (MAC) LAN и Физический уровень (PHY) Технические требования". Стандарт IEEE для Информационных технологий — Телекоммуникации и обмен информацией между системами. Локальные сети и городские компьютерные сети — Конкретные требования.

[2] Gallager, Роберт Г. Имеющие малую плотность коды с проверкой четности. Кембридж, MA: нажатие MIT, 1963.

[3] Hocevar, D.E. "Уменьшаемая архитектура декодера сложности через многоуровневое декодирование кодов LDPC". В Семинаре IEEE по Системам Обработки сигналов, 2004. ГЛОТКИ 2004. doi: 10.1109/SIPS.2004.1363033

[4] Чен, Jinghu, Р.М. Таннер, К. Джонс и Ян Ли. "Улучшенные алгоритмы декодирования суммы min для неправильных кодов LDPC". В Продолжениях. Международный Симпозиум по Теории информации, 2005. ISIT 2005. doi: 10.1109/ISIT.2005.1523374

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

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

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

Функции

Объекты

Введенный в R2021b