主要内容

ldpcEncoderConfig

创建 LDPC 编码器配置

自 R2021b 起

说明

ldpcEncoderConfig 对象是用于 ldpcEncode 函数的配置对象。该对象指定低密度奇偶校验 (LDPC) 矩阵和只读属性,以提供有关所配置矩阵的信息。

创建对象

描述

encodercfg = ldpcEncoderConfig 创建一个 LDPC 编码器配置对象,该对象指定来自 WLAN 802.11™ 标准 [1] 的码率 5/6 LDPC 码。

encodercfg = ldpcEncoderConfig(H) 配置输出对象,将 ParityCheckMatrix 属性设置为 H

示例

encodercfg = ldpcEncoderConfig(decodercfg) 基于输入 ldpcDecoderConfig 配置对象 decodercfg 设置属性。

当以该对象作为输入调用 ldpcEncode 函数时,执行对象设置的验证。

属性

全部展开

奇偶校验矩阵,指定为稀疏逻辑 (N - KN 矩阵,其中 N > K > 0。奇偶校验矩阵的最后 N - K 行必须在 2 阶伽罗华域中可逆。N 是 LDPC 码字块长度。K 是 LDPC 码字中的信息位数。默认值是在 WLAN 802.11 标准 [1] 中指定的块长度为 648 的码率 5/6 LDPC 码的奇偶校验矩阵。具体来说,默认值是在以下代码中由 ldpcQuasiCyclicMatrix 函数输出的稀疏逻辑 108×648 矩阵 H

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

数据类型: logical

此 属性 为只读。

LDPC 码字的块长度 (N),指定为正标量。N 等于奇偶校验矩阵的列数。

数据类型: double

此 属性 为只读。

LDPC 码字中的信息位数 (K),指定为正标量。K 等于奇偶校验矩阵的列数减去奇偶校验矩阵的行数。

数据类型: double

此 属性 为只读。

LDPC 码字中的奇偶校验位数 (N - K),指定为正标量。N - K 等于奇偶校验矩阵的行数。

数据类型: double

此 属性 为只读。

LDPC 码的码率,指定为正标量,等于 NumInformationBits/BlockLength

数据类型: double

LDPC 编码器配置对象,以结构体形式返回。

数据类型: struct

示例

全部折叠

初始化原型矩阵和块大小的参数,以配置在 IEEE® 802.11 中指定的码率 3/4 LDPC 码。使用 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: [162×648 logical]

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

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

     ParityCheckMatrix: [162×648 logical]
             Algorithm: 'bp'

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

通过 AWGN 信道发射 LDPC 编码、M-QAM 调制的位流。解调信号,解码接收的码字,然后对误码进行计数。使用 for 循环处理多个 SNR 设置,分别对发射数据进行使用和不使用 LDPC 前向纠错 (FEC) 编码。

M = 64;
maxnumiter = 10;
snr = [0.5 1 1.5 2];
numframes = 20000;

for ii = 1:length(snr)
    data = randi([0 1],cfgLDPCEnc.NumInformationBits,numframes,'int8');

    % Transmit and receive with LDPC coding
    encodedData = ldpcEncode(data,cfgLDPCEnc);
    modSignal = qammod(encodedData,M,InputType='bit');
    [rxsig, noisevar] = awgn(modSignal,snr(ii));
    llrOut = qamdemod(rxsig,M, ...
        OutputType='approxllr', ... % Or use 'llr' for exact but slower LLR calculation
        NoiseVariance=noisevar);
    rxbits = ldpcDecode(llrOut,cfgLDPCDec,maxnumiter);
    fprintf(['SNR = %2.1f\n   Coded: Error rate = %1.6f, ' ...
        'Number of errors = %d\n'], ...
        snr(ii),nnz(data~=rxbits)/numel(data),nnz(data~=rxbits));

    % Transmit and receive with no LDPC coding
    noCoding = qammod(data,M,InputType='bit');
    rxNoCoding = awgn(noCoding,snr(ii));
    rxBitsNoCoding = qamdemod(rxNoCoding,M,OutputType='bit');

    fprintf(['Noncoded: Error rate = %1.6f, ' ...
        'Number of errors = %d\n\n'], ...
        nnz(data~=rxBitsNoCoding)/numel(data),nnz(data~=rxBitsNoCoding))
end
SNR = 0.5
   Coded: Error rate = 0.000441, Number of errors = 4282
Noncoded: Error rate = 0.039045, Number of errors = 379515
SNR = 1.0
   Coded: Error rate = 0.000062, Number of errors = 604
Noncoded: Error rate = 0.032813, Number of errors = 318941
SNR = 1.5
   Coded: Error rate = 0.000003, Number of errors = 27
Noncoded: Error rate = 0.027001, Number of errors = 262450
SNR = 2.0
   Coded: Error rate = 0.000000, Number of errors = 0
Noncoded: Error rate = 0.021778, Number of errors = 211686

参考

[1] IEEE® Std 802.11-2020 (Revision of IEEE Std 802.11-2016). "Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications." IEEE Standard for Information technology — Telecommunications and information exchange between systems. Local and metropolitan area networks — Specific requirements.

扩展功能

全部展开

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

版本历史记录

在 R2021b 中推出