[n,k] linear code가 cyclic shift해도 codeword를 유지하면, cyclic code라고 한다.
Code는 두 가지 형식으로 표현이 가능하다.
- Vector representation : c=(c0,c1,...,cn−1)
- Polynomial representation : c(x)=c0+c1x+c2x2+...+cn−1xn−1
두 표현 모두 일대일 대응이다.
먼저 Polynomial representation을 가정한다. c(x)에 xkc(x)를 하고 (xn−1)로 mod 연산을 해주면 cyclic을 구현할 수 있게 된다. 쉽게 말하면 다음과 같다.
- a(x)c(x)modxn−1도 codeword이다.
c(x)는 m(x)와 g(x), generator로 생성되며 cyclic code의 g(x)는 smallest degree의 unique한 성질을 가지고 있다. 기본적으로 xn−1 연산이 지원되야 하기 때문에 xn−1g(x)=h(x)로 구현한다.
- c(x)=m(x)g(x)
- g(x)의 degree r= n-k
- g(x)=xn−k+...+a1x+a0, a0!=0
- m(x)=m0+m1x+...+mk−1xk−1
- 따라서, c(x)의 degree = k-1+n-k = n-1
그래서 g(x) 한번 구해보자. n=7이라고 하면 g(x)는 x7−1의 인수 중에 하나이다.
- x7−1=(x+1)(x3+x+1)(x3+x2+1)
만약 x3+x+1을 g(x)로 쓴다고 생각하면, (두 개의 인수를 조합해서 써도 된다.)
- n=7
- r=3=n-k
- 따라서, k=4
그래서 모든 가능한 code 중 일부는 다음과 같다.

그래서 진짜 generator matrix, G는 다음처럼 만든다.

Parity check matrix는 아까 xn−1=g(x)h(x)를 이용해 H를 구한다.
- c(x)h(x)=m(x)g(x)h(x)=m(x)(xn−1)=m(x)xn−m(x)
- m(x)의 degree가 k 였으므로, xk부터는 계산에 포함이 안된다.
- 그래서 syndrome을 구할 수 있게 된다.

그래서 g(x)=x3+x+1이고 n=7이라면, h(x)=x4+x2+x+1이니까 다음처럼 G와 H를 구할 수 있다.

Systematic encoding이란 message가 codeword에 포함되며 n-k bit는 parity bit로 채워지는 것을 말한다. 그래서 m(x)를 n-k shift하고 g(x)로 나누어 몫 Q(x)와 나머지 r(x)를 구한다. 그러고 나서 r(x)를 parity check bit로 이용한다. 그러면 cyclic code를 구현할 수 있다.
- m(x)xn−k=Q(x)g(x)+r(x)
- Q(x)g(x)=r(x)+m(x)xn−k
- 그래서 c(x)=r(x)+m(x)xn−k
(HWJ 설명 들을 예정)



이런식으로 parity-bit를 채우면 된다.
Decoding은 이렇게 한다.


아니 이걸 ?
'Study > Coding and Information Theory' 카테고리의 다른 글
[08] Linear Codes (2) | 2024.06.11 |
---|---|
[07] Channel Capacity (1) | 2024.06.09 |
[06] Data Compression (1) | 2024.06.08 |
SUMMARY (1) | 2024.04.10 |
[05] Entropy Rates (1) | 2024.04.10 |