Skip to content

Commit 4333349

Browse files
authored
Create README.md
Some theory basics.
1 parent e43d246 commit 4333349

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

commpy/channelcoding/README.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Channel codes basics
2+
3+
## Main idea
4+
5+
The main idea of the channel codes can be formulated as following thesises:
6+
- **noise immunity** of the signal should be increased;
7+
- **redundant bits** are added for *error detection* and *error correction*;
8+
- some special algorithms (<u>coding schemes</u>) are used for this.
9+
10+
![](https://raw.githubusercontent.com/kirlf/CSP/master/FEC/assets/FECmainidea1.png)
11+
12+
The fact how "further" a certain algorithm divides the code words among themselves, and determines how strongly it protects the signal from noise [1, p.23].
13+
14+
![](https://habrastorage.org/webt/n7/o4/bs/n7o4bsf7_htlv10gsatc-yojbrq.png)
15+
16+
In the case of binary codes, the minimum distance between all existing code words is called ** Hamming distance ** and is usually denoted **dmin**:
17+
18+
<img src="https://raw.githubusercontent.com/kirlf/CSP/master/FEC/assets/FECexamp2.png" alt="examp2" width="400"/>
19+
20+
21+
## Classification
22+
23+
Some classification is needed to talk about those or other implementations of the encoding and decoding algorithms.
24+
25+
First, the channel codes:
26+
- can only [*detect*](https://en.wikipedia.org/wiki/Cyclic_redundancy_check) the presence of errors
27+
- and they can also [*correct* errors](https://en.wikipedia.org/wiki/Error_correction_code).
28+
29+
Secondly, codes can be classified as **block** and **continuous**:
30+
31+
![](https://raw.githubusercontent.com/kirlf/CSP/master/FEC/assets/BlockCont.png)
32+
33+
## Net bit rate
34+
Redundancy of the channel coding schemes influences (decreases) bit rate. Actually, it is the cost for the noiseless increasing.
35+
**Net bit** rate concept is usually used:
36+
37+
<img src="https://raw.githubusercontent.com/kirlf/CSP/master/FEC/assets/nebitrate.png" alt="net" width="500"/>
38+
39+
To change the code rate (k/n) of the block code dimensions of the Generator matrix can be changed:
40+
![blockcoderate](https://raw.githubusercontent.com/kirlf/CSP/master/FEC/assets/coderateblock.png)
41+
42+
To change the coderate of the continuous code, e.g. [convolutional code](https://github.com/kirlf/CSP/blob/master/FEC/Convolutional%20codes%20intro.md), **puncturing** procedure is frequently used:
43+
44+
![punct](https://raw.githubusercontent.com/kirlf/CSP/master/FEC/assets/punct.png)
45+
46+
### Reference
47+
48+
[1] Moon, Todd K. "Error correction coding." Mathematical Methods and Algorithms. Jhon Wiley and Son (2005).

0 commit comments

Comments
 (0)