Aufgaben:Exercise 4.7: Product Code Decoding: Difference between revisions
No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
{{quiz-Header|Buchseite= | {{quiz-Header|Buchseite=Channel_Coding/The_Basics_of_Product_Codes}} | ||
[[File:P_ID3006__KC_A_4_7_v2.png|right|frame| | [[File:P_ID3006__KC_A_4_7_v2.png|right|frame|Syndrome tables of the considered component codes $\mathcal{C}_1$ and $\mathcal{C}_2$]] | ||
We consider, as in the [[Aufgaben:Aufgabe_4.6:_Produktcode–Generierung|"Exercise 4.6"]] a product code based on. | |||
* | * the Hamming code $\rm HC \ (7, \ 4, \ 3)$ ⇒ $\mathcal{C}_1$, | ||
* | * the truncated Hamming code $\rm HC \ (6, \ 3, \ 3)$ ⇒ $\mathcal{C}_2$. | ||
The parity-check matrices of these component codes are: | |||
:$${ \boldsymbol{\rm H}}_1 | :$${ \boldsymbol{\rm H}}_1 | ||
= \begin{pmatrix} | = \begin{pmatrix} | ||
| Line 21: | Line 21: | ||
\end{pmatrix} \hspace{0.05cm}.$$ | \end{pmatrix} \hspace{0.05cm}.$$ | ||
For the sake of completeness, the generator matrices are also given, but they are not needed to solve the exercise: | |||
:$${ \boldsymbol{\rm G}}_1 | :$${ \boldsymbol{\rm G}}_1 | ||
= \begin{pmatrix} | = \begin{pmatrix} | ||
| Line 36: | Line 36: | ||
\end{pmatrix} \hspace{0.05cm}.$$ | \end{pmatrix} \hspace{0.05cm}.$$ | ||
The <i>Hard Decision Decoding</i> of this code is preferably done iteratively, by alternately syndromdecoding all rows and then all columns. See: [[Channel_Coding/The_Basics_of_Product_Codes#Iterative_syndrome_decoding_of_product_codes| "Iterative Syndrome Decoding of Product Codes"]]. | |||
Syndrome decoding of (one-dimensional) block codes has already been covered in the chapter [[Channel_Coding/Decoding_of_Linear_Block_Codes| "Decoding of Linear Block Codes"]] . Here is a brief summary and an adaptation to the two-dimensional case: | |||
* | * From the received word $\underline{y}$ (a row or a column of the given received matrix), the syndrome corresponding to $\underline{s} = \underline{y} \cdot \mathbf{H}_1^{\rm T}$ respectively $\underline{s} = \underline{y} \cdot \mathbf{H}_2^{\rm T}$ formed. | ||
* | *With the result $\underline{s} = \underline{s}_{\mu}$ one can read in above tables the so called side class adder $\underline{e}_{\mu}$ . | ||
* | *The corrected codeword is then $\underline{y} + \underline{e}_{\mu}$. | ||
[[File:P_ID3007__KC_A_4_7zusatz_v1.png|right|frame| | [[File:P_ID3007__KC_A_4_7zusatz_v1.png|right|frame|Predefined coder and receiver matrices]] | ||
<br><br><br> | <br><br><br>The accompanying diagram shows three different coder– and receiver matrices to be analyzed in the subtasks '''(1)''', '''(2)''', and '''(3)''': | ||
* | *We name them constellation $\mathbf{A}$, $\mathbf{B}$ and $\mathbf{C}$. | ||
* | *Marked in yellow are the differences in the reception matrix of constellation $\mathbf{B}$ versus $\mathbf{A}$. | ||
*In | *In both cases, the code matrix consists only of zeros. | ||
* | *The code matrix of $\rm C$ was determined in the [[Aufgaben:Aufgabe_4.6:_Produktcode–Generierung|Aufgabe 4.6]] . | ||
| Line 56: | Line 56: | ||
Hints: | |||
* | *This exercise belongs to the chapter [[Channel_Coding/The_Basics_of_Product_Codes| "Basics of Product Codes"]]. | ||
* | *Reference is made in particular to the page [[Channel_Coding/The_Basics_of_Product_Codes#Iterative_syndrome_decoding_of_product_codes| "Iterative syndrome decoding of product codes"]]. | ||
| Line 64: | Line 64: | ||
=== | ===Questions=== | ||
<quiz display=simple> | <quiz display=simple> | ||
{ | {Is the two-dimensional received matrix $\mathbf{A}$ decodable? | ||
|type="()"} | |type="()"} | ||
- | - Yes, after the first decoding in horizontal direction. | ||
- | - Yes, after the first decoding in vertical direction. | ||
+ | + Yes, after the second decoding in horizontal direction. | ||
- | - Yes, after the second decoding in vertical direction. | ||
- | - No. | ||
{ | {Is the two-dimensional received matrix $\mathbf{B}$ decodable? | ||
|type="()"} | |type="()"} | ||
- | - Yes, after the first decoding in horizontal direction. | ||
- | - Yes, after the first decoding in vertical direction. | ||
+ Yes, after the second decoding in horizontal direction. | |||
- | - Yes, after the second decoding in vertical direction. | ||
- No. | |||
{ | {Is the two-dimensional received matrix $\mathbf{C}$ decodable? Try to find the solution via an equivalence to the exercise '''(1)''' or '''(2)'''. | ||
|type="()"} | |type="()"} | ||
- | - Yes, after the first decoding in horizontal direction. | ||
- | - Yes, after the first decoding in vertical direction. | ||
+ | + Yes, after the second decoding in horizontal direction. | ||
- | - Yes, after the second decoding in vertical direction. | ||
- | - No. | ||
</quiz> | </quiz> | ||
=== | ===Solution=== | ||
{{ML-Kopf}} | {{ML-Kopf}} | ||
'''(1)''' | '''(1)''' The decoding process of the receive matrix $\mathbf{A}$ is illustrated by the following diagram. | ||
[[File:P_ID3008__KC_A_4_7a_v1.png|center|frame| | [[File:P_ID3008__KC_A_4_7a_v1.png|center|frame|Syndrome decoding of the two-dimensional received matrix $\mathbf{A}$.]] | ||
* | * The single errors in rows 1, 3, 5 and 6 are detected by $(7, \ 4, \ 3)$–Hamming code and can be corrected <br> ⇒ green markings in the graphic "1st iteration horizontal". | ||
* | * For the second row results the syndrome | ||
:$$\underline{s} = \underline{y}_2 \hspace{-0.03cm}\cdot \hspace{-0.03cm}{ \boldsymbol{\rm H}}_1^{\rm T} = \left ( 0, \hspace{0.03cm} 1, \hspace{0.03cm}0, \hspace{0.03cm}1, \hspace{0.03cm}0, \hspace{0.03cm}0, \hspace{0.03cm}0 \right ) \cdot \hspace{-0.05cm} | :$$\underline{s} = \underline{y}_2 \hspace{-0.03cm}\cdot \hspace{-0.03cm}{ \boldsymbol{\rm H}}_1^{\rm T} = \left ( 0, \hspace{0.03cm} 1, \hspace{0.03cm}0, \hspace{0.03cm}1, \hspace{0.03cm}0, \hspace{0.03cm}0, \hspace{0.03cm}0 \right ) \cdot \hspace{-0.05cm} | ||
\begin{pmatrix} | \begin{pmatrix} | ||
| Line 114: | Line 114: | ||
= \underline{s}_1 \hspace{0.03cm}.$$ | = \underline{s}_1 \hspace{0.03cm}.$$ | ||
* | * According to the upper syndrome table on the information page, the last bit is thus incorrectly "corrected". Incorrect corrections are entered in red in the upper graphic. | ||
* | * Correspondingly applies to the fourth row: | ||
:$$\underline{s} = \left ( 0, \hspace{0.03cm} 1, \hspace{0.03cm}0, \hspace{0.03cm}0, \hspace{0.03cm}0, \hspace{0.03cm}1, \hspace{0.03cm}0 \right ) \cdot { \boldsymbol{\rm H}}_1^{\rm T} = | :$$\underline{s} = \left ( 0, \hspace{0.03cm} 1, \hspace{0.03cm}0, \hspace{0.03cm}0, \hspace{0.03cm}0, \hspace{0.03cm}1, \hspace{0.03cm}0 \right ) \cdot { \boldsymbol{\rm H}}_1^{\rm T} = | ||
\left ( 1, \hspace{0.03cm} 1, \hspace{0.03cm}0 \right ) | \left ( 1, \hspace{0.03cm} 1, \hspace{0.03cm}0 \right ) | ||
+ \left ( 0, \hspace{0.03cm} 1, \hspace{0.03cm}0 \right )= | + \left ( 0, \hspace{0.03cm} 1, \hspace{0.03cm}0 \right )= | ||
\left ( 1, \hspace{0.03cm} 0, \hspace{0.03cm}0 \right )= \underline{s}_4 \hspace{0.05cm}.$$ | \left ( 1, \hspace{0.03cm} 0, \hspace{0.03cm}0 \right )= \underline{s}_4 \hspace{0.05cm}.$$ | ||
* | * This causes a miscorrection of bit 5. | ||
:* | :* Vertical decoding of columns 1, 3, 4, 5, 6, and 7 is straightforward because there is at most one error per column, which can be corrected by the truncated Hamming code $\rm (6, \ 3, \ 3)$. | ||
:* In | :* In column 2, however, there is a miscorrection of the last bit according to the lower syndrome table. With the transpose of the $\rm (6, \ 3, \ 3)$ parity-check matrix $\mathbf{H}_2$ results namely: | ||
:$$\underline{s}= \underline{y}_{2{\rm S}}\cdot { \boldsymbol{\rm H}}_2^{\rm T} | :$$\underline{s}= \underline{y}_{2{\rm S}}\cdot { \boldsymbol{\rm H}}_2^{\rm T} | ||
= \left ( 0, \hspace{0.03cm} 1, \hspace{0.03cm}0, \hspace{0.03cm}1, \hspace{0.03cm}0, \hspace{0.03cm}0 \right ) \cdot | = \left ( 0, \hspace{0.03cm} 1, \hspace{0.03cm}0, \hspace{0.03cm}1, \hspace{0.03cm}0, \hspace{0.03cm}0 \right ) \cdot | ||
| Line 138: | Line 138: | ||
+ \left ( 1, \hspace{0.03cm} 0, \hspace{0.03cm}0 \right )= | + \left ( 1, \hspace{0.03cm} 0, \hspace{0.03cm}0 \right )= | ||
\left ( 0, \hspace{0.03cm} 0, \hspace{0.03cm}1 \right ) = \underline{s}_1.$$ | \left ( 0, \hspace{0.03cm} 0, \hspace{0.03cm}1 \right ) = \underline{s}_1.$$ | ||
* | * The second horizontal decoding is problem-free, since now at most one error occurs in each row ⇒ <u>Solution suggestion 3</u>. | ||
'''(2)''' | '''(2)''' The following graphic shows the decoding process according to the specifications given by $\mathbf{B}$. | ||
[[File:P_ID3009__KC_A_4_7b_v2.png|center|frame| | [[File:P_ID3009__KC_A_4_7b_v2.png|center|frame|For syndrome decoding of the two-dimensional receive matrix $\mathbf{B}$.]] | ||
Despite only minor modifications compared to $\mathbf{A}$, there are now serious differences: | |||
* | * Due to the first horizontal decoding, the "corrected" rows 2 and 4 now read equally: $(0, \, 1, \, 0, \, 1, \, 0, \, 0, \, 1)$, i.e., the last bit of these rows is miscorrected in each case. | ||
* | * Vertical decoding results in identical columns 2, 4, and 6, namely $(0, \, 1, \, 0, \, 1, \, 0, \, 1)$. After that, there are three ones (or none) in each row and in each column. | ||
* | * This constellation remains for arbitrary further (horizontal or vertical) decodings, because for $d_{\rm min} = 3$ always the syndrome $\underline{s}_0 = (0, \, 0, \, 0)$ results. | ||
The correct solution is <u>proposal 5</u>. | |||
'''(3)''' | '''(3)''' Comparing the coder– and receiver matrices (differences are marked in blue), one can create the error matrix by modulo 2 additions according to the following graph. | ||
[[File:P_ID3010__KC_A_4_7c_v2.png|center|frame| | [[File:P_ID3010__KC_A_4_7c_v2.png|center|frame|Matrix representation of coder, receiver and error pattern]] | ||
The error matrix is equal to the receive matrix of $\mathbf{A}$ ⇒ again, <u>proposed solution 3</u> is correct. | |||
{{ML-Fuß}} | {{ML-Fuß}} | ||
[[Category:Channel Coding: Exercises|^4.2 About the Product Codes^]] | [[Category:Channel Coding: Exercises|^4.2 About the Product Codes^]] | ||
Revision as of 18:58, 31 October 2022

We consider, as in the "Exercise 4.6" a product code based on.
- the Hamming code $\rm HC \ (7, \ 4, \ 3)$ ⇒ $\mathcal{C}_1$,
- the truncated Hamming code $\rm HC \ (6, \ 3, \ 3)$ ⇒ $\mathcal{C}_2$.
The parity-check matrices of these component codes are:
- $${ \boldsymbol{\rm H}}_1
= \begin{pmatrix} 1 &1 &0 &1 &1 &0 &0 \\ 0 &1 &1 &1 &0 &1 &0 \\ 1 &0 &1 &1 &0 &0 &1 \end{pmatrix} \hspace{0.05cm},\hspace{0.8cm} { \boldsymbol{\rm H}}_2 = \begin{pmatrix} 1 &1 &0 &1 &0 &0 \\ 1 &0 &1 &0 &1 &0 \\ 0 &1 &1 &0 &0 &1 \end{pmatrix} \hspace{0.05cm}.$$
For the sake of completeness, the generator matrices are also given, but they are not needed to solve the exercise:
- $${ \boldsymbol{\rm G}}_1
= \begin{pmatrix} 1 &0 &0 &0 &1 &0 &1 \\ 0 &1 &0 &0 &1 &1 &0 \\ 0 &0 &1 &0 &0 &1 &1 \\ 0 &0 &0 &1 &1 &1 &1 \end{pmatrix} \hspace{0.05cm},\hspace{0.8cm} { \boldsymbol{\rm G}}_2 = \begin{pmatrix} 1 &0 &0 &1 &1 &0 \\ 0 &1 &0 &1 &0 &1 \\ 0 &0 &1 &0 &1 &1 \end{pmatrix} \hspace{0.05cm}.$$
The Hard Decision Decoding of this code is preferably done iteratively, by alternately syndromdecoding all rows and then all columns. See: "Iterative Syndrome Decoding of Product Codes".
Syndrome decoding of (one-dimensional) block codes has already been covered in the chapter "Decoding of Linear Block Codes" . Here is a brief summary and an adaptation to the two-dimensional case:
- From the received word $\underline{y}$ (a row or a column of the given received matrix), the syndrome corresponding to $\underline{s} = \underline{y} \cdot \mathbf{H}_1^{\rm T}$ respectively $\underline{s} = \underline{y} \cdot \mathbf{H}_2^{\rm T}$ formed.
- With the result $\underline{s} = \underline{s}_{\mu}$ one can read in above tables the so called side class adder $\underline{e}_{\mu}$ .
- The corrected codeword is then $\underline{y} + \underline{e}_{\mu}$.

The accompanying diagram shows three different coder– and receiver matrices to be analyzed in the subtasks (1), (2), and (3):
- We name them constellation $\mathbf{A}$, $\mathbf{B}$ and $\mathbf{C}$.
- Marked in yellow are the differences in the reception matrix of constellation $\mathbf{B}$ versus $\mathbf{A}$.
- In both cases, the code matrix consists only of zeros.
- The code matrix of $\rm C$ was determined in the Aufgabe 4.6 .
Hints:
- This exercise belongs to the chapter "Basics of Product Codes".
- Reference is made in particular to the page "Iterative syndrome decoding of product codes".
Questions
Solution

- The single errors in rows 1, 3, 5 and 6 are detected by $(7, \ 4, \ 3)$–Hamming code and can be corrected
⇒ green markings in the graphic "1st iteration horizontal". - For the second row results the syndrome
- $$\underline{s} = \underline{y}_2 \hspace{-0.03cm}\cdot \hspace{-0.03cm}{ \boldsymbol{\rm H}}_1^{\rm T} = \left ( 0, \hspace{0.03cm} 1, \hspace{0.03cm}0, \hspace{0.03cm}1, \hspace{0.03cm}0, \hspace{0.03cm}0, \hspace{0.03cm}0 \right ) \cdot \hspace{-0.05cm}
\begin{pmatrix}
1 &0 &1 \\ 1 &1 &0 \\ 0 &1 &1 \\ 1 &1 &1 \\ 1 &0 &0 \\ 0 &1 &0 \\ 0 &0 &1 \end{pmatrix} \hspace{-0.05cm}= \left ( 1, \hspace{0.03cm} 1, \hspace{0.03cm}0 \right ) + \left ( 1, \hspace{0.03cm} 1, \hspace{0.03cm}1 \right )= \left ( 0, \hspace{0.03cm} 0, \hspace{0.03cm}1 \right ) = \underline{s}_1 \hspace{0.03cm}.$$
- According to the upper syndrome table on the information page, the last bit is thus incorrectly "corrected". Incorrect corrections are entered in red in the upper graphic.
- Correspondingly applies to the fourth row:
- $$\underline{s} = \left ( 0, \hspace{0.03cm} 1, \hspace{0.03cm}0, \hspace{0.03cm}0, \hspace{0.03cm}0, \hspace{0.03cm}1, \hspace{0.03cm}0 \right ) \cdot { \boldsymbol{\rm H}}_1^{\rm T} =
\left ( 1, \hspace{0.03cm} 1, \hspace{0.03cm}0 \right ) + \left ( 0, \hspace{0.03cm} 1, \hspace{0.03cm}0 \right )= \left ( 1, \hspace{0.03cm} 0, \hspace{0.03cm}0 \right )= \underline{s}_4 \hspace{0.05cm}.$$
- This causes a miscorrection of bit 5.
- Vertical decoding of columns 1, 3, 4, 5, 6, and 7 is straightforward because there is at most one error per column, which can be corrected by the truncated Hamming code $\rm (6, \ 3, \ 3)$.
- In column 2, however, there is a miscorrection of the last bit according to the lower syndrome table. With the transpose of the $\rm (6, \ 3, \ 3)$ parity-check matrix $\mathbf{H}_2$ results namely:
- $$\underline{s}= \underline{y}_{2{\rm S}}\cdot { \boldsymbol{\rm H}}_2^{\rm T}
= \left ( 0, \hspace{0.03cm} 1, \hspace{0.03cm}0, \hspace{0.03cm}1, \hspace{0.03cm}0, \hspace{0.03cm}0 \right ) \cdot
\begin{pmatrix}
1 &1 &0 \\ 1 &0 &1 \\ 0 &1 &1 \\ 1 &0 &0 \\ 0 &1 &0 \\ 0 &0 &1 \end{pmatrix}= \left ( 1, \hspace{0.03cm} 0, \hspace{0.03cm}1 \right ) + \left ( 1, \hspace{0.03cm} 0, \hspace{0.03cm}0 \right )= \left ( 0, \hspace{0.03cm} 0, \hspace{0.03cm}1 \right ) = \underline{s}_1.$$
- The second horizontal decoding is problem-free, since now at most one error occurs in each row ⇒ Solution suggestion 3.
(2) The following graphic shows the decoding process according to the specifications given by $\mathbf{B}$.

Despite only minor modifications compared to $\mathbf{A}$, there are now serious differences:
- Due to the first horizontal decoding, the "corrected" rows 2 and 4 now read equally: $(0, \, 1, \, 0, \, 1, \, 0, \, 0, \, 1)$, i.e., the last bit of these rows is miscorrected in each case.
- Vertical decoding results in identical columns 2, 4, and 6, namely $(0, \, 1, \, 0, \, 1, \, 0, \, 1)$. After that, there are three ones (or none) in each row and in each column.
- This constellation remains for arbitrary further (horizontal or vertical) decodings, because for $d_{\rm min} = 3$ always the syndrome $\underline{s}_0 = (0, \, 0, \, 0)$ results.
The correct solution is proposal 5.
(3) Comparing the coder– and receiver matrices (differences are marked in blue), one can create the error matrix by modulo 2 additions according to the following graph.

The error matrix is equal to the receive matrix of $\mathbf{A}$ ⇒ again, proposed solution 3 is correct.