Difference between revisions of "Aufgaben:Exercise 3.8: Rate Compatible Punctured Convolutional Codes"

From LNTwww
 
(24 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{quiz-Header|Buchseite=Kanalcodierung/Codebeschreibung mit Zustands– und Trellisdiagramm}}
+
{{quiz-Header|Buchseite=Channel_Coding/Code_Description_with_State_and_Trellis_Diagram}}
  
[[File:P_ID2708__KC_A_3_8.png|right|frame|RCPC–Punktierungsmatrizen]]
+
[[File:P_ID2708__KC_A_3_8.png|right|frame|RCPC puncturing matrices]]
Eine wichtige Anwendung für [[Kanalcodierung/Codebeschreibung_mit_Zustands%E2%80%93_und_Trellisdiagramm#Punktierte_Faltungscodes| punktierte Faltungscodes]] sind die <i>Rate Compatible Punctured Convolutional Codes</i> (oder kurz RCPC&ndash;Codes), die von [[Biografien_und_Bibliografien/Lehrstuhlinhaber_des_LNT#Prof._Dr.-Ing._Dr.-Ing._E.h._Joachim_Hagenauer_.281993-2006.29|Joachim Hagenauer]]  in [Hag88] vorgeschlagen wurden. Ausgehend von einem Muttercode $\mathcal{C}_0$ mit der Rate $R_0 = 1/n$ werden durch verschiedene Punktierungsmatrizen $\mathbf{P}_l$ andere Codes $\mathcal{C}_l$ mit höherer Coderate $R_l > R_0$ festgelegt.
+
An important application for&nbsp; [[Channel_Coding/Code_Description_with_State_and_Trellis_Diagram#Punctured_convolutional_codes|$\text{punctured convolutional codes}$]]&nbsp; are the&nbsp; "Rate Compatible Punctured Convolutional Codes"&nbsp; $($for short:&nbsp; '''RCPC&ndash;Codes'''$)$&nbsp; proposed by Joachim Hagenauer in&nbsp; '''[Hag88]'''.
  
Rechts sind die zu analysierenden Punktierungsmatrizen $\mathbf{P}_0, \hspace{0.05cm}\text{ ...} \hspace{0.05cm} , \ \mathbf{P}_4$ dargestellt.
+
Starting from a mother code &nbsp; $\mathcal{C}_0$ &nbsp; with rate&nbsp; $R_0 = 1/n$,&nbsp; other codes &nbsp; $\mathcal{C}_l$ &nbsp; with higher code rate&nbsp; $(R_l > R_0)$&nbsp; are determined by different puncturing matrices&nbsp; $\mathbf{P}_l$.
*Ist bei der Matrix $\mathbf{P}_l$ das Matrixelement $P_{ij} = 1$, so wird das entsprechende Codebit übertragen, während $P_{ij} = 0$ auf eine Punktierung hinweist.
 
*Im Fragebogen verwenden wir für das Element $P_{ij}$ der Matrix $\mathbf{P}_l$ auch die kürzere Schreibweise $P_{ij}^{(l)}$.
 
  
 +
The puncturing matrices &nbsp; $\mathbf{P}_0, \hspace{0.05cm}\text{ ...} \hspace{0.05cm} , \ \mathbf{P}_4$ &nbsp;to be analyzed are shown on the right.
 +
*If for the matrix&nbsp; $\mathbf{P}_l$&nbsp; the matrix element&nbsp; $P_{ij} = 1$,&nbsp; the corresponding code bit is transmitted,&nbsp; while&nbsp; $P_{ij} = 0$&nbsp; indicates puncturing.
 +
 +
*In the questionnaire,&nbsp; we also use the shorter notation&nbsp; $P_{ij}^{(l)}$&nbsp; for the element&nbsp; $P_{ij}$&nbsp; of the matrix&nbsp; $\mathbf{P}_l$.
  
In derGrafik sind alle die Nullen in der Matrix $\mathbf{P}_l$ rot markiert, die in der Matrix $\mathbf{P}_{l&ndash;1}$ noch Einsen waren. Durch diese Maßnahme wird die Coderate $R_{l&ndash;1}$ gegenüber $R_l$ vergrößert.
+
*In the graph:&nbsp; All the zeros in the matrix&nbsp; $\mathbf{P}_l$&nbsp; that were still ones in the matrix&nbsp; $\mathbf{P}_{l&ndash;1}$&nbsp; are marked in red.&nbsp; This measure increases the code rate&nbsp; $R_{l}$&nbsp; compared to&nbsp; $R_{l-1}$.
  
Die RCPC&ndash;Codes eignen sich gut zur Realisierung von
 
* <i>ungleichem Fehlerschutz</i> für hybride ARQ&ndash;Verfahren,
 
* Systemen mit <i>inkrementeller Redundanz</i>.
 
  
 +
The RCPC&ndash;codes are well suited for the realization of
 +
* "unequal error protection"&nbsp; for hybrid ARQ procedures,
 +
 +
* systems with&nbsp; "incremental redundancy".&nbsp; This means that after conventional convolutional coding,&nbsp; bits corresponding to the puncturing matrix&nbsp; $\mathbf{P}_l$&nbsp; are omitted from the code word&nbsp; $\underline{x}^{(0)}$&nbsp; and the shortened code word&nbsp; $\underline{x}^{(l)}$&nbsp; is transmitted:
 +
:*If the punctured code word cannot be correctly decoded in the receiver,&nbsp; the receiver requests further redundancy from the transmitter in the form of the previously punctured bits.
 +
:*This prevents the transmission of redundancy that is not required and adapts the throughput to the channel conditions.
  
Unter &bdquo;Systemen mit inkrementeller Redundanz&rdquo; versteht man, dass nach der herkömmlichen Faltungscodierung aus dem Codewort $\underline{x}^{(0)}$ Bits entsprechend der Punktierungsmatrix $\mathbf{P}_l$ weggelassen werden und das verkürzte Codewort $\underline{x}^{(l)}$ übertragen wird:
 
*Kann das punktierte Codewort im Empfänger nicht korrekt decodiert werden, fordert der Empfänger vom Sender weitere Redundanz in Form der zuvor auspunktierten Bits an.
 
*Somit wird die Übertragung von nicht benötigter Redundanz verhindert und der Durchsatz an die Kanalgegebenheiten angepasst.
 
  
  
  
 
[[File:P_ID2709__hagenauer_kleiner.jpg|left|frame|Joachim Hagenauer]]
 
[[File:P_ID2709__hagenauer_kleiner.jpg|left|frame|Joachim Hagenauer]]
''Hinweise:''
 
* Die Aufgabe bezieht sich auf den Abschnitt  [[Kanalcodierung/Codebeschreibung_mit_Zustands%E2%80%93_und_Trellisdiagramm#Punktierte_Faltungscodes|Punktierte Faltungscodes]] im Kapitel &bdquo;Codebeschreibung mit Zustands&ndash; und Trellisdiagramm&rdquo;.
 
* Sollte die Eingabe des Zahlenwertes &bdquo;0&rdquo; erforderlich sein, so geben Sie bitte &bdquo;0.&rdquo; ein.
 
*Die Literaturstelle [Hag88] verweist auf das Paper &bdquo;Hagenauer, J.: ''Rate Compatible Punctured Convolutional Codes (RCPC codes) and their Applications''. In: IEEE Transactions on Communications, vol COM-36, S. 389 - 400, 1988&rdquo;.
 
* Professor [[Biografien_und_Bibliografien/Lehrstuhlinhaber_des_LNT#Prof._Dr.-Ing._Dr.-Ing._E.h._Joachim_Hagenauer_.281993-2006.29| Joachim Hagenauer]] war von 1993 bis 2006 Leiter des Lehrstuhls für Nachrichtentechnik (LNT) der Technischen Universität München. Die Initiatoren des von Ihnen gerade genutzten Lerntutorials &ndash; Günter Söder und Klaus Eichin &ndash; danken ihrem langjährigen Chef für die Unterstützung und Förderung unseres LNTwww&ndash;Projekts während der ersten Jahre.
 
  
  
Line 34: Line 31:
  
  
===Fragebogen===
+
Hints:
 +
* This exercise refers to the section&nbsp; [[Channel_Coding/Code_Description_with_State_and_Trellis_Diagram#Punctured_convolutional_codes|"Punctured convolutional codes"]]&nbsp; in the chapter&nbsp; "Code description with state and trellis diagram".
 +
 +
*The reference&nbsp; '''[Hag88]''' refers to the paper&nbsp; "Hagenauer, J.:&nbsp; Rate Compatible Punctured Convolutional Codes (RCPC codes) and their Applications. In:&nbsp; IEEE Transactions on Communications,&nbsp; vol COM-36, pp 389 - 400, 1988."
 +
 
 +
*Professor&nbsp; [https://www.ce.cit.tum.de/en/lnt/people/professors/hagenauer/ $\text{Joachim Hagenauer}$]&nbsp; was head of the Institute of Communications Engineering&nbsp; $\rm(LNT)$&nbsp; at the Technical University of Munich from 1993 to 2006.&nbsp; The initiators of the learning tutorial&nbsp; $($Günter Söder and Klaus Eichin$)$&nbsp; thank their long-time boss for supporting and promoting our&nbsp; $\rm LNTwww$&nbsp; project during the first six years.
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
===Questions===
 
<quiz display=simple>
 
<quiz display=simple>
{Welche Aussagen liefern die vorgegeben Punktierungsmatrizen?
+
{What statements do the given puncturing matrices provide?
 
|type="[]"}
 
|type="[]"}
+ Die Rate des RCPC&ndash;Muttercodes ist $R_0 = 1/3$.
+
+ The rate of the RCPC mother code is&nbsp; $R_0 = 1/3$.
+ Die Punktierungsperiode ist $p = 8$.
+
+ The puncturing period is&nbsp; $p = 8$.
- Das Gedächtnis der RCPC&ndash;Codeklasse ist $M = 4$.
+
- The memory of the RCPC code class is&nbsp; $M = 4$.
  
{Welche Coderaten weisen die Codes $C_1, \ ... \ , \ C_4$ auf?
+
{Which code rates do the codes &nbsp; $\mathcal{C}_1$, ... , $\mathcal{C}_4$ &nbsp; have?
 
|type="{}"}
 
|type="{}"}
${\rm Matrix \ P_1} \Rightarrow {\rm Code \ \mathcal{C}_1} \text{:} \, R_1 \ = \ ${ 0.4 3% }  
+
${\rm matrix \ P_1} \ \Rightarrow {\rm code \ \mathcal{C}_1} \text{:} \hspace{0.4cm} R_1 \ = \ ${ 0.4 3% }  
${\rm Matrix \ P_2} \Rightarrow {\rm Code \ \mathcal{C}_2} \text{:} \, R_2 \ = \ ${ 0.5 3% }  
+
${\rm matrix \ P_2} \ \Rightarrow       ß {\rm code \ \mathcal{C}_2} \text{:} \hspace{0.4cm}R_2 \ = \ ${ 0.5 3% }  
${\rm Matrix \ P_3} \Rightarrow {\rm Code \ \mathcal{C}_3} \text{:} \, R_3 \ = \ ${ 0.667 3% }  
+
${\rm matrix \ P_3} \ \Rightarrow \ {\rm code \ \mathcal{C}_3} \text{:} \hspace{0.4cm} R_3 \ = \ ${ 0.667 3% }  
${\rm Matrix \ P_4} \Rightarrow {\rm Code \ \mathcal{C}_4} \text{:} \, R_4 \ = \ ${ 0.889 3% }  
+
${\rm matrix \ P_4} \ \Rightarrow \ {\rm code \ \mathcal{C}_4} \text{:} \hspace{0.4cm} R_4 \ = \ ${ 0.889 3% }  
  
{Welche Aussagen gelten für die Matrixelemente $P_{ij}^{(l)}$?
+
{Which statements are valid for the matrix elements&nbsp; $P_{ij}^{(l)}$?
 
|type="[]"}
 
|type="[]"}
+ Aus $P_{ij}^{(l)} = 1$ folgt $P_{ij}^{(\lambda)} = 1$ für alle $\lambda < l$.
+
+ From&nbsp; $P_{ij}^{(l)} = 1$&nbsp; follows&nbsp; $P_{ij}^{(\lambda)} = 1$&nbsp; for all&nbsp; $\lambda < l$.
- Aus $P_{ij}^{(l)} = 1$ folgt $P_{ij}^{(\lambda)} = 1$ für alle $\lambda > l$.
+
- From&nbsp; $P_{ij}^{(l)} = 1$&nbsp; follows&nbsp; $P_{ij}^{(\lambda)} = 1$&nbsp; for all&nbsp; $\lambda > l$.
- Aus $P_{ij}^{(l)} = 0$ folgt $P_{ij}^{(\lambda)} = 0$ für alle $\lambda < l$.
+
- From&nbsp; $P_{ij}^{(l)} = 0$&nbsp; follows&nbsp; $P_{ij}^{(\lambda)} = 0$&nbsp; for all&nbsp; $\lambda < l$.
+ Aus $P_{ij}^{(l)} = 0$ folgt $P_{ij}^{(\lambda)} = 0$ für alle $\lambda > l$.
+
+ From&nbsp; $P_{ij}^{(l)} = 0$&nbsp; follows&nbsp; $P_{ij}^{(\lambda)} = 0$&nbsp; for all&nbsp; $\lambda > l$.
 
</quiz>
 
</quiz>
  
===Musterlösung===
+
===Solution===
 
{{ML-Kopf}}
 
{{ML-Kopf}}
'''(1)'''&nbsp; Die Zeilenzahl der Punktierungsmatrizen gibt den Parameter $n$ des $(n, \ k = 1)$&ndash;RCPC&ndash;Muttercodes an. Daraus ergibt sich dessen Rate zu $R_0 = 1/3$. Die Spaltenzahl ist gleich der Punktierungsperiode $p$. Bei der betrachteten Codeklasse gilt $p = 8$. Dagegen liefern die Punktierungsmatrizen keine Aussagen über das Gedächtnis des Codes &nbsp;&#8658;&nbsp; <u>Lösungsvorschlag 1 und 2</u>.
+
'''(1)'''&nbsp; Correct are the&nbsp; <u>solutions 1 and 2</u>:
 +
*The number of rows of the puncturing matrices gives the parameter&nbsp; $n$&nbsp; of the&nbsp; $(n, \ k = 1)$&nbsp; RCPC mother code.
 +
 +
*From this,&nbsp; its rate is&nbsp; $R_0 = 1/3$.&nbsp; The column number is equal to the puncturing period&nbsp; $p$.&nbsp; For the class of codes under consideration:&nbsp; $p = 8$.
 +
 
 +
* In contrast,&nbsp; the puncturing matrices do not provide any information about the memory of the code.  
 +
 
  
 +
'''(2)'''&nbsp; For the rate of code&nbsp; $\mathcal{C}_l = p/N_l$,&nbsp; where&nbsp; $N_l$&nbsp; denotes the number of all ones in the puncturing matrix&nbsp; $\mathbf{P}_l$&nbsp; and&nbsp; $p$&nbsp; denotes the puncturing period.
  
'''(2)'''&nbsp; Für die Rate des Codes $C_l = p/N_l$, wobei $N_l$ die Anzahl aller Einsen in der Punktierungsmatrix $\mathbf{P}_l$ und $p$ die Punktierungsperiode bezeichnet:
+
Starting from the rate&nbsp; $R_0 = 1/3$&nbsp; of the mother code&nbsp; $\mathcal{C}_0$,&nbsp; we obtain:
* $R_0 = 8/24 = 1/3 = \underline{0.333}$,  
 
 
* $R_1 = 8/20 = 2/5 = \underline{0.400}$,
 
* $R_1 = 8/20 = 2/5 = \underline{0.400}$,
 
* $R_2 = 8/16 = 1/2 = \underline{0.500}$,
 
* $R_2 = 8/16 = 1/2 = \underline{0.500}$,
Line 70: Line 85:
  
  
'''(3)'''&nbsp; Alle Einsen in der Matrix $\mathbf{P}_4$ sind auch in den darüber liegenden Matrizen $\mathbf{P}_3, \ ... \ , \ \mathbf{P}_0$ enthalten. In der Matrix $\mathbf{P}_3$ kommen gegenüber $\mathbf{P}_4$ drei Einsen hinzu, in der Matrix $\mathbf{P}_2$ gegenüber $\mathbf{P}_3$ nochmals vier, usw. &#8658; Richtig sind die <u>Lösungsvorschläge 1 und 4</u>.
+
'''(3)'''&nbsp; Correct are the&nbsp; <u>solutions 1 and&nbsp; 4</u>:
 +
*All ones in the matrix&nbsp; $\mathbf{P}_4$&nbsp; are also in the matrices&nbsp; $\mathbf{P}_3, \hspace{0.05cm}\text{ ...\hspace{0.05cm}, \ \mathbf{P}_0$.
 +
 +
*In the matrix&nbsp; $\mathbf{P}_3$&nbsp; three ones are added compared to&nbsp; $\mathbf{P}_4$,&nbsp; in the matrix $\mathbf{P}_2$&nbsp; compared to $\mathbf{P}_3$ again four, etc.
 
{{ML-Fuß}}
 
{{ML-Fuß}}
  
 
+
[[Category:Channel Coding: Exercises|^3.3 State and Trellis Diagram^]]
 
 
[[Category:Aufgaben zu  Kanalcodierung|^3.3 Zustands– und Trellisdiagramm^]]
 

Latest revision as of 15:39, 19 November 2022

RCPC puncturing matrices

An important application for  $\text{punctured convolutional codes}$  are the  "Rate Compatible Punctured Convolutional Codes"  $($for short:  RCPC–Codes$)$  proposed by Joachim Hagenauer in  [Hag88].

Starting from a mother code   $\mathcal{C}_0$   with rate  $R_0 = 1/n$,  other codes   $\mathcal{C}_l$   with higher code rate  $(R_l > R_0)$  are determined by different puncturing matrices  $\mathbf{P}_l$.

The puncturing matrices   $\mathbf{P}_0, \hspace{0.05cm}\text{ ...} \hspace{0.05cm} , \ \mathbf{P}_4$  to be analyzed are shown on the right.

  • If for the matrix  $\mathbf{P}_l$  the matrix element  $P_{ij} = 1$,  the corresponding code bit is transmitted,  while  $P_{ij} = 0$  indicates puncturing.
  • In the questionnaire,  we also use the shorter notation  $P_{ij}^{(l)}$  for the element  $P_{ij}$  of the matrix  $\mathbf{P}_l$.
  • In the graph:  All the zeros in the matrix  $\mathbf{P}_l$  that were still ones in the matrix  $\mathbf{P}_{l–1}$  are marked in red.  This measure increases the code rate  $R_{l}$  compared to  $R_{l-1}$.


The RCPC–codes are well suited for the realization of

  • "unequal error protection"  for hybrid ARQ procedures,
  • systems with  "incremental redundancy".  This means that after conventional convolutional coding,  bits corresponding to the puncturing matrix  $\mathbf{P}_l$  are omitted from the code word  $\underline{x}^{(0)}$  and the shortened code word  $\underline{x}^{(l)}$  is transmitted:
  • If the punctured code word cannot be correctly decoded in the receiver,  the receiver requests further redundancy from the transmitter in the form of the previously punctured bits.
  • This prevents the transmission of redundancy that is not required and adapts the throughput to the channel conditions.



Joachim Hagenauer




Hints:

  • The reference  [Hag88] refers to the paper  "Hagenauer, J.:  Rate Compatible Punctured Convolutional Codes (RCPC codes) and their Applications. In:  IEEE Transactions on Communications,  vol COM-36, pp 389 - 400, 1988."
  • Professor  $\text{Joachim Hagenauer}$  was head of the Institute of Communications Engineering  $\rm(LNT)$  at the Technical University of Munich from 1993 to 2006.  The initiators of the learning tutorial  $($Günter Söder and Klaus Eichin$)$  thank their long-time boss for supporting and promoting our  $\rm LNTwww$  project during the first six years.




Questions

1

What statements do the given puncturing matrices provide?

The rate of the RCPC mother code is  $R_0 = 1/3$.
The puncturing period is  $p = 8$.
The memory of the RCPC code class is  $M = 4$.

2

Which code rates do the codes   $\mathcal{C}_1$, ... , $\mathcal{C}_4$   have?

${\rm matrix \ P_1} \ \Rightarrow \ {\rm code \ \mathcal{C}_1} \text{:} \hspace{0.4cm} R_1 \ = \ $

${\rm matrix \ P_2} \ \Rightarrow ß {\rm code \ \mathcal{C}_2} \text{:} \hspace{0.4cm}R_2 \ = \ $

${\rm matrix \ P_3} \ \Rightarrow \ {\rm code \ \mathcal{C}_3} \text{:} \hspace{0.4cm} R_3 \ = \ $

${\rm matrix \ P_4} \ \Rightarrow \ {\rm code \ \mathcal{C}_4} \text{:} \hspace{0.4cm} R_4 \ = \ $

3

Which statements are valid for the matrix elements  $P_{ij}^{(l)}$?

From  $P_{ij}^{(l)} = 1$  follows  $P_{ij}^{(\lambda)} = 1$  for all  $\lambda < l$.
From  $P_{ij}^{(l)} = 1$  follows  $P_{ij}^{(\lambda)} = 1$  for all  $\lambda > l$.
From  $P_{ij}^{(l)} = 0$  follows  $P_{ij}^{(\lambda)} = 0$  for all  $\lambda < l$.
From  $P_{ij}^{(l)} = 0$  follows  $P_{ij}^{(\lambda)} = 0$  for all  $\lambda > l$.


Solution

(1)  Correct are the  solutions 1 and 2:

  • The number of rows of the puncturing matrices gives the parameter  $n$  of the  $(n, \ k = 1)$  RCPC mother code.
  • From this,  its rate is  $R_0 = 1/3$.  The column number is equal to the puncturing period  $p$.  For the class of codes under consideration:  $p = 8$.
  • In contrast,  the puncturing matrices do not provide any information about the memory of the code.


(2)  For the rate of code  $\mathcal{C}_l = p/N_l$,  where  $N_l$  denotes the number of all ones in the puncturing matrix  $\mathbf{P}_l$  and  $p$  denotes the puncturing period.

Starting from the rate  $R_0 = 1/3$  of the mother code  $\mathcal{C}_0$,  we obtain:

  • $R_1 = 8/20 = 2/5 = \underline{0.400}$,
  • $R_2 = 8/16 = 1/2 = \underline{0.500}$,
  • $R_3 = 8/12 = 2/3 = \underline{0.667}$,
  • $R_4 = 8/9 = \underline{0.889}$.


(3)  Correct are the  solutions 1 and  4:

  • All ones in the matrix  $\mathbf{P}_4$  are also in the matrices  $\mathbf{P}_3, \hspace{0.05cm}\text{ ...} \hspace{0.05cm}, \ \mathbf{P}_0$.
  • In the matrix  $\mathbf{P}_3$  three ones are added compared to  $\mathbf{P}_4$,  in the matrix $\mathbf{P}_2$  compared to $\mathbf{P}_3$ again four, etc.