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

From LNTwww
 
(34 intermediate revisions by 6 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 1988 von Joachim Hagenauer vorgeschlagen wurden [[Hag88]]. Ausgehend von einem Muttercode $C_0$ mit der Rate $R_0 = 1/n$ werden durch verschiedene Punktierungsmatrizen $\mathbf{P}_l$ andere Codes $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, \ ... \ , \ \mathbf{P}_4$ dargestellt. 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)}$.
+
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$.
  
In der obigen Darstellung 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.
+
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$.
  
Die RCPC&ndash;Codes eignen sich gut zur Realisierung von
+
*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}$.
* <i>ungleichem Fehlerschutz</i> für hybride ARQ&ndash;Verfahren,
 
* Systemen mit <i>inkrementeller Redundanz</i>-
 
  
[[File:P_ID2709__hagenauer_kleiner.jpg|left|frame|Joachim Hagenauer, Erfinder der RPCP–Codes]]
 
  
 +
The RCPC&ndash;codes are well suited for the realization of
 +
* "unequal error protection"&nbsp; for hybrid ARQ procedures,
  
Unter Letzterem versteht man, dass nach der herkömmlichen Faltungscodierung aus dem Codewort $\underline{x}^{(0)}$ entsprechend der Punktierungsmatrix $\mathbf{P}_l \ \rm Bits$ 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.
+
* 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.
  
  
  
  
 +
[[File:P_ID2709__hagenauer_kleiner.jpg|left|frame|Joachim Hagenauer]]
  
  
Line 25: Line 30:
  
  
''Hinweise:''
 
* Die Aufgabe bezieht sich auf die [[Kanalcodierung/Codebeschreibung_mit_Zustands%E2%80%93_und_Trellisdiagramm#Punktierte_Faltungscodes| letzte Seite]] des Codebeschreibung mit Zustands&ndash; und Trellisdiagramm.
 
* Die RCPC&ndash;Codes wurden 1988 von [[Biografien_und_Bibliografien/Lehrstuhlinhaber_des_LNT#Prof._Dr.-Ing._Dr.-Ing._E.h._Joachim_Hagenauer_.281993-2006.29| Joachim Hagenauer]] erfunden, von 1993 bis 2006 Leiter des Lehrstuhls für Nachrichtentechnik (LNT) der Technischen Universität München. Die Verantwortlichen 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.
 
* Sollte die Eingabe des Zahlenwertes &bdquo;0&rdquo; erforderlich sein, so geben Sie bitte &bdquo;0.&rdquo; ein.
 
  
 +
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."
  
===Fragebogen===
+
*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 \ 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 \ 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 \ 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 \ 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; 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:
+
 
* $R_0 = 8/24 = 1/3 = \underline{0.333}$,  
+
'''(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.
 +
 
 +
Starting from the rate&nbsp; $R_0 = 1/3$&nbsp; of the mother code&nbsp; $\mathcal{C}_0$,&nbsp; we obtain:
 
* $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 67: 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 Codebeschreibung mit 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.