Difference between revisions of "Aufgaben:Exercise 1.09Z: Extension and/or Puncturing"

From LNTwww
 
(25 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{quiz-Header|Buchseite=Kanalcodierung/Allgemeine Beschreibung linearer Blockcodes
+
{{quiz-Header|Buchseite=Channel_Coding/General_Description_of_Linear_Block_Codes}}
  
}}
+
[[File:EN_KC_Z_1_9.png|right|frame|Extension and puncturing]]
  
[[File:P_ID2403__KC_Z_1_9.png|right|frame|Zur Erweiterung und Punktierung]]
+
Often you know a code that seems to be suitable for an application,  but its code rate does not exactly match the specifications.
  
Häufig kennt man einen Code, der für eine Anwendung als geeignet erscheint, dessen Coderate aber nicht exakt mit den Vorgaben übereinstimmt.
+
There are several possibilities for rate adaptation:
 +
 
 +
'''Extension''':
 +
<br>Starting from the&nbsp; $(n, \, k)$&nbsp; code whose parity-check matrix&nbsp; $\mathbf{H}$&nbsp; is given,&nbsp; one obtains a&nbsp; $(n+1, \, k)$&nbsp; code by extending the parity-check matrix by one row and one column and adding zeros and ones to the new matrix elements according to the upper graph.&nbsp; So,&nbsp; one adds a new parity bit
 +
:$$x_{n+1} = x_1 \oplus x_2 \oplus ... \hspace{0.05cm} \oplus x_n$$
 +
and thus a new parity-check equation is added,&nbsp; which is considered in&nbsp; $\mathbf{H}\hspace{0.05cm}'$&nbsp; .
 +
 
 +
'''Puncturing''':
 +
<br>According to the figure below,&nbsp; one arrives at a&nbsp; $(n-1, \, k)$&nbsp; code of larger rate by omitting a parity bit and a parity-check equation,&nbsp; which is equivalent to deleting one row and one column from the parity-check matrix&nbsp; $\mathbf{H}$&nbsp;.
 +
 
 +
'''Shortening''':
 +
<br>If an information bit is omitted instead of a parity bit,&nbsp; the result is a&nbsp; $(n-1, \, k-1)$&nbsp; code of smaller rate.
  
Zur Ratenanpassung gibt es verschiedene Möglichkeiten
 
  
*$\color{red}{\boldsymbol{\rm Erweiterung}}$ (englisch ''Extension''): Ausgehend vom $(n, k)$–Code, dessen Prüfmatrix '''H''' gegeben ist, erhält man einen $(n+1, k)$–Code, indem man die Prüfmatrix um eine Zeile und eine Spalte erweitert und die neuen Matrixelemente entsprechend der oberen Grafik mit Nullen und Einsen ergänzt. Man fügt ein neues Prüfbit
+
In this exercise,&nbsp; starting from a&nbsp; $(5, \, 2)$&nbsp; block code
:$$x_{n+1} = x_1 \oplus x_2 \oplus ... \hspace{0.05cm} \oplus x_n$$
+
 
hinzu und damit auch eine neue Prüfgleichung, die in '''H'''' berücksichtigt ist.
+
:$$\mathcal{C} = \{ (0, 0, 0, 0, 0), \hspace{0.3cm} (0, 1, 0, 1, 1), \hspace{0.3cm} (1, 0, 1, 1, 0), \hspace{0.3cm} (1, 1, 1, 0, 1) \}$$
 +
 
 +
the following codes are to constructed and analyzed:
 +
*one&nbsp; $(6, \, 2)$&nbsp; code by single extension,
  
*$\color{red}{\boldsymbol{\rm Punktierung}}$ (englisch ''Puncturing''): Entsprechend der unteren Abbildung kommt man zu einem $(n–1, k)$–Code größerer Rate, wenn man auf ein Prüfbit und eine Prüfgleichung verzichtet, was gleichbedeutend damit ist, aus der Prüfmatrix '''H''' eine Zeile und eine Spalte zu streichen.
+
*one&nbsp; $(7, \, 2)$&nbsp; code by extending it again,
  
*$\color{red}{\boldsymbol{\rm Verkürzung}}$ (englisch Shortening): Verzichtet man anstelle eines Prüfbits auf ein Informationsbit, so ergibt sich ein $(n–1, k–1)$–Code kleinerer Rate.
+
*one&nbsp; $(4, \, 2)$&nbsp; code by puncturing.
  
In dieser Aufgabe sollen ausgehend von einem (5, 2)–Blockcode
 
  
:$$\mathcal{C} = \{ (0, 0, 0, 0, 0) \hspace{0.1cm}, (0, 1, 0, 1, 1) \hspace{0.1cm},(1, 0, 1, 1, 0) \hspace{0.1cm},(1, 1, 1, 0, 1) \}$$
+
The parity-check matrix and the generator matrix of the systematic&nbsp; $(5, \, 2)$&nbsp; code are:
  
folgende Codes konstruiert und analysiert werden:
+
:$${ \boldsymbol{\rm H}}_{(5,\ 2)} = \begin{pmatrix} 1 &0 &1 &0 &0\\ 1 &1 &0 &1 &0\\ 0 &1 &0 &0 &1 \end{pmatrix} \hspace{0.3cm} \Leftrightarrow\hspace{0.3cm} { \boldsymbol{\rm G}}_{(5,\ 2)} = \begin{pmatrix} 1 &0 &1 &1 &0\\ 0 &1 &0 &1 &1 \end{pmatrix} \hspace{0.05cm}.$$
*ein (6, 2)–Code durch einmalige Erweiterung,
 
  
*ein (7, 2)–Code durch nochmalige Erweiterung,
 
  
*ein (4, 2)–Code durch Punktierung.
 
  
  
Die Prüfmatrix und die Generatormatrix des systematischen (5, 2)–Codes lauten:
+
Hints :  
  
:$${ \boldsymbol{\rm H}}_{(5, 2)} = \begin{pmatrix} 1 &0 &1 &0 &0\\ 1 &1 &0 &1 &0\\ 0 &1 &0 &0 &1 \end{pmatrix} \hspace{0.3cm} \Leftrightarrow\hspace{0.3cm} { \boldsymbol{\rm G}}_{(5, 2)} = \begin{pmatrix} 1 &0 &1 &1 &0\\ 0 &1 &0 &1 &1 \end{pmatrix} \hspace{0.05cm}.$$
+
*This exercise belongs to the chapter&nbsp; [[Channel_Coding/General_Description_of_Linear_Block_Codes|"General Description of Linear Block Codes"]].
  
''Hinweis'' :  
+
*In the&nbsp; [[Aufgaben:Exercise_1.09:_Extended_Hamming_Code|"Exercise 1.9"]]&nbsp; it is exemplified how the&nbsp; $(7, \, 4, \, 3)$&nbsp; Hamming code is turned into a&nbsp; $(8, \, 4, \, 4)$&nbsp; code by extension.
  
Die Aufgabe bezieht sich auf das Kapitel  [[Kanalcodierung/Allgemeine_Beschreibung_linearer_Blockcodes| Allgemeine Beschreibung linearer Blockcodes]]. In der [[Aufgaben:1.09_Erweiterter_Hamming–Code|Aufgabe 1.09]] wird beispielhaft gezeigt, wie aus dem (7, 4, 3)–Hamming–Code durch Erweiterung ein (8, 4, 4)–Code entsteht.
 
  
===Fragebogen===
 
  
 +
===Questions===
 
<quiz display=simple>
 
<quiz display=simple>
 
+
{Specify the characteristics of the given&nbsp; $(5, \, 2)$&nbsp; code.
{Geben Sie die Kenngrößen des vorgegebenen (5, 2)–Codes an.
 
 
|type="{}"}
 
|type="{}"}
$\ (5, 2)–{\rm Code}:    R $ = { 0.4 3% }
+
$R \ = \ $ { 0.4 3% }
$\ d_{\rm mim}$={  3 3% }  
+
$d_{\rm min} \ = \ $ {  3 3% }  
  
{Welche Codeworte besitzt der (6, 2)–Code nach Erweiterung?
+
{What code words does&nbsp; the $(6, \, 2)$&nbsp; code have after expansion?
 
|type="[]"}
 
|type="[]"}
- $(0 0 0 0 0 1),   (0 1 0 1 1 0),   (1 0 1 1 0 0),   (1 1 1 0 1 1).$
+
- $(0 0 0 0 0 1), \ (0 1 0 1 1 0), \ (1 0 1 1 0 0), \ (1 1 1 0 1 1).$
+ $(0 0 0 0 0 0),   (0 1 0 1 1 1),   (1 0 1 1 0 1),   (1 1 1 0 1 0).$
+
+ $(0 0 0 0 0 0), \ (0 1 0 1 1 1), \ (1 0 1 1 0 1), \ (1 1 1 0 1 0).$
  
{Geben Sie die Kenngrößen des erweiterten (6, 2)–Codes an.
+
{Specify the characteristics of the extended&nbsp; $(6, \, 2)$&nbsp; code.
 
|type="{}"}
 
|type="{}"}
$\ (6, 2)–{\rm Code}:    R $ = { 0.333 3% }
+
$R \ = \ $ { 0.333 3% }
$\ d_{\rm mim}$={  4 3% }  
+
$d_{\rm min} \ = \ $ {  4 3% }  
  
{Wie lautet die systematische Generatormatrix des (7, 2)–Codes?
+
{What is the systematic generator matrix&nbsp; $\boldsymbol{\rm G}$&nbsp; of the&nbsp; $(7, \, 2)$&nbsp; code?
 
|type="[]"}
 
|type="[]"}
+ Zeile 1 von ${\boldsymbol{\rm G}}1, 0, 1, 1, 0, 1, 0.$
+
+ Row 1 of&nbsp; $\boldsymbol{\rm G} \text{:} \hspace{0.2cm} 1, \, 0, \, 1, \, 1, \, 0, \, 1, \, 0.$
+ Zeile 2 von ${\boldsymbol{\rm G}}0, 1, 0, 1, 1, 1, 0.$
+
+ Row 2 of&nbsp; $\boldsymbol{\rm G} \text{:} \hspace{0.2cm} 0, \, 1, \, 0, \, 1, \, 1, \, 1, \, 0.$
  
{Geben Sie die Kenngrößen des erweiterten (7, 2)–Codes an.
+
{Specify the characteristics of the extended&nbsp; $(7, \, 2)$&nbsp; code.
 
|type="{}"}
 
|type="{}"}
$\ (7, 2)–{\rm Code}:    R $ = { 0.266 3% }
+
$R \ = \ $ { 0.266 3% }
$\ d_{\rm mim}$={  4 3% }  
+
$d_{\rm min} \ = \ $ {  4 3% }  
  
{Welche Aussagen gelten für den (4, 2)–Code (Punktierung des letzten Prüfbits)?
+
{Which statements are true for the&nbsp; $(4, \, 2)$&nbsp; code&nbsp; (puncturing the last parity bit)?
 
|type="[]"}
 
|type="[]"}
+ Die Coderate beträgt nun $R = 2/4 = 0.5.$
+
+ The code rate is now&nbsp; $R = 2/4 = 0.5$.
+ $C_{(4, 2)} = {(0, 0, 0, 0),  (1, 0, 1, 1), (0, 1, 0, 1), (1, 1, 1, 0)}.$
+
+ $C_{(4,\ 2)} = \{(0, 0, 0, 0),  \, (1, 0, 1, 1), \, (0, 1, 0, 1), \, (1, 1, 1, 0)\}$.
- Die Minimaldistanz bleibt gegenüber dem (5, 2)–Code gleich.
+
- The minimum distance remains unchanged from the&nbsp; $(5, \, 2)$ code.
 
 
 
</quiz>
 
</quiz>
  
===Musterlösung===
+
===Solution===
 
{{ML-Kopf}}
 
{{ML-Kopf}}
'''(1)'''&nbsp; Die Rate des (5, 2)–Codes ist $R = 2/5 \underline{ = 0.4}$. Aus dem angegebenen Code erkennt man weiterhin die minimale Distanz $d_{min} \underline{ = 3}$.
+
'''(1)'''&nbsp; The rate of the&nbsp; $(5, \, 2)$&nbsp; code is&nbsp; $R = 2/5 \ \underline{ = 0.4}$.  
 +
*From the given code,&nbsp; we further recognize the minimum distance&nbsp; $d_{\rm min} \ \underline{ = 3}$.
  
'''(2)'''&nbsp; Bei Erweiterung vom (5, 2)–Code zum (6, 2)–Code wird ein weiteres Prüfbit hinzugefügt. Das Codewort hat somit die Form
+
 
 +
 
 +
'''(2)'''&nbsp; When extending from the&nbsp; $(5, \, 2)$&nbsp; code to the&nbsp; $(6, \, 2)$&nbsp; code,&nbsp; another parity bit is added.  
 +
*The code word thus has the form
  
 
:$$\underline{x} = ( x_1, x_2, x_3, x_4, x_5, x_6) = ( u_1, u_2, p_1, p_2, p_{3}, p_4) \hspace{0.05cm}.$$
 
:$$\underline{x} = ( x_1, x_2, x_3, x_4, x_5, x_6) = ( u_1, u_2, p_1, p_2, p_{3}, p_4) \hspace{0.05cm}.$$
  
Für das hinzugekommene Prüfbit muss dabei gelten:
+
*For the added parity bit must be valid:
  
 
:$$p_4 = x_6 = x_1 \oplus x_2 \oplus x_3 \oplus x_4 \oplus x_5 \hspace{0.05cm}.$$
 
:$$p_4 = x_6 = x_1 \oplus x_2 \oplus x_3 \oplus x_4 \oplus x_5 \hspace{0.05cm}.$$
  
Das heißt: Das neue Prüfbit $p_{4}$ wird so gewählt, dass sich in jedem Codewort eine gerade Anzahl von Einsen ergibt  ⇒ <u>Antwort 2</u>. Löst man diese Aufgabe mit der Prüfmatrix, so erhält man
+
*That is,&nbsp; the new parity bit&nbsp; $p_{4}$&nbsp; is chosen to result in an even number of ones in each code word &nbsp; &nbsp; <u>Answer 2</u>.
:$${ \boldsymbol{\rm H}}_{(6,\hspace{0.05cm} 2)} = \begin{pmatrix} 1 &0 &1 &0 &0 &0\\ 1 &1 &0 &1 &0 &0\\ 0 &1 &0 &0 &1 &0\\ 1 &1 &1 &1 &1 &1 \end{pmatrix} \hspace{0.3cm} \Rightarrow\hspace{0.3cm} { \boldsymbol{\rm H}}_{{\rm (6,\hspace{0.05cm} 2)\hspace{0.05cm}sys}} = \begin{pmatrix} 1 &0 &1 &0 &0 &0\\ 1 &1 &0 &1 &0 &0\\ 0 &1 &0 &0 &1 &0\\ 1 &1 &0 &0 &0 &1 \end{pmatrix}$$
+
 +
*Solving this task with the parity-check matrix,&nbsp; we get
 +
:$${ \boldsymbol{\rm H}}_{(6,\hspace{0.05cm} 2)} = \begin{pmatrix} 1 &0 &1 &0 &0 &0\\ 1 &1 &0 &1 &0 &0\\ 0 &1 &0 &0 &1 &0\\ 1 &1 &1 &1 &1 &1 \end{pmatrix} \hspace{0.3cm} \Rightarrow\hspace{0.3cm} { \boldsymbol{\rm H}}_{{\rm (6,\hspace{0.05cm} 2)\hspace{0.05cm}sys}} = \begin{pmatrix} 1 &0 &1 &0 &0 &0\\ 1 &1 &0 &1 &0 &0\\ 0 &1 &0 &0 &1 &0\\ 1 &1 &0 &0 &0 &1 \end{pmatrix}\hspace{0.3cm}
 +
\Rightarrow\hspace{0.3cm} { \boldsymbol{\rm G}}_{{\rm (6,\hspace{0.05cm} 2)\hspace{0.05cm}sys}} = \begin{pmatrix} 1 &0 &1 &1 &0 &1\\ 0 &1 &0 &1 &1 &1 \end{pmatrix}\hspace{0.05cm}.$$
  
:$$\Rightarrow\hspace{0.3cm} { \boldsymbol{\rm G}}_{{\rm (6,\hspace{0.05cm} 2)\hspace{0.05cm}sys}} = \begin{pmatrix} 1 &0 &1 &1 &0 &1\\ 0 &1 &0 &1 &1 &1 \end{pmatrix}\hspace{0.05cm}.$$
+
*The two rows of the generator matrix&nbsp; $\boldsymbol{\rm G}$&nbsp; give two of the four code words,&nbsp; the modulo 2 sum gives the third,&nbsp; and finally the all zero word has to be considered.
  
Die beiden Zeilen der Generatormatrix ${ \boldsymbol{\rm G}}$ ergeben zwei der vier Codeworte, die Modulo–2–Summe das dritte und schließlich ist auch noch das Nullwort zu berücksichtigen.
 
  
'''(3)'''&nbsp; Nach Erweiterung vom (5, 2)–Code auf den (6, 2)–Code
 
*vermindert sich die Rate von $R = 2/5$ auf $R = 2/6 \underline{= 0.333}$,
 
*erhöht sich die Minimaldistanz von $d_{\rm min} = 3$ auf $d_{\rm min}  \underline{= 4}$ .
 
  
 +
'''(3)'''&nbsp; After extension from the&nbsp; $(5, \, 2)$&nbsp; code to the&nbsp; $(6, \, 2)$&nbsp; code.
 +
*decreases the rate from&nbsp; $R = 2/5$&nbsp; to&nbsp; $R = 2/6 \ \underline{= 0.333}$,
  
<u>Allgemein gilt:</u> Erweitert man einen Code, so nimmt die Rate ab und die Minimaldistanz erhöht sich um 1, falls $d_{\rm min}$ vorher ungerade war.
+
*increases the minimum distance from&nbsp; $d_{\rm min} = 3$&nbsp; to&nbsp; $d_{\rm min} \ \underline{= 4}$ .
  
'''(4)'''&nbsp; Bei gleicher Vorgehensweise wie unter (3) erhält man
 
:$${ \boldsymbol{\rm H}}_{(7,\hspace{0.05cm} 2)} = \begin{pmatrix} 1 &0 &1 &0 &0 &0 &0\\ 1 &1 &0 &1 &0 &0 &0\\ 0 &1 &0 &0 &1 &0 &0\\ 1 &1 &0 &0 &0 &1 &0\\ 1 &1 &1 &1 &1 &1 &1 \end{pmatrix} \hspace{0.3cm} \Rightarrow\hspace{0.3cm} { \boldsymbol{\rm H}}_{{\rm (7,\hspace{0.05cm} 2)\hspace{0.05cm}sys}} = \begin{pmatrix} 1 &0 &1 &0 &0 &0 &0\\ 1 &1 &0 &1 &0 &0 &0\\ 0 &1 &0 &0 &1 &0 &0\\ 1 &1 &0 &0 &0 &1 &0\\ 0 &0 &0 &0 &0 &0 &1 \end{pmatrix}$$
 
  
:$$\Rightarrow\hspace{0.3cm} { \boldsymbol{\rm G}}_{{\rm (6,\hspace{0.05cm} 2)\hspace{0.05cm}sys}} = \begin{pmatrix} 1 &0 &1 &1 &0 &1 &0 \\ 0 &1 &0 &1 &1 &1 &0 \end{pmatrix}\hspace{0.05cm}.$$
+
<u>In general:</u> &nbsp; Extending a code,&nbsp; the rate decreases and the minimum distance increases by&nbsp; $1$&nbsp; $($only if&nbsp; $d_{\rm min}$ was odd before$)$.
  
⇒  <u>Beide Antworten</u> sind richtig.
 
  
'''(5)'''&nbsp; Die Rate beträgt nun $R = 2/7 = \underline{0.266}$. Die Minimaldistanz ist weiterhin $d_{\rm min}  \underline{= 4}$ , wie man aus den Codeworten des (7, 2)–Codes ablesen kann:
 
:$$\mathcal{C} = \{ (0, 0, 0, 0, 0, 0, 0), \hspace{0.1cm}(0, 1, 0, 1, 1, 1, 0), \hspace{0.1cm}(1, 0, 1, 1, 0, 1, 0), \hspace{0.1cm}(1, 1, 1, 0, 1, 0, 0) \}\hspace{0.05cm}.$$
 
  
<u>Allgemein gilt:</u> Ist die Minimaldistanz eines Codes geradzahlig, so kann diese durch Erweiterung nicht vergrößert werden.
+
'''(4)'''&nbsp; Using the same procedure as in subtask&nbsp; '''(3)''',&nbsp; we obtain
 +
:$${ \boldsymbol{\rm H}}_{(7,\hspace{0.05cm} 2)} \hspace{-0.05cm}=\hspace{-0.05cm} \begin{pmatrix} 1 &0 &1 &0 &0 &0 &0\\ 1 &1 &0 &1 &0 &0 &0\\ 0 &1 &0 &0 &1 &0 &0\\ 1 &1 &0 &0 &0 &1 &0\\ 1 &1 &1 &1 &1 &1 &1 \end{pmatrix} \hspace{0.15cm} \Rightarrow\hspace{0.15cm} { \boldsymbol{\rm H}}_{{\rm (7,\hspace{0.05cm} 2)\hspace{0.05cm}sys}} \hspace{-0.05cm}=\hspace{-0.05cm} \begin{pmatrix} 1 &0 &1 &0 &0 &0 &0\\ 1 &1 &0 &1 &0 &0 &0\\ 0 &1 &0 &0 &1 &0 &0\\ 1 &1 &0 &0 &0 &1 &0\\ 0 &0 &0 &0 &0 &0 &1 \end{pmatrix}\hspace{0.15cm} \Rightarrow\hspace{0.15cm} { \boldsymbol{\rm G}}_{{\rm (6,\hspace{0.05cm} 2)\hspace{0.05cm}sys}} \hspace{-0.05cm}=\hspace{-0.05cm} \begin{pmatrix} 1 &0 &1 &1 &0 &1 &0 \\ 0 &1 &0 &1 &1 &1 &0 \end{pmatrix}\hspace{0.05cm}.$$
  
 +
⇒&nbsp; <u>Both answers</u>&nbsp; are correct.
  
'''(6)'''&nbsp; Richtig sind die <u>Aussagen 1 und 2</u>. Durch Streichen der letzten Zeile und der letzten Spalte erhält man für die Prüfmatrix bzw. die Generatormatrix (jeweils in systematischer Form):
+
 
 +
 
 +
'''(5)'''&nbsp; The code rate is now&nbsp; $R = 2/7 \ \underline{=0.266}$.
 +
*The minimum distance is still&nbsp; $d_{\rm min} \ \underline{= 4}$,&nbsp; as can be seen from the&nbsp; $(7, \, 2)$&nbsp; code words:
 +
:$$\mathcal{C} = \{ (0, 0, 0, 0, 0, 0, 0), \hspace{0.3cm}(0, 1, 0, 1, 1, 1, 0), \hspace{0.3cm}(1, 0, 1, 1, 0, 1, 0), \hspace{0.3cm}(1, 1, 1, 0, 1, 0, 0) \}\hspace{0.05cm}.$$
 +
 
 +
<u>In general:</u> &nbsp; If the minimum distance of a code is even,&nbsp; it cannot be increased by extension.
 +
 
 +
 
 +
 
 +
'''(6)'''&nbsp; Correct are the&nbsp; <u>statements 1 and 2</u>:
 +
*By crossing out the last row and the last column,&nbsp; we obtain for parity-check matrix and generator matrix,&nbsp; respectively (each in systematic form):
 
:$${ \boldsymbol{\rm H}}_{(4,\hspace{0.05cm} 2)} = \begin{pmatrix} 1 &0 &1 &0 \\ 1 &1 &0 &1 \end{pmatrix} \hspace{0.3cm} \Rightarrow\hspace{0.3cm} { \boldsymbol{\rm G}}_{{\rm (4,\hspace{0.05cm} 2)}} = \begin{pmatrix} 1 &0 &1 &1 \\ 0 &1 &0 &1 \end{pmatrix}\hspace{0.05cm}.$$
 
:$${ \boldsymbol{\rm H}}_{(4,\hspace{0.05cm} 2)} = \begin{pmatrix} 1 &0 &1 &0 \\ 1 &1 &0 &1 \end{pmatrix} \hspace{0.3cm} \Rightarrow\hspace{0.3cm} { \boldsymbol{\rm G}}_{{\rm (4,\hspace{0.05cm} 2)}} = \begin{pmatrix} 1 &0 &1 &1 \\ 0 &1 &0 &1 \end{pmatrix}\hspace{0.05cm}.$$
  
Aus der Generatormatrix ergeben sich die genannten Codeworte $(1, 0, 1, 1), (0, 1, 0, 1), (1, 1, 1, 0)$ als Zeilensumme sowie das Nullwort $(0, 0, 0, 0)$. Die Minimaldistanz dieses Codes ist $d_{\rm min}= 2$ und damit kleiner als die minimale Distanz $d_{\rm min}= 3$ des (5, 2)–Codes.
+
*From the generator matrix we get the mentioned code words&nbsp; $(1, 0, 1, 1), \, (0, 1, 0, 1), \, (1, 1, 1, 0)$&nbsp; as row sum as well as the null word&nbsp; $(0, 0, 0, 0)$.&nbsp;
 +
*The minimum distance of this code is&nbsp; $d_{\rm min}= 2$,&nbsp; which is smaller than the minimum distance&nbsp; $d_{\rm min}= 3$&nbsp; of the&nbsp; $(5, \, 2)$&nbsp; code.
  
<u>Allgemein gilt:</u> Durch Punktierung wird $d_{\rm min}$ um 1 kleiner (wenn sie vorher gerade war) oder sie bleibt gleich. Dies kann man sich verdeutlichen, wenn man durch eine weitere Punktierung (des Prüfbits $p_{2}$) den (3, 2)–Blockcode generiert. Dieser Code
+
 
:$$ \mathcal{C} = \{ (0, 0, 0), \hspace{0.1cm}(0, 1, 1), \hspace{0.1cm}(1, 0, 1), \hspace{0.1cm}(1, 1, 0) \}$$
+
<u>In general:</u> &nbsp; Puncturing makes&nbsp; $d_{\rm min}$&nbsp; smaller by&nbsp; $1$&nbsp; (if it was even before)&nbsp; or it stays the same.
besitzt die gleiche Minimaldistanz $d_{\rm min}= 2$ wie der (4, 2)–Code.
+
 
 +
*This can be illustrated by generating the&nbsp; $(3, \, 2)$&nbsp; block code by another puncturing&nbsp; (of the parity bit $p_{2}$).  
 +
 
 +
*This code&nbsp; $ \mathcal{C} = \{ (0, 0, 0), \hspace{0.3cm}(0, 1, 1), \hspace{0.3cm}(1, 0, 1), \hspace{0.3cm}(1, 1, 0) \}$&nbsp; has the same minimum distance&nbsp; $d_{\rm min}= 2$&nbsp; as the&nbsp; $(4, \, 2)$&nbsp; code.
 
{{ML-Fuß}}
 
{{ML-Fuß}}
  
  
  
[[Category:Aufgaben zu  Kanalcodierung|^1.4 Allgemeine Beschreibung linearer Blockcodes
+
[[Category:Channel Coding: Exercises|^1.4 Linear Block Code Description^]]
 
 
^]]
 

Latest revision as of 16:37, 11 July 2022

Extension and puncturing

Often you know a code that seems to be suitable for an application,  but its code rate does not exactly match the specifications.

There are several possibilities for rate adaptation:

Extension:
Starting from the  $(n, \, k)$  code whose parity-check matrix  $\mathbf{H}$  is given,  one obtains a  $(n+1, \, k)$  code by extending the parity-check matrix by one row and one column and adding zeros and ones to the new matrix elements according to the upper graph.  So,  one adds a new parity bit

$$x_{n+1} = x_1 \oplus x_2 \oplus ... \hspace{0.05cm} \oplus x_n$$

and thus a new parity-check equation is added,  which is considered in  $\mathbf{H}\hspace{0.05cm}'$  .

Puncturing:
According to the figure below,  one arrives at a  $(n-1, \, k)$  code of larger rate by omitting a parity bit and a parity-check equation,  which is equivalent to deleting one row and one column from the parity-check matrix  $\mathbf{H}$ .

Shortening:
If an information bit is omitted instead of a parity bit,  the result is a  $(n-1, \, k-1)$  code of smaller rate.


In this exercise,  starting from a  $(5, \, 2)$  block code

$$\mathcal{C} = \{ (0, 0, 0, 0, 0), \hspace{0.3cm} (0, 1, 0, 1, 1), \hspace{0.3cm} (1, 0, 1, 1, 0), \hspace{0.3cm} (1, 1, 1, 0, 1) \}$$

the following codes are to constructed and analyzed:

  • one  $(6, \, 2)$  code by single extension,
  • one  $(7, \, 2)$  code by extending it again,
  • one  $(4, \, 2)$  code by puncturing.


The parity-check matrix and the generator matrix of the systematic  $(5, \, 2)$  code are:

$${ \boldsymbol{\rm H}}_{(5,\ 2)} = \begin{pmatrix} 1 &0 &1 &0 &0\\ 1 &1 &0 &1 &0\\ 0 &1 &0 &0 &1 \end{pmatrix} \hspace{0.3cm} \Leftrightarrow\hspace{0.3cm} { \boldsymbol{\rm G}}_{(5,\ 2)} = \begin{pmatrix} 1 &0 &1 &1 &0\\ 0 &1 &0 &1 &1 \end{pmatrix} \hspace{0.05cm}.$$



Hints :

  • In the  "Exercise 1.9"  it is exemplified how the  $(7, \, 4, \, 3)$  Hamming code is turned into a  $(8, \, 4, \, 4)$  code by extension.


Questions

1

Specify the characteristics of the given  $(5, \, 2)$  code.

$R \ = \ $

$d_{\rm min} \ = \ $

2

What code words does  the $(6, \, 2)$  code have after expansion?

$(0 0 0 0 0 1), \ (0 1 0 1 1 0), \ (1 0 1 1 0 0), \ (1 1 1 0 1 1).$
$(0 0 0 0 0 0), \ (0 1 0 1 1 1), \ (1 0 1 1 0 1), \ (1 1 1 0 1 0).$

3

Specify the characteristics of the extended  $(6, \, 2)$  code.

$R \ = \ $

$d_{\rm min} \ = \ $

4

What is the systematic generator matrix  $\boldsymbol{\rm G}$  of the  $(7, \, 2)$  code?

Row 1 of  $\boldsymbol{\rm G} \text{:} \hspace{0.2cm} 1, \, 0, \, 1, \, 1, \, 0, \, 1, \, 0.$
Row 2 of  $\boldsymbol{\rm G} \text{:} \hspace{0.2cm} 0, \, 1, \, 0, \, 1, \, 1, \, 1, \, 0.$

5

Specify the characteristics of the extended  $(7, \, 2)$  code.

$R \ = \ $

$d_{\rm min} \ = \ $

6

Which statements are true for the  $(4, \, 2)$  code  (puncturing the last parity bit)?

The code rate is now  $R = 2/4 = 0.5$.
$C_{(4,\ 2)} = \{(0, 0, 0, 0), \, (1, 0, 1, 1), \, (0, 1, 0, 1), \, (1, 1, 1, 0)\}$.
The minimum distance remains unchanged from the  $(5, \, 2)$ code.


Solution

(1)  The rate of the  $(5, \, 2)$  code is  $R = 2/5 \ \underline{ = 0.4}$.

  • From the given code,  we further recognize the minimum distance  $d_{\rm min} \ \underline{ = 3}$.


(2)  When extending from the  $(5, \, 2)$  code to the  $(6, \, 2)$  code,  another parity bit is added.

  • The code word thus has the form
$$\underline{x} = ( x_1, x_2, x_3, x_4, x_5, x_6) = ( u_1, u_2, p_1, p_2, p_{3}, p_4) \hspace{0.05cm}.$$
  • For the added parity bit must be valid:
$$p_4 = x_6 = x_1 \oplus x_2 \oplus x_3 \oplus x_4 \oplus x_5 \hspace{0.05cm}.$$
  • That is,  the new parity bit  $p_{4}$  is chosen to result in an even number of ones in each code word   ⇒   Answer 2.
  • Solving this task with the parity-check matrix,  we get
$${ \boldsymbol{\rm H}}_{(6,\hspace{0.05cm} 2)} = \begin{pmatrix} 1 &0 &1 &0 &0 &0\\ 1 &1 &0 &1 &0 &0\\ 0 &1 &0 &0 &1 &0\\ 1 &1 &1 &1 &1 &1 \end{pmatrix} \hspace{0.3cm} \Rightarrow\hspace{0.3cm} { \boldsymbol{\rm H}}_{{\rm (6,\hspace{0.05cm} 2)\hspace{0.05cm}sys}} = \begin{pmatrix} 1 &0 &1 &0 &0 &0\\ 1 &1 &0 &1 &0 &0\\ 0 &1 &0 &0 &1 &0\\ 1 &1 &0 &0 &0 &1 \end{pmatrix}\hspace{0.3cm} \Rightarrow\hspace{0.3cm} { \boldsymbol{\rm G}}_{{\rm (6,\hspace{0.05cm} 2)\hspace{0.05cm}sys}} = \begin{pmatrix} 1 &0 &1 &1 &0 &1\\ 0 &1 &0 &1 &1 &1 \end{pmatrix}\hspace{0.05cm}.$$
  • The two rows of the generator matrix  $\boldsymbol{\rm G}$  give two of the four code words,  the modulo 2 sum gives the third,  and finally the all zero word has to be considered.


(3)  After extension from the  $(5, \, 2)$  code to the  $(6, \, 2)$  code.

  • decreases the rate from  $R = 2/5$  to  $R = 2/6 \ \underline{= 0.333}$,
  • increases the minimum distance from  $d_{\rm min} = 3$  to  $d_{\rm min} \ \underline{= 4}$ .


In general:   Extending a code,  the rate decreases and the minimum distance increases by  $1$  $($only if  $d_{\rm min}$ was odd before$)$.


(4)  Using the same procedure as in subtask  (3),  we obtain

$${ \boldsymbol{\rm H}}_{(7,\hspace{0.05cm} 2)} \hspace{-0.05cm}=\hspace{-0.05cm} \begin{pmatrix} 1 &0 &1 &0 &0 &0 &0\\ 1 &1 &0 &1 &0 &0 &0\\ 0 &1 &0 &0 &1 &0 &0\\ 1 &1 &0 &0 &0 &1 &0\\ 1 &1 &1 &1 &1 &1 &1 \end{pmatrix} \hspace{0.15cm} \Rightarrow\hspace{0.15cm} { \boldsymbol{\rm H}}_{{\rm (7,\hspace{0.05cm} 2)\hspace{0.05cm}sys}} \hspace{-0.05cm}=\hspace{-0.05cm} \begin{pmatrix} 1 &0 &1 &0 &0 &0 &0\\ 1 &1 &0 &1 &0 &0 &0\\ 0 &1 &0 &0 &1 &0 &0\\ 1 &1 &0 &0 &0 &1 &0\\ 0 &0 &0 &0 &0 &0 &1 \end{pmatrix}\hspace{0.15cm} \Rightarrow\hspace{0.15cm} { \boldsymbol{\rm G}}_{{\rm (6,\hspace{0.05cm} 2)\hspace{0.05cm}sys}} \hspace{-0.05cm}=\hspace{-0.05cm} \begin{pmatrix} 1 &0 &1 &1 &0 &1 &0 \\ 0 &1 &0 &1 &1 &1 &0 \end{pmatrix}\hspace{0.05cm}.$$

⇒  Both answers  are correct.


(5)  The code rate is now  $R = 2/7 \ \underline{=0.266}$.

  • The minimum distance is still  $d_{\rm min} \ \underline{= 4}$,  as can be seen from the  $(7, \, 2)$  code words:
$$\mathcal{C} = \{ (0, 0, 0, 0, 0, 0, 0), \hspace{0.3cm}(0, 1, 0, 1, 1, 1, 0), \hspace{0.3cm}(1, 0, 1, 1, 0, 1, 0), \hspace{0.3cm}(1, 1, 1, 0, 1, 0, 0) \}\hspace{0.05cm}.$$

In general:   If the minimum distance of a code is even,  it cannot be increased by extension.


(6)  Correct are the  statements 1 and 2:

  • By crossing out the last row and the last column,  we obtain for parity-check matrix and generator matrix,  respectively (each in systematic form):
$${ \boldsymbol{\rm H}}_{(4,\hspace{0.05cm} 2)} = \begin{pmatrix} 1 &0 &1 &0 \\ 1 &1 &0 &1 \end{pmatrix} \hspace{0.3cm} \Rightarrow\hspace{0.3cm} { \boldsymbol{\rm G}}_{{\rm (4,\hspace{0.05cm} 2)}} = \begin{pmatrix} 1 &0 &1 &1 \\ 0 &1 &0 &1 \end{pmatrix}\hspace{0.05cm}.$$
  • From the generator matrix we get the mentioned code words  $(1, 0, 1, 1), \, (0, 1, 0, 1), \, (1, 1, 1, 0)$  as row sum as well as the null word  $(0, 0, 0, 0)$. 
  • The minimum distance of this code is  $d_{\rm min}= 2$,  which is smaller than the minimum distance  $d_{\rm min}= 3$  of the  $(5, \, 2)$  code.


In general:   Puncturing makes  $d_{\rm min}$  smaller by  $1$  (if it was even before)  or it stays the same.

  • This can be illustrated by generating the  $(3, \, 2)$  block code by another puncturing  (of the parity bit $p_{2}$).
  • This code  $ \mathcal{C} = \{ (0, 0, 0), \hspace{0.3cm}(0, 1, 1), \hspace{0.3cm}(1, 0, 1), \hspace{0.3cm}(1, 1, 0) \}$  has the same minimum distance  $d_{\rm min}= 2$  as the  $(4, \, 2)$  code.