Main Content

ldpcEncode

이진 LDPC 코드 인코딩

R2021b 이후

설명

예제

y = ldpcEncode(informationbits,encodercfg)는 LDPC 인코더 구성 객체 encodercfg로 지정된 LDPC 행렬을 사용하여 입력 메시지 informationbits를 인코딩합니다. 출력 LPDC 코드워드에는 정보 비트와 그 뒤에 이어서 패리티 검사 비트가 포함됩니다. LDPC 코드는 희소 형식의 패리티 검사 행렬과 긴 길이의 블록을 사용하는 선형 오류 제어 코드로, Shannon 한계에 근접한 성능을 달성할 수 있습니다.

y = ldpcEncode(informationbits,encodercfg,OutputFormat=fmt)는 코드워드의 출력 형식을 지정합니다.

예제

모두 축소

프로토타입 행렬과 블록 크기의 파라미터를 초기화하여 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 인코더 구성 객체를 만들고 그 속성을 표시합니다. 구성 객체의 NumInformationBits 속성을 사용하여 난수 정보 비트를 생성하여 LPDC 코드워드의 정보 비트 수를 지정합니다. LDPC 인코더 구성 객체로 지정된 LDPC 코드로 정보 비트를 인코딩합니다.

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

     ParityCheckMatrix: [162x648 logical]

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

infoBits = rand(cfgLDPCEnc.NumInformationBits,1) < 0.5;
codeword = ldpcEncode(infoBits, cfgLDPCEnc);

입력 인수

모두 축소

정보 비트로, 행렬로 지정됩니다. informationbits의 행 개수는 입력값 encodercfgNumInformationBits 속성의 값과 같아야 합니다.

데이터형: single | double | int8 | logical

LPDC 인코더 구성으로, ldpcEncoderConfig 객체로 지정됩니다.

출력 형식으로, 다음 값 중 하나로 지정됩니다.

  • 'whole' — 정보 비트와 패리티 검사 비트가 함께 포함된 전체 LDPC 코드워드를 출력합니다. 함수가 출력하는 행 개수는 입력값 encodercfgBlockLength 속성의 값과 같습니다.

  • 'parity' — 패리티 검사 비트만 출력합니다. 함수가 출력하는 행 개수는 입력값 encodercfgNumParityCheckBits 속성의 값과 같습니다.

출력 인수

모두 축소

인코딩된 코드워드로, 행렬로 반환됩니다. 인코딩 연산 시 함수는 입력값 informationbits의 각 열을 개별적으로 인코딩합니다. 이 함수는 informationbits에서 0이 아닌 값을 1로 처리합니다. 인코딩은 원래 정보 비트는 [1:K,:] 부분행렬에 채워지고 패리티 검사 비트는 ((1:K + 1):end,:) 부분행렬에 채워지는 체계적인 코드워드 행렬을 계산합니다. K는 입력값 encodercfgNumInformationBits 속성과 같습니다.

  • 출력 형식이 'whole'인 경우 출력값에 정보 비트와 패리티 검사 비트가 함께 있는 전체 LDPC 코드워드가 포함됩니다. 함수가 출력하는 행 개수는 입력값 encodercfgBlockLength 속성의 값과 같습니다.

  • 출력 형식이 'parity'인 경우 출력값에 패리티 검사 비트만 포함됩니다. 함수가 출력하는 행 개수는 입력값 encodercfgNumParityCheckBits 속성과 같습니다.

출력 형식을 설정하는 방법에 대한 자세한 내용은 OutputFormat 인수를 참조하십시오. 출력값은 입력값 informationbits와 데이터형이 같습니다.

참고 문헌

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

[2] Gallager, Robert G. Low-Density Parity-Check Codes. Cambridge, MA: MIT Press, 1963.

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

버전 내역

R2021b에 개발됨