Loading [MathJax]/jax/output/HTML-CSS/fonts/TeX/fontdata.js

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

From LNTwww
 
(19 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:P_ID2403__KC_Z_1_9.png|right|frame|Zur Erweiterung und Punktierung]]
+
[[File:EN_KC_Z_1_9.png|right|frame|Extension and puncturing]]
  
Häufig kennt man einen Code, der für eine Anwendung als geeignet erscheint, dessen Coderate aber nicht exakt mit den Vorgaben übereinstimmt.
+
Often you know a code that seems to be suitable for an application,  but its code rate does not exactly match the specifications.
  
Zur Ratenanpassung gibt es verschiedene Möglichkeiten
+
There are several possibilities for rate adaptation:
  
* <b><span style="color: rgb(204, 0, 0);">Erweiterung</span></b> (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
+
'''Extension''':  
 +
<br>Starting from the&nbsp; (n,k)&nbsp; code whose parity-check matrix&nbsp; 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
 
:xn+1=x1x2...xn
 
:xn+1=x1x2...xn
hinzu und damit auch eine neue Prüfgleichung, die in H berücksichtigt ist.
+
and thus a new parity-check equation is added,&nbsp; which is considered in&nbsp; $\mathbf{H}\hspace{0.05cm}'$&nbsp; .
  
* <b><span style="color: rgb(204, 0, 0);">Punktierung</span></b> (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.
+
'''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; H&nbsp;.
  
* <b><span style="color: rgb(204, 0, 0);">Verkürzung</span></b> (englisch Shortening): Verzichtet man anstelle eines Prüfbits auf ein Informationsbit, so ergibt sich ein $(n–1, \, k–1)$–Code kleinerer Rate.
+
'''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.
  
  
In dieser Aufgabe sollen ausgehend von einem (5,2)–Blockcode
+
In this exercise,&nbsp; starting from a&nbsp; (5,2)&nbsp; block code
  
:$$\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) \}$$
+
:$$\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) \}$$
  
folgende Codes konstruiert und analysiert werden:
+
the following codes are to constructed and analyzed:
*ein (6,2)–Code durch einmalige Erweiterung,
+
*one&nbsp; (6,2)&nbsp; code by single extension,
  
*ein (7,2)–Code durch nochmalige Erweiterung,
+
*one&nbsp; (7,2)&nbsp; code by extending it again,
  
*ein (4,2)–Code durch Punktierung.
+
*one&nbsp; (4,2)&nbsp; code by puncturing.
  
  
Die Prüfmatrix und die Generatormatrix des systematischen (5,2)–Codes lauten:
+
The parity-check matrix and the generator matrix of the systematic&nbsp; (5,2)&nbsp; 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}.
+
:$${ \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}.$$
  
''Hinweise'' :
 
* 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===
+
Hints :
 +
 
 +
*This exercise belongs to the chapter&nbsp; [[Channel_Coding/General_Description_of_Linear_Block_Codes|"General Description of Linear Block Codes"]].
 +
 
 +
*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.
 +
 
 +
 
 +
 
 +
===Questions===
 
<quiz display=simple>
 
<quiz display=simple>
{Geben Sie die Kenngrößen des vorgegebenen (5, \, 2)–Codes an.
+
{Specify the characteristics of the given&nbsp; (5, \, 2)&nbsp; code.
 
|type="{}"}
 
|type="{}"}
$(5, \, 2)–{\rm Code} \text{:} \hspace{0.2cm} R \ = \ $ { 0.4 3% }
+
R \ = \ { 0.4 3% }
 
d_{\rm min} \ = \ {  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} \text{:} \hspace{0.2cm} R \ = \ $ { 0.333 3% }
+
R \ = \ { 0.333 3% }
 
d_{\rm min} \ = \ {  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} \text{:} \hspace{0.2cm} 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} \text{:} \hspace{0.2cm} 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} \text{:} \hspace{0.2cm} R \ = \ $ { 0.266 3% }
+
R \ = \ { 0.266 3% }
 
d_{\rm min} \ = \ {  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_{\rm 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 &nbsp;⇒&nbsp; <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}.$$
 +
 
 +
*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.
 +
 
 +
 
  
:$$\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}.$$
+
'''(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}$,
  
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.
+
*increases the minimum distance from&nbsp; $d_{\rm min} = 3$&nbsp; to&nbsp; $d_{\rm min} \ \underline{= 4}$ .
  
  
'''(3)'''&nbsp; Nach Erweiterung vom $(5, \, 2)$–Code auf den $(6, \, 2)$–Code
+
<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$)$.
*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}$ .
 
  
  
<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.
 
  
 +
'''(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}.
  
'''(4)'''&nbsp; Bei gleicher Vorgehensweise wie unter (3) erhält man
+
&nbsp; <u>Both answers</u>&nbsp; are correct.
:$${ \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}.
 
  
⇒&nbsp; <u>Beide Antworten</u> sind richtig.
 
  
 +
'''(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}.
  
'''(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:
+
<u>In general:</u> &nbsp; If the minimum distance of a code is even,&nbsp; it cannot be increased by extension.
:$$\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.
 
  
  
'''(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):
+
'''(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>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.
 +
 
 +
*This can be illustrated by generating the&nbsp; (3, \, 2)&nbsp; block code by another puncturing&nbsp; (of the parity bit p_{2}).  
  
<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
+
*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.
:$$ \mathcal{C} = \{ (0, 0, 0), \hspace{0.1cm}(0, 1, 1), \hspace{0.1cm}(1, 0, 1), \hspace{0.1cm}(1, 1, 0) \}$$
 
besitzt die gleiche Minimaldistanz d_{\rm min}= 2 wie der (4, \, 2)–Code.
 
 
{{ML-Fuß}}
 
{{ML-Fuß}}
  
  
  
[[Category:Aufgaben zu  Kanalcodierung|^1.4 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.