Kanalcodierung/Zielsetzung der Kanalcodierung: Unterschied zwischen den Versionen

Aus LNTwww
Wechseln zu:Navigation, Suche
 
(21 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 8: Zeile 8:
  
 
== # ÜBERBLICK ZUM ERSTEN HAUPTKAPITEL # ==
 
== # ÜBERBLICK ZUM ERSTEN HAUPTKAPITEL # ==
 +
<br>
 +
Das erste Kapitel behandelt&nbsp; '''Blockcodes zur Fehlererkennung und Fehlerkorrektur'''&nbsp; und liefert die Grundlagen zur Beschreibung effektiverer Codes wie zum Beispiel
 +
*den&nbsp; &raquo;Reed–Solomon–Codes&laquo;&nbsp; (siehe Kapitel 2),
 +
 +
*den&nbsp; &raquo;Faltungscodes&laquo;&nbsp; (Kapitel 3),
 +
 +
*den&nbsp; &raquo;iterativ decodierbaren Produkt–Codes&laquo; (&raquo;Turbo–Codes&laquo;),&nbsp; und
 +
*den&nbsp; &raquo;Low–density Parity–check Codes&laquo;&nbsp; (Kapitel 4).
 +
  
Das erste Kapitel behandelt Blockcodes zur Fehlererkennung und Fehlerkorrektur und liefert die Grundlagen zur Beschreibung effektiverer Codes wie zum Beispiel den ''Reed–Solomon–Codes'' (siehe Kapitel 2), den ''Faltungscodes'' (Kapitel 3) sowie den ''iterativ decodierbaren Produkt–Codes'' (''Turbo–Codes'') und ''Low–density Parity–check Codes'' (Kapitel 4). Wir beschränken uns hier auf binäre Codes.
+
Wir beschränken uns hier auf binäre Codes.
  
Man bezeichnet dieses spezifische Fachgebiet als ''Kanalcodierung'' im Gegensatz zur ''Quellencodierung'' (Redundanzminderung aus Gründen der Datenkomprimierung) und zur ''Leitungscodierung'' (zusätzliche Redundanz zur Anpassung des Digitalsignals an die spektralen Eigenschaften des Übertragungsmediums).
+
Man bezeichnet dieses spezifische Fachgebiet als &nbsp; '''Kanalcodierung''' &nbsp; im Gegensatz  
 +
:*zur&nbsp; &raquo;Quellencodierung&laquo;&nbsp; (Redundanzminderung aus Gründen der Datenkomprimierung) und  
 +
:*zur&nbsp; &raquo;Leitungscodierung&laquo;&nbsp; (zusätzliche Redundanz zur Anpassung des Digitalsignals an die spektralen Eigenschaften des Übertragungsmediums).
  
 
Im Einzelnen werden behandelt:
 
Im Einzelnen werden behandelt:
  
*Definitionen und einführende Beispiele zur Fehlererkennung und Fehlererkorrektur,
+
#Definitionen und einführende Beispiele zur&nbsp; &raquo;Fehlererkennung und Fehlererkorrektur&laquo;,
*eine kurze Wiederholung geeigneter Kanalmodelle und Entscheiderstrukturen,
+
#eine kurze Wiederholung geeigneter&nbsp; &raquo;Kanalmodelle und Entscheiderstrukturen&laquo;,
*bekannte binäre Blockcodes wie Single Parity-check–, Wiederholungs– und Hamming–Code,
+
#bekannte binäre Blockcodes wie&nbsp; &raquo;Single Parity-check Code&laquo;,&nbsp; &raquo;Wiederholungscode&laquo;&nbsp; und&nbsp; &raquo;Hamming–Code&laquo;,
*die allgemeine Beschreibung linearer Codes mittels Generatormatrix und Prüfmatrix,
+
#die allgemeine Beschreibung linearer Codes mittels&nbsp; &raquo;Generatormatrix&laquo;&nbsp; und&nbsp; &raquo;Prüfmatrix&laquo;,
*die Decodiermöglichkeiten für Blockcodes, unter anderem die Syndromdecodierung,
+
#die Decodiermöglichkeiten für Blockcodes, unter anderem die&nbsp; &raquo;Syndromdecodierung&laquo;,
*einfache Näherungen und obere Schranken für die Blockfehlerwahrscheinlichkeit, sowie
+
#einfache Näherungen und obere Schranken für die&nbsp; &raquo;Blockfehlerwahrscheinlichkeit&laquo;,&nbsp; sowie
*eine informationstheoretische Grenze der Kanalcodierung.
+
#eine&nbsp; &raquo;informationstheoretische Grenze&laquo;&nbsp; der Kanalcodierung.
  
  
 
== Fehlererkennung und Fehlerkorrektur ==
 
== Fehlererkennung und Fehlerkorrektur ==
 
<br>
 
<br>
Bei einem jeden Nachrichtenübertragungssystem kommt es zu Übertragungsfehlern. Man kann zwar die Wahrscheinlichkeit $p_{\rm S}$ für einen solchen Symbolfehler sehr klein halten, zum Beispiel durch eine sehr große Signalenergie. Die Symbolfehlerwahrscheinlichkeit $p_{\rm S} = 0$ ist aber wegen der Gaußschen WDF des stets vorhandenen thermischen Rauschens nie erreichbar.<br>
+
Bei einem jeden Nachrichtenübertragungssystem kommt es zu Übertragungsfehlern.&nbsp; Man kann zwar die Wahrscheinlichkeit&nbsp; $p_{\rm S}$&nbsp; für einen solchen Symbolfehler sehr klein halten,&nbsp; zum Beispiel durch eine sehr große Signalenergie.&nbsp; Die Symbolfehlerwahrscheinlichkeit&nbsp; $p_{\rm S} = 0$&nbsp; ist aber wegen der Gaußschen WDF des stets vorhandenen thermischen Rauschens nie erreichbar.<br>
 +
 
 +
Insbesondere bei stark gestörten Kanälen und auch für sicherheitskritische Anwendungen ist es deshalb unumgänglich,&nbsp; die zu übertragenden Daten angepasst an Anwendung und Kanal besonders zu schützen.&nbsp; Dazu fügt man beim Sender Redundanz hinzu und nutzt diese Redundanz beim Empfänger,&nbsp; um die Anzahl der Decodierfehler zu verringern.
 +
 
 +
{{BlaueBox|TEXT= 
 +
$\text{Definitionen:}$
  
Insbesondere bei stark gestörten Kanälen und auch für sicherheitskritische Anwendungen ist es deshalb unumgänglich, die zu übertragenden Daten angepasst an Anwendung und Kanal besonders zu schützen. Dazu fügt man beim Sender Redundanz hinzu und nutzt diese Redundanz beim Empfänger, um die Anzahl der Decodierfehler zu verringern. Dabei unterscheidet man:
+
#'''Fehlererkennung'''&nbsp; (englisch: &nbsp; "Error Detection"): &nbsp; Der Decoder prüft die Integrität der empfangenen Blöcke und markiert gefundene Fehler.&nbsp; Eventuell informiert der Empfänger den Sender über fehlerhafte Blöcke via Rückkanal,&nbsp; so dass dieser den entsprechenden Block noch einmal sendet.<br><br>
 +
#'''Fehlerkorrektur'''&nbsp; (englisch: &nbsp; "Error Correction"): &nbsp; Der Decoder erkennt einen&nbsp; (oder mehrere)&nbsp; Bitfehler und liefert für diese weitere Informationen,&nbsp; zum Beispiel deren Positionen im übertragenen Block.&nbsp; Damit können unter Umständen die entstandenen Fehler vollständig korrigiert werden.<br><br>
 +
#Die&nbsp; '''Kanalcodierung'''&nbsp; (englisch: &nbsp; "Channel Coding"&nbsp; oder&nbsp;  "Error–Control Coding")&nbsp; umfasst sowohl Verfahren zur Fehlererkennung als auch solche zur Fehlerkorrektur.<br>}}
  
*'''Fehlererkennung''' (englisch: ''Error Detection''): &nbsp; Der Decoder prüft die Integrität der empfangenen Blöcke und markiert gefundene Fehler. Eventuell informiert der Empfänger den Sender über fehlerhafte Blöcke via Rückkanal, so dass dieser den entsprechenden Block noch einmal sendet.<br>
 
  
*'''Fehlerkorrektur''' (englisch: ''Error Correction''): &nbsp; Der Decoder erkennt einen (oder mehrere) Bitfehler und liefert für diese weitere Informationen, zum Beispiel deren Positionen im übertragenen Block. Damit können unter Umständen die entstandenen Fehler vollständig korrigiert werden.<br><br>
+
Alle&nbsp; '''ARQ'''–Verfahren&nbsp; (englisch: &nbsp; "Automatic Repeat Request")&nbsp; nutzen ausschließlich Fehlererkennung.&nbsp;
 +
*Für die Fehlererkennung ist weniger Redundanz erforderlich als für eine Fehlerkorrektur.&nbsp;
 +
*Ein Nachteil der ARQ ist der geringe Durchsatz bei schlechter Kanalqualität,&nbsp; also dann,&nbsp; wenn häufig ganze Datenblöcke vom Empfänger neu angefordert werden müssen.<br>
  
Die '''Kanalcodierung''' (englisch: ''Channel Coding'' oder auch ''Error–Control Coding'') umfasst sowohl Verfahren zur Fehlererkennung als auch solche zur Fehlerkorrektur.<br>
 
  
Alle ARQ–Verfahren (englisch: ''Automatic Repeat Request'') nutzen ausschließlich Fehlererkennung. Für die Fehlererkennung ist weniger Redundanz erforderlich als für eine Fehlerkorrektur. Ein Nachteil der ARQ ist der geringe Durchsatz bei schlechter Kanalqualität, also dann, wenn häufig ganze Datenblöcke vom Empfänger neu angefordert werden müssen.<br>
+
In diesem Buch behandeln wir größtenteils die&nbsp; '''Vorwärtsfehlerkorrektur'''&nbsp; (englisch: &nbsp; "Forward Error Correction", FEC),&nbsp; die bei einem ausreichend guten Kanal (großes SNR) zu sehr kleinen Fehlerraten führt.  
 +
*Bei schlechteren Kanalbedingungen ändert sich am Durchsatz nichts,&nbsp; das heißt,&nbsp; es wird die gleiche Informationsmenge übertragen.
 +
*Allerdings kann dann die Fehlerrate sehr große Werte annehmen.<br>
  
In diesem Buch behandeln wir größtenteils die '''Vorwärtsfehlerkorrektur''' (englisch: ''Forward Error Correction'', FEC), die bei einem ausreichend guten Kanal (großes SNR) zu sehr kleinen Fehlerraten führt. Bei schlechteren Kanalbedingungen ändert sich am Durchsatz nichts, das heißt, es wird die gleiche Informationsmenge übertragen. Allerdings kann dann die Fehlerrate sehr große Werte annehmen.<br>
 
  
 
Oft werden FEC– und ARQ–Verfahren kombiniert, und zwischen diesen die Redundanz so aufgeteilt,
 
Oft werden FEC– und ARQ–Verfahren kombiniert, und zwischen diesen die Redundanz so aufgeteilt,
Zeile 47: Zeile 66:
 
<br>
 
<br>
 
{{GraueBox|TEXT=   
 
{{GraueBox|TEXT=   
$\text{Beispiel 1: Single Parity Check Code (SPC)}$
+
$\text{Beispiel 1: &nbsp; Single Parity&ndash;check Code (SPC)}$
<br>Ergänzt man $k = 4$ Bit um ein so genanntes Prüfbit (englisch: <i>Parity Bit</i>) derart, dass die Summe aller Einsen geradzahlig ist, zum Beispiel (mit fettgedruckten Prüfbits)<br>
+
 
 +
Ergänzt man&nbsp; $k = 4$&nbsp; Bit um ein so genanntes&nbsp; "Prüfbit"&nbsp; (englisch: &nbsp; "parity bit")&nbsp; derart,&nbsp; dass die Summe aller Einsen geradzahlig ist,&nbsp; z.B.&nbsp; (mit fettgedruckten Prüfbits)<br>
 +
 
 +
:$$0000\boldsymbol{0}, 0001\boldsymbol{1}, \text{...} , 1111\boldsymbol{0}, \text{...}\ ,$$
  
:$$0000\boldsymbol{0}, 0001\boldsymbol{1}, \text{...} , 1111\boldsymbol{0}, ...$$
+
so kann man einen Einzelfehler sehr einfach erkennen.&nbsp; Zwei Fehler innerhalb eines Codewortes bleiben dagegen unerkannt.  
  
so kann man einen Einzelfehler sehr einfach erkennen. Zwei Fehler innerhalb eines Codewortes bleiben dagegen unerkannt. Die deutsche Bezeichnung hierfür ist <i>Paritätsprüfcode</i>.}}<br>
+
Die deutsche Bezeichnung hierfür ist&nbsp; "Paritätsprüfcode".}}<br>
  
 
{{GraueBox|TEXT=  
 
{{GraueBox|TEXT=  
$\text{Beispiel 2: International Standard Book Number (ISBN)}$
+
$\text{Beispiel 2: &nbsp International Standard Book Number (ISBN)}$
<br>Seit den 1960er Jahren werden alle Bücher mit 10&ndash;stelligen Kennzahlen (ISBN&ndash;10) versehen. Seit 2007 ist zusätzlich noch die Angabe entsprechend ISBN&ndash;13 verpflichtend. Beispielsweise lauten diese für das Fachbuch [Söd93]<ref name ='Söd93'>Söder, G.: ''Modellierung, Simulation und Optimierung von Nachrichtensystemen''. Berlin – Heidelberg: Springer, 1993.</ref>:<br>
+
 
 +
Seit den 1960er Jahren werden alle Bücher mit 10&ndash;stelligen Kennzahlen&nbsp; ("ISBN&ndash;10")&nbsp; versehen.&nbsp; Seit 2007 ist zusätzlich noch die Angabe gemäß&nbsp; "ISBN&ndash;13"&nbsp; verpflichtend.&nbsp; Beispielsweise lauten diese für das Fachbuch&nbsp; [Söd93]<ref name ='Söd93'>Söder, G.:&nbsp; Modellierung, Simulation und Optimierung von Nachrichtensystemen.&nbsp; Berlin – Heidelberg: Springer, 1993.</ref>:<br>
  
*$\boldsymbol{3&ndash;540&ndash;57215&ndash;5}$ (für ISBN&ndash;10), bzw.  
+
*$\boldsymbol{3&ndash;540&ndash;57215&ndash;5}$&nbsp; (für ISBN&ndash;10), bzw.  
*$\boldsymbol{978&ndash;3&ndash;54057215&ndash;2}$ (für ISBN&ndash;13).
+
*$\boldsymbol{978&ndash;3&ndash;54057215&ndash;2}$&nbsp; (für ISBN&ndash;13).
  
  
Die letzte Ziffer $z_{10}$ ergibt sich bei ISBN&ndash;10 aus den vorherigen Ziffern $z_1 = 3$, $z_2 = 5$, ... , $z_9 = 5$ nach folgender Rechenregel:
+
Die letzte Ziffer&nbsp; $z_{10}$&nbsp; ergibt sich bei ISBN&ndash;10 aus den vorherigen Ziffern&nbsp; $z_1 = 3$,&nbsp; $z_2 = 5$, ... ,&nbsp; $z_9 = 5$&nbsp; nach folgender Rechenregel:
  
 
::<math>z_{10} = \left ( \sum_{i=1}^{9} \hspace{0.2cm} i \cdot z_i \right ) \hspace{-0.3cm} \mod 11 =  
 
::<math>z_{10} = \left ( \sum_{i=1}^{9} \hspace{0.2cm} i \cdot z_i \right ) \hspace{-0.3cm} \mod 11 =  
Zeile 68: Zeile 91:
 
\hspace{0.05cm}. </math>
 
\hspace{0.05cm}. </math>
  
Zu beachten ist, dass $z_{10} = 10$ als $z_{10} = \rm X$ geschrieben werden muss (römische Zahlendarstellung von &bdquo;10&rdquo;), da sich die Zahl $10$ im Zehnersystem nicht als Ziffer darstellen lässt.<br>
+
:Zu beachten ist,&nbsp; dass&nbsp; $z_{10} = 10$&nbsp; als&nbsp; $z_{10} = \rm X$&nbsp; geschrieben werden muss&nbsp; (römische Zahlendarstellung von &bdquo;10&rdquo;),&nbsp; da sich die Zahl&nbsp; $10$&nbsp; im Zehnersystem nicht als Ziffer darstellen lässt.<br>
  
 
Entsprechend gilt für die Prüfziffer bei ISBN&ndash;13:
 
Entsprechend gilt für die Prüfziffer bei ISBN&ndash;13:
  
::<math>z_{13}= 10 - \left ( \sum_{i=1}^{12} \hspace{0.2cm}  z_i  \cdot 3^{(i+1) \hspace{-0.2cm} \mod 2}  \right ) \hspace{-0.3cm} \mod 10 = 10 - [(9+8+5+0+7+1) \cdot 1 + (7+3+4+5+2+5) \cdot 3] \hspace{-0.2cm} \mod 10 </math>
+
::<math>z_{13}= 10 - \left ( \sum_{i=1}^{12} \hspace{0.2cm}  z_i  \cdot 3^{(i+1) \hspace{-0.2cm} \mod 2}  \right ) \hspace{-0.3cm} \mod 10 = 10 \hspace{-0.05cm}- \hspace{-0.05cm} \big [(9\hspace{-0.05cm}+\hspace{-0.05cm}8\hspace{-0.05cm}+\hspace{-0.05cm}5\hspace{-0.05cm}+\hspace{-0.05cm}0\hspace{-0.05cm}+\hspace{-0.05cm}7\hspace{-0.05cm}+\hspace{-0.05cm}1) \cdot 1 + (7\hspace{-0.05cm}+\hspace{-0.05cm}3\hspace{-0.05cm}+\hspace{-0.05cm}4\hspace{-0.05cm}+\hspace{-0.05cm}5\hspace{-0.05cm}+\hspace{-0.05cm}2\hspace{-0.05cm}+\hspace{-0.05cm}5) \cdot 3\big ] \hspace{-0.2cm} \mod 10 </math>
 
:: <math>\Rightarrow \hspace{0.3cm} z_{13}=  10 - (108 \hspace{-0.2cm} \mod 10) = 10 - 8 = 2
 
:: <math>\Rightarrow \hspace{0.3cm} z_{13}=  10 - (108 \hspace{-0.2cm} \mod 10) = 10 - 8 = 2
 
\hspace{0.05cm}. </math>
 
\hspace{0.05cm}. </math>
  
Bei beiden Varianten werden im Gegensatz zum obigen Paritätsprüfcode (SPC) auch Zahlendreher wie $57 \, \leftrightarrow  75$ erkannt, da hier unterschiedliche Positionen verschieden gewichtet werden.}}<br>
+
Bei beiden Varianten werden im Gegensatz zum obigen Paritätsprüfcode&nbsp; $\rm (SPC)$&nbsp; auch Zahlendreher wie&nbsp; $57 \, \leftrightarrow  75$&nbsp; erkannt,&nbsp; da hier unterschiedliche Positionen verschieden gewichtet werden.}}<br>
  
 
{{GraueBox|TEXT=  
 
{{GraueBox|TEXT=  
$\text{Beispiel 3: Strichcode (eindimensionaler Barcode)}$
+
$\text{Beispiel 3: &nbsp; Strichcode (eindimensionaler Barcode)}$
<br>Der am weitesten verbreitete fehlererkennende Code weltweit ist der Strichcode oder Balkencode (englisch: <i>Bar Code</i>) zur Kennzeichnung von Produkten, zum Beispiel EAN&ndash;13 (<i>European Article Number</i>) mit 13 Ziffern.
 
 
[[Datei:P ID2330 KC T 1 1 S2.png|right|frame|1D&ndash;Barcode]]
 
[[Datei:P ID2330 KC T 1 1 S2.png|right|frame|1D&ndash;Barcode]]
*Diese werden durch verschieden breite Balken und Lücken dargestellt und können mit einem opto&ndash;elektronischen Lesegerät leicht entschlüsselt werden.  
+
 
*Die ersten drei Ziffern kennzeichnen das Land (beispielsweise Deutschland: 400 &ndash; 440), die nächsten vier bzw. fünf Stellen den Hersteller und das Produkt.  
+
Der am weitesten verbreitete fehlererkennende Code weltweit ist der&nbsp; "Strichcode"&nbsp; oder&nbsp; "Balkencode"&nbsp; (englisch: &nbsp; "bar code")&nbsp; zur Kennzeichnung von Produkten,&nbsp; zum Beispiel nach&nbsp; EAN&ndash;13&nbsp; "European Article Number")&nbsp; mit 13 Ziffern.
*Die letzte Ziffer ist die Prüfziffer $z_{13}$, die sich genau so berechnet wie bei ISBN&ndash;13.}}
+
*Diese werden durch verschieden breite Balken und Lücken dargestellt und können mit einem opto&ndash;elektronischen Lesegerät leicht entschlüsselt werden.
 +
 +
*Die ersten drei Ziffern kennzeichnen das Land&nbsp; (beispielsweise Deutschland: &nbsp; zwischen 400 und 440),&nbsp; die nächsten vier bzw. fünf Stellen den Hersteller und das Produkt.
 +
 +
*Die letzte Ziffer ist die Prüfziffer&nbsp; $z_{13}$,&nbsp; die sich genau so berechnet wie bei ISBN&ndash;13.}}
  
 
== Einige einführende Beispiele zur Fehlerkorrektur==
 
== Einige einführende Beispiele zur Fehlerkorrektur==
 
<br>
 
<br>
 
{{GraueBox|TEXT=  
 
{{GraueBox|TEXT=  
$\text{Beispiel 4: 2D&ndash;Barcodes für Online&ndash;Tickets}$
+
$\text{Beispiel 4: &nbsp; 2D&ndash;Barcodes für Online&ndash;Tickets}$
<br>Wenn Sie eine Fahrkarte der Deutschen Bahn online buchen und ausdrucken, finden Sie ein Beispiel eines zweidimensionalen Barcodes, nämlich den 1995 von Andy Longacre bei der Firma Welch Allyn in den USA entwickelten [https://de.wikipedia.org/wiki/Aztec-Code Aztec&ndash;Code], mit dem Datenmengen bis zu 3000 Zeichen codiert werden können. Aufgrund der [[Kanalcodierung/Definition_und_Eigenschaften_von_Reed–Solomon–Codes|Reed&ndash;Solomon&ndash;Fehlerkorrektur]] ist die Rekonstruktion des Dateninhalts auch dann noch möglich, wenn bis zu 40% des Codes zerstört wurden, zum Beispiel durch Knicken der Fahrkarte oder durch Kaffeeflecken.<br>
+
 
 +
Wenn Sie eine Fahrkarte der Deutschen Bahn online buchen und ausdrucken,&nbsp; finden Sie ein Beispiel eines zweidimensionalen Barcodes,&nbsp; nämlich den 1995 von Andy Longacre bei der Firma Welch Allyn in den USA entwickelten&nbsp; [https://de.wikipedia.org/wiki/Aztec-Code "Aztec&ndash;Code"],&nbsp; mit dem Datenmengen bis zu&nbsp; $3000$&nbsp; Zeichen codiert werden können.&nbsp; Aufgrund der&nbsp; [[Kanalcodierung/Definition_und_Eigenschaften_von_Reed–Solomon–Codes|"Reed&ndash;Solomon&ndash;Fehlerkorrektur"]]&nbsp; ist die Rekonstruktion des Dateninhalts auch dann noch möglich,&nbsp; wenn bis zu&nbsp; $40\%$&nbsp; des Codes zerstört wurden,&nbsp; zum Beispiel durch Knicken der Fahrkarte oder durch Kaffeeflecken.<br>
 +
 
 +
[[Datei:P ID2332 KC T 1 1 S2a.png|right|frame|2D–Barcodes: Aztec– und QR–Code|class=fit]]
  
[[Datei:P ID2332 KC T 1 1 S2a.png|center|frame|2D–Barcodes: Aztec– und QR–Code|class=fit]]
+
Rechts ist ein&nbsp; $\rm QR&ndash;Code$&nbsp; ("Quick Response")&nbsp; mit zugehörigem Inhalt dargestellt.  
 +
*Der QR&ndash;Code wurde 1994 für die Autoindustrie in Japan zur Kennzeichnung von Bauteilen entwickelt und erlaubt ebenfalls eine Fehlerkorrektur.&nbsp;
  
Rechts ist ein QR&ndash;Code (<i>Quick Response</i>) mit zugehörigem Inhalt dargestellt. Der QR&ndash;Code wurde 1994 für die Autoindustrie in Japan zur Kennzeichnung von Bauteilen entwickelt und erlaubt ebenfalls eine Fehlerkorrektur. Inzwischen ist der Einsatz des QR&ndash;Codes sehr vielfältig. In Japan findet man ihn auf nahezu jedem Werbeplakat und auf jeder Visitenkarte. Auch in Deutschland setzt er sich mehr und mehr durch.<br>
+
*Der Einsatz des QR&ndash;Codes sehr vielfältig.&nbsp; In Japan findet man ihn schon lange auf Werbeplakat und auf jeder Visitenkarte.&nbsp; Auch in Deutschland setzt er sich mehr und mehr durch.<br>
  
Bei allen 2D&ndash;Barcodes gibt es quadratische Markierungen zur Kalibrierung des Lesegerätes. Details hierzu finden Sie in [KM+09]<ref>Kötter, R.; Mayer, T.; Tüchler, M.; Schreckenbach, F.; Brauchle, J.: ''Channel Coding''. Vorlesungsmanuskript, Lehrstuhl für Nachrichtentechnik, TU München, 2008.</ref>.}}
+
*Bei allen 2D&ndash;Barcodes gibt es quadratische Markierungen zur Kalibrierung des Lesegerätes. Details finden Sie in [KM+09]<ref>Kötter, R.; Mayer, T.; Tüchler, M.; Schreckenbach, F.; Brauchle, J.:&nbsp; Channel Coding.&nbsp; Vorlesungsmanuskript, Lehrstuhl für Nachrichtentechnik, TU München, 2008.</ref>.}}
  
  
 
{{GraueBox|TEXT=  
 
{{GraueBox|TEXT=  
$\text{Beispiel 5: Codes für die Satelliten&ndash; und Weltraumkommunikation}$
+
$\text{Beispiel 5: &nbsp; Codes für die Satelliten&ndash; und Weltraumkommunikation}$
<br>Eines der ersten Einsatzgebiete von Fehlerkorrekturverfahren war die Kommunikation von/zu Satelliten und Raumfähren, also Übertragungsstrecken, die durch niedrige Sendeleistungen und große Pfadverluste gekennzeichnet sind. Schon 1977 wurde bei der <i>Raum&ndash;Mission Voyager 1</i> zu Neptun und Uranus Kanalcodierung eingesetzt, und zwar in Form der seriellen Verkettung eines [[Kanalcodierung/Definition_und_Eigenschaften_von_Reed–Solomon–Codes|Reed&ndash;Solomon&ndash;Codes]] und eines [[Kanalcodierung/Grundlagen_der_Faltungscodierung|Faltungscodes]].<br>
+
 
 +
Eines der ersten Einsatzgebiete von Fehlerkorrekturverfahren war die Kommunikation von/zu Satelliten und Raumfähren,&nbsp; also Übertragungsstrecken,&nbsp;
 +
*die durch niedrige Sendeleistungen und  
 +
*große Pfadverluste gekennzeichnet sind.  
 +
 
 +
 
 +
Schon 1977 wurde bei der&nbsp; "Raum&ndash;Mission Voyager 1"&nbsp; zu Neptun und Uranus Kanalcodierung eingesetzt,&nbsp; und zwar in Form der seriellen Verkettung eines&nbsp; [[Kanalcodierung/Definition_und_Eigenschaften_von_Reed–Solomon–Codes|"Reed&ndash;Solomon&ndash;Codes"]]&nbsp; und eines&nbsp; [[Kanalcodierung/Grundlagen_der_Faltungscodierung|"Faltungscodes"]].<br>
  
Damit genügte schon der Leistungskennwert $10 &middot; \lg \; E_{\rm B}/N_0 \approx 2 \, \rm dB$, um die geforderte Fehlerrate $5 &middot; 10^{-5}$ (bezogen auf die komprimierten Daten nach der Quellencodierung) zu erreichen. Ohne Kanalcodierung sind dagegen für die gleiche Fehlerrate fast  $9 \, \rm dB$ erforderlich, also eine um den Faktor $10^{0.7} &asymp; 5$ größere Sendeleistung.<br>
+
Damit genügte schon&nbsp; $10 &middot; \lg \; E_{\rm B}/N_0 \approx 2 \, \rm dB$,&nbsp; um die geforderte Fehlerrate&nbsp; $5 &middot; 10^{-5}$&nbsp; (bezogen auf die komprimierten Daten nach der Quellencodierung)&nbsp; zu erreichen.&nbsp; Ohne Kanalcodierung wären dagegen für die gleiche Fehlerrate fast&nbsp; $9 \, \rm dB$&nbsp; erforderlich,&nbsp; also eine um den Faktor&nbsp; $10^{0.7} &asymp; 5$&nbsp; größere Sendeleistung.<br>
  
Auch das geplante Marsprojekt (die Datenübertragung vom Mars zur Erde mit 5W&ndash;Lasern) wird nur mit einem ausgeklügelten Codierschema erfolgreich sein.}}<br>
+
Auch das geplante Marsprojekt&nbsp; (die Datenübertragung vom Mars zur Erde mit&nbsp; $\rm 5W$&ndash;Lasern)&nbsp; wird nur mit einem ausgeklügelten Codierschema erfolgreich sein.}}<br>
  
 
{{GraueBox|TEXT=  
 
{{GraueBox|TEXT=  
$\text{Beispiel 6: Kanalcodes für die Mobilkommunikation}$
+
$\text{Beispiel 6: &nbsp; Kanalcodes für die Mobilkommunikation}$
<br>Ein weiteres und besonders umsatzstarkes Anwendungsgebiet, das ohne Kanalcodierung nicht funktionieren würde, ist die Mobilkommunikation. Hier ergäben sich bei ungünstigen Bedingungen ohne Codierung Fehlerraten im Prozentbereich und aufgrund von Abschattungen und Mehrwegeausbreitung (Echos) treten die Fehler oft gebündelt auf. Die Fehlerbündellänge beträgt dabei manchmal einige Hundert Bit.
 
*Bei der Sprachübertragung im GSM&ndash;System werden die $182$ wichtigsten (Klasse 1a und 1b) der insgesamt 260 Bit eines Sprachrahmens $(20 \, \rm ms)$ zusammen mit einigen wenigen Paritäts&ndash; und Tailbits faltungscodiert (mit Memory $m = 4$ und Rate $R = 1/2$) und verwürfelt. Zusammen mit den $78$ weniger wichtigen und deshalb uncodierten Bits der Klasse 2 führt dies dazu, dass die Bitrate von $13 \, \rm kbit/s$ auf $22.4 \, \rm kbit/s$ ansteigt.<br>
 
  
*Man nutzt die (relative) Redundanz von $r = (22.4 &ndash; 13)/22.4 &asymp; 0.42$ zur Fehlerkorrektur. Anzumerken ist, dass $r = 0.42$ aufgrund der hier verwendeten Definition aussagt, das $42\%$ der codierten Bits redundant sind. Mit dem Bezugswert &bdquo;Bitrate der uncodierten Folge&rdquo; ergäbe sich $r = 9.4/13 \approx 0.72$ mit der Aussage: Zu den Informationsbits werden $72\%$ Prüfbits hinzugefügt. <br>
+
Ein weiteres und besonders umsatzstarkes Anwendungsgebiet,&nbsp; das ohne Kanalcodierung nicht funktionieren würde,&nbsp; ist die Mobilkommunikation.&nbsp; Hier ergäben sich bei ungünstigen Bedingungen ohne Codierung Fehlerraten im Prozentbereich und aufgrund von Abschattungen und Mehrwegeausbreitung&nbsp; (Echos)&nbsp; treten die Fehler oft gebündelt auf.&nbsp; Die Fehlerbündellänge beträgt dabei manchmal einige Hundert Bit.
 +
*Bei der Sprachübertragung im GSM&ndash;System werden die&nbsp; $182$&nbsp; wichtigsten&nbsp; $($Klasse 1a und 1b$)$&nbsp; der insgesamt&nbsp; 260&nbsp; Bit eines Sprachrahmens&nbsp; $(20 \, \rm ms)$&nbsp; zusammen mit einigen wenigen Paritäts&ndash; und Tailbits faltungscodiert &nbsp;$($mit Memory&nbsp; $m = 4$&nbsp; und Rate &nbsp;$R = 1/2)$&nbsp; und verwürfelt.&nbsp; Zusammen mit den&nbsp; $78$&nbsp; weniger wichtigen und deshalb uncodierten Bits der Klasse 2 führt dies dazu,&nbsp; dass die Bitrate von&nbsp; $13 \, \rm kbit/s$&nbsp; auf&nbsp; $22.4 \, \rm kbit/s$&nbsp; ansteigt.<br>
  
*Bei [[Beispiele_von_Nachrichtensystemen/Allgemeine_Beschreibung_von_UMTS|UMTS]] (<i>Universal Mobile Telecommunications System</i>) werden [[Kanalcodierung/Grundlagen_der_Faltungscodierung|Faltungscodes]] mit den Raten $R = 1/2$ bzw. $R = 1/3$ eingesetzt. Bei den UMTS&ndash;Modi für höhere Datenraten und entsprechend geringeren Spreizfaktoren verwendet man dagegen [[Kanalcodierung/Grundlegendes_zu_den_Turbocodes|Turbo&ndash;Codes]] der Rate $R = 1/3$ und iterative Decodierung. Abhängig von der Anzahl der Iterationen erzielt man hier gegenüber der Faltungscodierung Gewinne von bis zu $3 \, \rm dB$.}}<br>
+
*Man nutzt die (relative) Redundanz von&nbsp; $r = (22.4 - 13)/22.4 &asymp; 0.42$&nbsp; zur Fehlerkorrektur.&nbsp; Anzumerken ist,&nbsp; dass&nbsp; $r = 0.42$&nbsp; aufgrund der hier verwendeten Definition aussagt,&nbsp; dass&nbsp; $42\%$&nbsp; der codierten Bits redundant sind.&nbsp; Mit dem Bezugswert &bdquo;Bitrate der uncodierten Folge&rdquo; ergäbe sich&nbsp; $r = 9.4/13 \approx 0.72$&nbsp; mit der Aussage: &nbsp; Zu den Informationsbits werden&nbsp; $72\%$&nbsp; Prüfbits hinzugefügt. <br>
 +
 
 +
*Bei&nbsp; [[Beispiele_von_Nachrichtensystemen/Allgemeine_Beschreibung_von_UMTS|"UMTS"]]&nbsp; ("Universal Mobile Telecommunications System")&nbsp; werden&nbsp; [[Kanalcodierung/Grundlagen_der_Faltungscodierung|"Faltungscodes"]]&nbsp; mit den Raten&nbsp; $R = 1/2$&nbsp; bzw.&nbsp; $R = 1/3$&nbsp; eingesetzt.&nbsp; Bei den UMTS&ndash;Modi für höhere Datenraten und entsprechend geringeren Spreizfaktoren verwendet man dagegen&nbsp; [[Kanalcodierung/Grundlegendes_zu_den_Turbocodes|"Turbo&ndash;Codes"]]&nbsp; der Rate&nbsp; $R = 1/3$&nbsp; und iterative Decodierung.&nbsp; Abhängig von der Anzahl der Iterationen erzielt man gegenüber der Faltungscodierung hiermit Gewinne von bis zu&nbsp; $3 \, \rm dB$.}}<br>
  
 
{{GraueBox|TEXT=  
 
{{GraueBox|TEXT=  
$\text{Beispiel 7: Fehlerschutz der Compact Disc}$
+
$\text{Beispiel 7: &nbsp; Fehlerschutz der Compact Disc}$
<br>Bei einer CD (<i>Compact Disc</i>) verwendet man einen <i>cross&ndash;interleaved</i> [[Kanalcodierung/Definition_und_Eigenschaften_von_Reed–Solomon–Codes|Reed&ndash;Solomon&ndash;Code]] (RS) und anschließend eine so genannte [https://de.wikipedia.org/wiki/Eight-to-Fourteen-Modulation Eight&ndash;to&ndash;Fourteen&ndash;Modulation]. Die Redundanz nutzt man zur Fehlererkennung und &ndash;korrektur. Dieses Codierschema zeigt folgende Charakteristika:
 
*Die gemeinsame Coderate der zwei RS&ndash;Komponentencodes beträgt $R_{\rm RS} = 24/28 &middot; 28/32  = 3/4$. Durch die 8&ndash;to&ndash;14&ndash;Modulation und einiger Kontrollbits kommt man zur Gesamtcoderate $R &asymp; 1/3$.<br>
 
  
*Bei statistisch unabhängigen Fehlern gemäß dem [[Kanalcodierung/Kanalmodelle_und_Entscheiderstrukturen#Binary_Symmetric_Channel_.E2.80.93_BSC|BSC&ndash;Modell]] (<i>Binary Symmetric Channel</i>) ist eine vollständige Korrektur möglich, so lange die Bitfehlerrate den Wert $10^{-3}$ nicht überschreitet.<br>
+
Bei einer CD&nbsp; ("Compact Disc")&nbsp; verwendet man einen&nbsp; "cross&ndash;interleaved&nbsp; [[Kanalcodierung/Definition_und_Eigenschaften_von_Reed–Solomon–Codes|Reed&ndash;Solomon&ndash;Code"]]&nbsp; $\rm (RS)$&nbsp; und anschließend eine so genannte&nbsp; [https://de.wikipedia.org/wiki/Eight-to-Fourteen-Modulation "Eight&ndash;to&ndash;Fourteen&ndash;Modulation"].&nbsp; Die Redundanz nutzt man zur Fehlererkennung und &ndash;korrektur.&nbsp; Dieses Codierschema zeigt folgende Charakteristika:
 +
*Die gemeinsame Coderate der zwei RS&ndash;Komponentencodes beträgt&nbsp; $R_{\rm RS} = 24/28 &middot; 28/32  = 3/4$.&nbsp; Durch die&nbsp; "8&ndash;to&ndash;14&ndash;Modulation"&nbsp; und einiger Kontrollbits kommt man zur Gesamtcoderate&nbsp; $R &asymp; 1/3$.<br>
  
*Der CD&ndash;spezifische <i>Cross Interleaver</i> verwürfelt $108$ Blöcke miteinander, so dass die $588$ Bit eines Blockes  (jedes Bit entspricht ca. $0.28 \, \mu m$) auf etwa $1.75\, \rm  cm$ verteilt werden.<br>
+
*Bei statistisch unabhängigen Fehlern gemäß dem&nbsp; [[Kanalcodierung/Kanalmodelle_und_Entscheiderstrukturen#Binary_Symmetric_Channel_.E2.80.93_BSC|"BSC&ndash;Modell"]]&nbsp; ("Binary Symmetric Channel")&nbsp; ist eine vollständige Korrektur möglich,&nbsp; so lange die Bitfehlerrate den Wert&nbsp; $10^{-3}$&nbsp; nicht überschreitet.<br>
  
*Mit der Coderate $R &asymp; 1/3$ kann man ca. $10\%$ Erasures korrigieren und die verloren gegangenen Werte lassen sich durch Interpolation (näherungsweise) rekonstruieren &nbsp;&#8658; <i>Fehlerverschleierung</i>.<br><br>
+
*Der CD&ndash;spezifische&nbsp; "Cross Interleaver"&nbsp; verwürfelt&nbsp; $108$&nbsp; Blöcke miteinander,&nbsp; so dass die&nbsp; $588$&nbsp; Bit eines Blockes  &nbsp;$($jedes Bit entspricht ca.&nbsp; $0.28 \, \rm {&micro; m})$&nbsp; auf etwa&nbsp; $1.75\, \rm  cm$&nbsp; verteilt werden.<br>
  
Zusammenfassend lässt sich sagen: Weist eine CD einen Kratzer von $1.75\, \rm  mm$ Länge in Abspielrichtung auf (also mehr als $6000$ aufeinanderfolgende Erasures), so sind immer noch $90\%$ aller Bits eines Blockes fehlerfrei, so dass sich auch die fehlenden $10\%$ rekonstruieren lassen, oder dass die Auslöschungen zumindest so verschleiert werden können, dass sie nicht hörbar sind.<br>
+
*Mit der Coderate&nbsp; $R &asymp; 1/3$&nbsp; kann man ca.&nbsp; $10\%$&nbsp; "Erasures"&nbsp; korrigieren.&nbsp; Die verloren gegangenen Werte lassen sich durch Interpolation&nbsp; (näherungsweise)&nbsp; rekonstruieren &nbsp; &#8658; &nbsp;"Fehlerverschleierung".<br><br>
 +
 
 +
Zusammenfassend lässt sich sagen: &nbsp; Weist eine CD einen Kratzer von&nbsp; $1.75\, \rm  mm$&nbsp; Länge in Abspielrichtung auf&nbsp; (also mehr als&nbsp; $6000$&nbsp; aufeinanderfolgende&nbsp; "Erasures"),&nbsp; so sind immer noch&nbsp; $90\%$&nbsp; aller Bits eines Blockes fehlerfrei,&nbsp; so dass sich auch die fehlenden&nbsp; $10\%$&nbsp; rekonstruieren lassen,&nbsp; oder dass die Auslöschungen zumindest so verschleiert werden können,&nbsp; dass sie nicht hörbar sind.<br>
  
 
Auf der nächsten Seite folgt eine Demonstration zur Korrekturfähigkeit der CD.}}<br>
 
Auf der nächsten Seite folgt eine Demonstration zur Korrekturfähigkeit der CD.}}<br>
Zeile 133: Zeile 171:
 
== Die „Geschlitzte CD” – eine Demonstration des LNT der TUM ==
 
== Die „Geschlitzte CD” – eine Demonstration des LNT der TUM ==
 
<br>
 
<br>
Ende der 1990er Jahre haben Mitarbeiter des  [https://www.lnt.ei.tum.de/startseite/ Lehrstuhls für Nachrichtentechnik] der [https://www.tum.de/die-tum/ TU München] unter Leitung von Professor [[Biografien_und_Bibliografien/Lehrstuhlinhaber_des_LNT#Prof._Dr.-Ing._Dr.-Ing._E.h._Joachim_Hagenauer_.281993-2006.29|Joachim Hagenauer]] eine Musik&ndash;CD gezielt beschädigt, indem insgesamt drei Schlitze von jeweils mehr als einem Millimeter Breite eingefräst wurden. Damit fehlen bei jedem Defekt fast 4000 fortlaufende Bit der Audiocodierung.<br>
+
Ende der 1990er Jahre haben Mitarbeiter des&nbsp; [https://www.ce.cit.tum.de/lnt/startseite/ "Lehrstuhls für Nachrichtentechnik"] der [https://www.tum.de/die-tum/ TU München]&nbsp; unter Leitung von Professor&nbsp; [[Biografien_und_Bibliografien/Lehrstuhlinhaber_des_LNT#Prof._Dr.-Ing._Dr.-Ing._E.h._Joachim_Hagenauer_.281993-2006.29|Joachim Hagenauer]]&nbsp; eine Musik&ndash;CD gezielt beschädigt,&nbsp; indem insgesamt drei Schlitze von jeweils mehr als einem Millimeter Breite eingefräst wurden.&nbsp; Damit fehlen bei jedem Defekt fast&nbsp; $4000$&nbsp; fortlaufende Bit der Audiocodierung.<br>
  
[[Datei:P ID2333 KC T 1 1 S2b.png|right|frame|„Geschlitzte CD”  des LNT/TUM]]
+
[[Datei:P ID2333 KC T 1 1 S2b.png|right|frame|„Geschlitzte CD”  des&nbsp; $\rm LNT/TUM$]]
  
Die Grafik zeigt die &bdquo;geschlitzte CD&rdquo;:  
+
Die Grafik zeigt die&nbsp; &bdquo;geschlitzte CD&rdquo;:  
*Sowohl in der Spur 3 als auch in der Spur 14 gibt es bei jeder Umdrehung zwei solcher fehlerhafter Bereiche.  
+
*Sowohl in der Spur 3 als auch in der Spur 14 gibt es bei jeder Umdrehung zwei solcher fehlerhafter Bereiche.
*Sie können sich die Musikqualität mit Hilfe der beiden Audioplayer (Abspielzeit jeweils ca. 15 Sekunden) verdeutlichen.  
+
*Die Theorie zu dieser Audio&ndash;Demo finden Sie im $\text{Beispiel 7}$ auf der vorherigen Seite.<br>
+
*Sie können sich die Musikqualität mit Hilfe der beiden Audioplayer&nbsp; $($jeweils ca. 15 Sekunden$)$&nbsp; verdeutlichen.
 +
 +
*Die Theorie zu dieser Audio&ndash;Demo finden Sie im&nbsp; $\text{Beispiel 7}$&nbsp; auf der vorherigen Seite.<br>
  
  
Zeile 152: Zeile 192:
  
 
<br><b>Resumee dieser Audiodemo:</b>
 
<br><b>Resumee dieser Audiodemo:</b>
*Die Fehlerkorrektur der CD basiert auf zwei seriell&ndash;verketteten [[Kanalcodierung/Definition_und_Eigenschaften_von_Reed–Solomon–Codes|Reed&ndash;Solomon&ndash;Codes]] sowie  [https://de.wikipedia.org/wiki/Eight-to-Fourteen-Modulation Eight&ndash;to&ndash;Fourteen&ndash;Modulation]. Die Gesamtcoderate zur RS&ndash;Fehlerkorrektur beträgt $R = 3/4$.<br>
+
*Die Fehlerkorrektur der CD basiert auf zwei seriell&ndash;verketteten&nbsp; [[Kanalcodierung/Definition_und_Eigenschaften_von_Reed–Solomon–Codes|"Reed&ndash;Solomon&ndash;Codes"]]&nbsp; sowie einer&nbsp; [https://de.wikipedia.org/wiki/Eight-to-Fourteen-Modulation "Eight&ndash;to&ndash;Fourteen&ndash;Modulation"].&nbsp; Die Gesamtcoderate zur RS&ndash;Fehlerkorrektur beträgt&nbsp; $R = 3/4$.<br>
  
*Ebenso wichtig für die Funktionsfähigkeit der CD wie die Codes ist der dazwischen geschaltete Interleaver, der die ausgelöschten Bits (&bdquo;Erasures&rdquo;) über eine Länge von fast $2 \, \rm cm$ verteilt.<br>
+
*Ebenso wichtig für die Funktionsfähigkeit der CD wie diese Codes ist der dazwischen geschaltete Interleaver,&nbsp; der die ausgelöschten Bits&nbsp; ("Erasures")&nbsp; über eine Länge von fast&nbsp; $2 \, \rm cm$&nbsp; verteilt.<br>
  
*Bei der '''Spur 14''' liegen die beiden defekten Bereiche genügend weit auseinander. Deshalb ist der Reed&ndash;Solomon&ndash;Decoder in der Lage, die fehlenden Daten zu rekonstruieren.<br>
+
*Bei&nbsp; '''Spur 14'''&nbsp; liegen die beiden defekten Bereiche genügend weit auseinander.&nbsp; Deshalb ist der Reed&ndash;Solomon&ndash;Decoder in der Lage,&nbsp; die fehlenden Daten zu rekonstruieren.<br>
  
*Bei der '''Spur 3''' folgen die beiden Fehlerblöcke in sehr kurzem Abstand aufeinander, so dass der Korrekturalgorithmus versagt. Das Resultat ist ein fast periodisches Klackgeräusch.<br><br>
+
*Bei&nbsp; '''Spur 3'''&nbsp; folgen die beiden Fehlerblöcke in sehr kurzem Abstand aufeinander,&nbsp; so dass der Korrekturalgorithmus versagt.&nbsp; Das Resultat ist ein fast periodisches Klackgeräusch.<br><br>
  
Wir bedanken uns bei Rainer Bauer, [[Biografien_und_Bibliografien/An_LNTwww_beteiligte_Mitarbeiter_und_Dozenten#Dr.-Ing._Thomas_Hindelang_.28am_LNT_von_1994-2000_und_2007-2012.29|Thomas Hindelang]] und [[Biografien_und_Bibliografien/An_LNTwww_beteiligte_Mitarbeiter_und_Dozenten#Manfred_J.C3.BCrgens_.28am_LNT_von_1981-2010.29|Manfred Jürgens]] herzlich dafür, diese Audio&ndash;Demo verwenden zu dürfen.<br>
+
Wir bedanken uns bei&nbsp; Rainer Bauer,&nbsp; Manfred Jürgens und&nbsp; [[Biografien_und_Bibliografien/An_LNTwww_beteiligte_Mitarbeiter_und_Dozenten#Dr.-Ing._Thomas_Hindelang_.28am_LNT_von_1994-2000_und_2007-2012.29|Thomas Hindelang]]&nbsp; für die Erlaubnis,&nbsp; diese Audio&ndash;Demo in unserem&nbsp; $\rm LNTwww$&nbsp; verwenden zu dürfen.<br>
  
 
== Zusammenspiel zwischen Quellen– und Kanalcodierung ==
 
== Zusammenspiel zwischen Quellen– und Kanalcodierung ==
 
<br>
 
<br>
Die Nachrichtenübertragung natürlicher Quellen wie Sprache, Musik, Bilder, Videos, usw. geschieht meist entsprechend dem nachfolgend skizzierten zeitdiskreten Modell.<br>
+
Die Nachrichtenübertragung natürlicher Quellen wie Sprache, Musik, Bilder, Videos, usw. geschieht meist entsprechend dem im nachfolgenden&nbsp; $\text{Beispiel 8}$&nbsp; skizzierten zeitdiskreten Modell.&nbsp; Zu dieser aus&nbsp; [Liv10]<ref name ='Liv10'>Liva, G.:&nbsp; Channel Coding.&nbsp; Vorlesungsmanuskript, Lehrstuhl für Nachrichtentechnik, TU München und DLR Oberpfaffenhofen, 2010.</ref>&nbsp; entnommenen Grafik ist Folgendes anzumerken:
 +
*Quelle und Sinke sind digitalisiert und werden durch&nbsp; (etwa gleich viele)&nbsp; Nullen und Einsen repräsentiert.<br>
 +
 
 +
*Der Quellencodierer komprimiert die binären Daten &ndash; im Beispiel ein Digitalfoto &ndash; und reduziert somit die Redundanz der Quelle.<br>
 +
 
 +
*Der Kanalcodierer fügt wieder Redundanz hinzu und zwar gezielt,&nbsp; so dass einige der auf dem Kanal entstandenen Fehler im Kanaldecoder korrigiert werden können.<br>
  
[[Datei:P ID2334 KC T 1 1 S3a v2.png|center|frame|Bildübertragung mit Quellen– und Kanalcodierung|class=fit]]
+
*Für den Kanal wird hier ein zeitdiskretes Modell mit binärem Eingang und Ausgang verwendet,&nbsp; das auch die Komponenten der technischen Sende&ndash; und Empfangseinrichtungen&nbsp; (Modulator, Entscheider, Taktwiedergewinnung) geeignet berücksichtigen sollte.<br><br>
  
Zu dieser aus [Liv10]<ref name ='Liv10'>Liva, G.: ''Channel Coding.'' Vorlesungsmanuskript, Lehrstuhl für Nachrichtentechnik, TU München und DLR Oberpfaffenhofen, 2010.</ref> entnommenen Grafik ist Folgendes anzumerken:
+
Bei richtiger Dimensionierung von Quellen&ndash; und Kanalcodierung ist die Qualität des empfangenen Fotos hinreichend gut,&nbsp; auch wenn die Sinkensymbolfolge aufgrund nicht korrigierbarer Fehlermuster nicht exakt mit der Quellensymbolfolge übereinstimmen wird.&nbsp; Man erkennt innerhalb der Sinkensymbolfolge einen (rot markierten) Bitfehler.<br>
*Quelle und Sinke sind digitalisiert und werden durch (gleich viele) Nullen und Einsen repräsentiert.<br>
 
  
*Der Quellencodierer komprimiert die binären Daten &ndash; im betrachteten Beispiel ein Digitalfoto &ndash; und reduziert somit die Redundanz der Quelle.<br>
+
{{GraueBox|TEXT=
 +
$\text{Beispiel 8:}$&nbsp; Für die Grafik wurde beispielhaft und stark vereinfachend angenommen,&nbsp; dass
 +
[[Datei:P ID2334 KC T 1 1 S3a v2.png|right|frame|Bildübertragung mit Quellen– und Kanalcodierung|class=fit]]
  
*Der Kanalcodierer fügt wieder Redundanz hinzu und zwar gezielt, so dass die auf dem Kanal entstandenen Fehler im Kanaldecoder größtenteils korrigiert werden können.<br>
+
*die Quellensymbolfolge nur die Länge&nbsp; $40$&nbsp; hat,
  
*Für den Kanal wird hier ein zeitdiskretes Modell mit binärem Eingang und Ausgang verwendet, das auch die Komponenten der technischen Sende&ndash; und Empfangseinrichtungen (Modulator, Entscheider, Taktwiedergewinnung) geeignet berücksichtigen sollte.<br><br>
+
*der Quellencodierer die Daten um den Faktor&nbsp; $40/16 = 2.5$&nbsp; komprimiert,&nbsp; und
 +
 +
*der Kanalcoder&nbsp; $50\%$&nbsp; Redundanz hinzufügt.  
  
Bei richtiger Dimensionierung von Quellen&ndash; und Kanalcodierung ist die Qualität des empfangenen Fotos hinreichend gut, auch wenn die Sinkensymbolfolge aufgrund nichtkorrigierter Fehlermuster nicht exakt mit der Quellensymbolfolge übereinstimmen wird. Im Beispiel erkennt man einen Bitfehler.<br>
 
  
{{GraueBox|TEXT=
+
Übertragen werden müssen also nur&nbsp; $24$&nbsp; Codersymbole statt der&nbsp; $40$&nbsp; Quellensymbole,&nbsp; was die Übertragungsrate insgesamt um&nbsp; $40\%$&nbsp; reduziert.<br>
$\text{Beispiel 8:}$&nbsp; Für obige Grafik wurde beispielhaft und stark vereinfachend angenommen, dass
 
*die Quellensymbolfolge nur die Länge $40$ hat,
 
*der Quellencodierer die Daten um den Faktor $40/16 = 2.5$ komprimiert, und
 
*der Kanalcoder $50\%$ Redundanz hinzufügt.  
 
  
 +
Würde man auf die Quellencodierung verzichten,&nbsp; in dem man das ursprüngliche Foto im BMP&ndash;Format übertragen würde und nicht das komprimierte JPG&ndash;Bild,&nbsp;
 +
*so wäre die Qualität vergleichbar,&nbsp;
  
Übertragen werden müssen also nur $24$ Codersymbole statt $40$ Quellensymbole, was die Übertragungsrate insgesamt um $40\%$ reduziert.<br>
+
*aber eine um den Faktor&nbsp; $2.5$&nbsp; höhere Bitrate  erforderlich
  
Würde man auf die Quellencodierung verzichten, in dem man das ursprüngliche Foto im BMP&ndash;Format übertragen würde und nicht das komprimierte JPG&ndash;Bild, so wäre die Qualität vergleichbar, aber eine um den Faktor 2.5 höhere Bitrate und damit sehr viel mehr Aufwand erforderlich.}}<br>
+
*und damit sehr viel höherer  Aufwand.}}<br>
  
 
{{GraueBox|TEXT=  
 
{{GraueBox|TEXT=  
$\text{Beispiel 9:}$&nbsp; Würde man sowohl auf die Quellen&ndash; als auch auf die Kanalcodierung verzichten, also direkt die BMP&ndash;Daten ohne Fehlerschutz übertragen, so wäre das Ergebnis trotz (um den Faktor 40/24) größerer Bitrate äußerst dürftig.<br>
+
$\text{Beispiel 9:}$&nbsp;  
 +
[[Datei:P ID2335 KC T 1 1 S3b v2.png|right|frame|Bildübertragung ohne Quellen– und Kanalcodierung |class=fit]]
 +
<br><br><br><br>
 +
Würde man  
 +
*sowohl auf die Quellen&ndash;  
 +
*als auch auf die Kanalcodierung verzichten,  
 +
 
  
[[Datei:P ID2335 KC T 1 1 S3b v2.png|center|frame|Bildübertragung ohne Quellen– und Kanalcodierung |class=fit]]}}
+
also direkt die BMP&ndash;Daten ohne Fehlerschutz übertragen,&nbsp; so wäre das Ergebnis trotz&nbsp; $($um den Faktor&nbsp; $40/24)$&nbsp; größerer Bitrate äußerst dürftig.<br clear=all>
 +
[[Datei:P ID2336 KC T 1 1 S3c v2.png|left|frame|Bildübertragung mit Quellencodierung, ohne Kanalcodierung |class=fit]]
  
  
{{GraueBox|TEXT=
+
'''Quellencodierung, aber keine Kanalcodierung'''
$\text{Beispiel 10:}$&nbsp; Nun betrachten wir den Fall, dass man die komprimierten Daten (zum Beispiel JPG) ohne Fehlersicherungsmaßnahmen direkt überträgt. <br>
 
  
[[Datei:P ID2336 KC T 1 1 S3c v2.png|center|frame|Bildübertragung mit Quellencodierung, ohne Kanalcodierung |class=fit]]
+
Nun betrachten wir den Fall,&nbsp; dass man die komprimierten Daten&nbsp; (zum Beispiel "JPG")&nbsp; ohne Fehlersicherungsmaßnahmen direkt überträgt.&nbsp; Dann gilt:
  
*Da die komprimierte Quelle nur noch wenig Redundanz besitzt, führt jeder einzelne Übertragungsfehler dazu, dass ganze Bildblöcke falsch decodiert werden.<br>
+
#Die komprimierte Quelle besitzt nur noch wenig Redundanz.
*Dieses Codierschema (Quellencodierung, aber keine Kanalcodierung) sollte auf jeden Fall vermieden werden.}}
+
#Deshalb  führt jeder einzelne Übertragungsfehler dazu,&nbsp; dass ganze Bildblöcke falsch decodiert werden.<br>
 +
#'''Dieses Codierschema sollte man auf jeden Fall vermeiden'''.}}
  
 
== Blockschaltbild und Voraussetzungen ==
 
== Blockschaltbild und Voraussetzungen ==
 
<br>
 
<br>
 +
Im weiteren Verlauf gehen wir von dem skizzierten Blockschaltbild mit Kanalcodierer,&nbsp; Digitalem Kanal und Kanaldecoder aus.
 +
 
[[Datei:P ID2337 KC T 1 1 S4 v2.png|right|frame|Blockschaltbild zur Beschreibung der Kanalcodierung|class=fit]]
 
[[Datei:P ID2337 KC T 1 1 S4 v2.png|right|frame|Blockschaltbild zur Beschreibung der Kanalcodierung|class=fit]]
Im weiteren Verlauf gehen wir von dem skizzierten Blockschaltbild mit Kanalcodierer, Digitalem Kanal und Kanaldecoder aus.
 
  
 
Dabei gelten folgende Voraussetzungen:
 
Dabei gelten folgende Voraussetzungen:
*Der Vektor $\underline{u} = (u_1, u_2, \text{...}, u_k)$  kennzeichnet einen '''Informationsblock''' mit $k$ Symbolen.  
+
*Der Vektor&nbsp; $\underline{u} = (u_1, u_2, \text{...} \hspace{0.05cm}, u_k)$&nbsp; kennzeichnet einen&nbsp; '''Informationsblock'''&nbsp; mit&nbsp; $k$&nbsp; Symbolen.&nbsp; Meist beschränken wir uns auf Binärsymbole (Bits) &nbsp; &#8658; &nbsp; $u_i \in  \{0, \, 1\}$ für $i = 1, 2, \text{...} \hspace{0.05cm}, k$&nbsp; mit gleichen Auftrittswahrscheinlichkeiten für Nullen und Einsen.<br>
*Meist beschränken wir uns auf Binärsymbole (Bits) &nbsp; &#8658; &nbsp; $u_i \in  \{0, \, 1\}$ für $i = 1, 2, \text{...}, k$ mit gleichen Auftrittswahrscheinlichkeiten für Nullen und Einsen.<br>
 
  
*Jeder Informationsblock $\underline{u}$ wird durch ein '''Codewort''' (oder einen <i>Codeblock</i>) $\underline{x} = (x_1, x_2, \text{...}, x_n)$ mit $n \ge k$, $x_i \in  \{0, \, 1\}$  dargestellt. Man spricht dann von einem binären $n, k$&ndash;Blockcode $C$. Die Zuordnung bezeichnen wir mit $\underline{x} = {\rm enc}(\underline{u})$, wobei &bdquo;enc&rdquo; für &bdquo;Encoder&ndash;Funktion&rdquo; steht.<br>
+
*Jeder Informationsblock&nbsp; $\underline{u}$&nbsp; wird durch ein&nbsp; '''Codewort'''&nbsp; (oder einen&nbsp; "Codeblock")&nbsp; $\underline{x} = (x_1, x_2, \text{...} \hspace{0.05cm}, x_n)$&nbsp; mit&nbsp; $n \ge k$, $x_i \in  \{0, \, 1\}$&nbsp; dargestellt.&nbsp; Man spricht dann von einem binären&nbsp; $(n, k)$&ndash;Blockcode&nbsp; $C$.&nbsp; Die Zuordnung bezeichnen wir mit&nbsp; $\underline{x} = {\rm enc}(\underline{u})$,&nbsp; wobei &bdquo;enc&rdquo; für &bdquo;Encoder&ndash;Funktion&rdquo; steht.<br>
  
*Das '''Empfangswort''' $\underline{y}$ ergibt sich aus dem Codewort $\underline{x}$ durch [https://en.wikipedia.org/wiki/Modular_arithmetic Modulo&ndash;2&ndash;Addition] mit dem ebenfalls binären Fehlervektor $\underline{e} = (e_1, e_2, \text{...}, e_n)$, wobei &bdquo;$e= 1$&rdquo; für einen Übertragungfehler steht und &bdquo;$e= 0$&rdquo; anzeigt, dass das $i$&ndash;te Bit des Codewortes richtig übertragen wurde. Es gilt also:
+
*Das&nbsp; '''Empfangswort'''&nbsp; $\underline{y}$&nbsp; ergibt sich aus dem Codewort&nbsp; $\underline{x}$&nbsp; durch&nbsp; [https://en.wikipedia.org/wiki/Modular_arithmetic "Modulo&ndash;2&ndash;Addition"]&nbsp; mit dem ebenfalls binären Fehlervektor&nbsp; $\underline{e} = (e_1, e_2, \text{...} \hspace{0.05cm}, e_n)$,&nbsp; wobei&nbsp; "$e= 1$"&nbsp; für einen Übertragungfehler steht und&nbsp; "$e= 0$"&nbsp; anzeigt,&nbsp; dass das&nbsp; $i$&ndash;te Bit des Codewortes richtig übertragen wurde.&nbsp; Es gilt also:
  
::<math>\underline{y} = \underline{x} \oplus \underline{e} \hspace{0.05cm}, \hspace{0.3cm} y_i \hspace{-0.15cm} = \hspace{-0.15cm} x_i \oplus e_i \hspace{0.05cm}, \hspace{0.2cm} i = 1, ... \hspace{0.05cm} , n\hspace{0.05cm}, x_i \hspace{-0.15cm} \in  \hspace{-0.15cm} \{ 0, 1 \}\hspace{0.05cm}, \hspace{0.2cm}e_i \in  \{ 0, 1 \}\hspace{0.3cm}
+
::<math>\underline{y} = \underline{x} \oplus \underline{e} \hspace{0.05cm}, \hspace{0.5cm} y_i =   x_i \oplus e_i \hspace{0.05cm}, \hspace{0.2cm} i = 1, \text{...} \hspace{0.05cm} , n\hspace{0.05cm}, x_i \hspace{-0.05cm} \in  \hspace{-0.05cm} \{ 0, 1 \}\hspace{0.05cm}, \hspace{0.5cm}e_i \in  \{ 0, 1 \}\hspace{0.5cm}
\Rightarrow \hspace{0.3cm}y_i  \in  \{ 0, 1 \}\hspace{0.05cm}.</math>
+
\Rightarrow \hspace{0.5cm}y_i  \in  \{ 0, 1 \}\hspace{0.05cm}.</math>
  
*Die Beschreibung durch das '''Digitale Kanalmodell''' &ndash; also mit binärem Eingang und Ausgang &ndash; ist allerdings nur dann anwendbar, wenn das Übertragungssystem harte Entscheidungen trifft &ndash; siehe [[Kanalcodierung/Kanalmodelle_und_Entscheiderstrukturen#AWGN.E2.80.93Kanal_bei_bin.C3.A4rem_Eingang| AWGN&ndash;Kanal bei binärem Eingang]]. Systeme mit [[Kanalcodierung/Decodierung_linearer_Blockcodes#Codiergewinn_.E2.80.93_Bitfehlerrate_bei_AWGN|Soft Decision]] sind mit diesem einfachen Modell nicht modellierbar.<br>
+
*Die Beschreibung durch das&nbsp; '''Digitale Kanalmodell'''&nbsp; &ndash; also mit binärem Eingang und Ausgang &ndash; ist allerdings nur dann anwendbar,&nbsp; wenn das Übertragungssystem harte Entscheidungen trifft &ndash; siehe&nbsp; [[Kanalcodierung/Kanalmodelle_und_Entscheiderstrukturen#AWGN.E2.80.93Kanal_bei_bin.C3.A4rem_Eingang| "AWGN&ndash;Kanal bei binärem Eingang"]]. &nbsp; Systeme mit&nbsp; [[Kanalcodierung/Decodierung_linearer_Blockcodes#Codiergewinn_.E2.80.93_Bitfehlerrate_bei_AWGN|"Soft Decision"]]&nbsp; sind mit diesem einfachen Modell nicht modellierbar.<br>
  
*Der Vektor $\underline{v}$ nach der '''Kanaldecodierung''' hat die gleiche Länge $k$ wie der Informationsblock  $\underline{u}$. Den Decodiervorgang beschreiben wir mit der &bdquo;Decoder&ndash;Funktion&rdquo; als $\underline{v} = {\rm enc}^{-1}(\underline{y}) = {\rm dec}(\underline{y})$. Im fehlerfreien Fall gilt analog zu $\underline{x} = {\rm enc}(\underline{u})$ auch  $\underline{v} = {\rm enc}^{-1}(\underline{y})$.<br>
+
*Der Vektor&nbsp; $\underline{v}$&nbsp; nach der&nbsp; '''Kanaldecodierung'''&nbsp; hat die gleiche Länge&nbsp; $k$&nbsp; wie der Informationsblock&nbsp; $\underline{u}$.&nbsp; Den Decodiervorgang beschreiben wir mit der&nbsp; "Decoder&ndash;Funktion"&nbsp; als&nbsp; $\underline{v} = {\rm enc}^{-1}(\underline{y}) = {\rm dec}(\underline{y})$.&nbsp; Im fehlerfreien Fall gilt analog zu&nbsp; $\underline{x} = {\rm enc}(\underline{u})$&nbsp; auch&nbsp; $\underline{v} = {\rm enc}^{-1}(\underline{y})$.<br>
  
*Ist der Fehlervektor $\underline{e} \ne \underline{0}$, so ist $\underline{y}$ meist kein gültiges Element des verwendeten Blockcodes, und der Decodiervorgang ist dann keine reine Zuordnung $\underline{y} \rightarrow  \underline{v}$, sondern eine auf maximale Übereinstimmung (mimimale Fehlerwahrscheinlichkeit) basierende Schätzung von $\underline{v}$.<br>
+
*Ist der Fehlervektor&nbsp; $\underline{e} \ne \underline{0}$,&nbsp; so ist&nbsp; $\underline{y}$&nbsp; meist kein gültiges Element des verwendeten Blockcodes,&nbsp; und die Decodierung ist dann keine reine Zuordnung&nbsp; $\underline{y} \rightarrow  \underline{v}$,&nbsp; sondern eine auf maximale Übereinstimmung&nbsp; (mimimale Fehlerwahrscheinlichkeit)&nbsp; basierende Schätzung von&nbsp; $\underline{v}$.<br>
  
 
== Einige wichtige Definitionen zur Blockcodierung ==
 
== Einige wichtige Definitionen zur Blockcodierung ==
Zeile 230: Zeile 282:
 
Wir betrachten nun den beispielhaften binären Blockcode
 
Wir betrachten nun den beispielhaften binären Blockcode
  
:<math>\mathcal{C} = \{ (0, 0, 0, 0, 0) \hspace{0.05cm}, (0, 1, 0, 1, 0) \hspace{0.05cm},(1, 0, 1, 0, 1) \hspace{0.05cm},(1, 1, 1, 1, 1) \}\hspace{0.05cm}.</math>
+
:<math>\mathcal{C} = \{ (0, 0, 0, 0, 0) \hspace{0.05cm},\hspace{0.15cm} (0, 1, 0, 1, 0) \hspace{0.05cm},\hspace{0.15cm}(1, 0, 1, 0, 1) \hspace{0.05cm},\hspace{0.15cm}(1, 1, 1, 1, 1) \}\hspace{0.05cm}.</math>
  
Dieser Code wäre zum Zwecke der Fehlererkennung oder &ndash;korrektur weniger gut geeignet. Aber er ist so konstruiert, dass er die Berechnung wichtiger Beschreibungsgrößen anschaulich verdeutlicht:
+
Dieser Code wäre zum Zwecke der Fehlererkennung oder &ndash;korrektur ungeeignet.&nbsp; Aber er ist so konstruiert,&nbsp; dass er die Berechnung wichtiger Beschreibungsgrößen anschaulich verdeutlicht:
*Jedes einzelne Codewort $\underline{u}$ wird durch fünf Bit beschrieben. Im gesamten Buch drücken wir diesen Sachverhalt durch die '''Codewortlänge''' (englisch: <i>Code Length</i>) $n = 5$ aus.
+
*Jedes einzelne Codewort&nbsp; $\underline{u}$&nbsp; wird durch fünf Bit beschrieben.&nbsp; Im gesamten Buch drücken wir diesen Sachverhalt durch die&nbsp; '''Codewortlänge'''&nbsp; (englisch: &nbsp;"code word length")&nbsp; $n = 5$&nbsp; aus.
  
*Der obige Code beinhaltet vier Elemente. Damit ist der '''Codeumfang''' (englisch: <i>Size</i>) $|C| = 4$. Entsprechend gibt es auch vier eindeutige Zuordnungen (englisch: <i>Mappings</i>) zwischen $\underline{u}$ und $\underline{x}$.
+
*Der obige Code beinhaltet vier Elemente.&nbsp; Damit ist der&nbsp; '''Codeumfang'''&nbsp; (englisch: &nbsp; "code size")&nbsp; $|C| = 4$.&nbsp; Entsprechend gibt es auch vier eindeutige Zuordnungen&nbsp; (englisch: &nbsp;"mappings")&nbsp; zwischen&nbsp; $\underline{u}$&nbsp; und&nbsp; $\underline{x}$.
  
*Die Länge eines  Informationsblocks  $\underline{u}$  &nbsp; &rArr; &nbsp: '''Informationsblocklänge''' wird mit $k$ bezeichnet. Da bei allen binären Codes $|C| = 2^k$ gilt, folgt aus$|C| = 4$ der Wert $k = 2$. Die Zuordnungen zwischen $\underline{u}$ und $\underline{x}$ lauten bei obigem Code $C$:
+
*Die Länge eines  Informationsblocks&nbsp; $\underline{u}$  &nbsp; &rArr; &nbsp; '''Informationsblocklänge'''&nbsp; wird mit&nbsp; $k$&nbsp; bezeichnet.&nbsp; Da bei allen binären Codes&nbsp; $|C| = 2^k$&nbsp; gilt,&nbsp; folgt aus&nbsp; $|C| = 4$&nbsp; der Wert&nbsp; $k = 2$.&nbsp; Die Zuordnungen zwischen&nbsp; $\underline{u}$&nbsp; und&nbsp; $\underline{x}$&nbsp; lauten bei obigem Code&nbsp; $C$:
  
::<math>\underline{u_0} = (0, 0) \leftrightarrow (0, 0, 0, 0, 0) = \underline{x_0}\hspace{0.05cm}, \hspace{0.2cm}
+
::<math>\underline{u_0} = (0, 0) \hspace{0.2cm}\leftrightarrow \hspace{0.2cm}(0, 0, 0, 0, 0) = \underline{x_0}\hspace{0.05cm}, \hspace{0.8cm}
\underline{u_1} = (0, 1) \leftrightarrow (0, 1, 0, 1, 0) = \underline{x_1}\hspace{0.05cm}, </math>
+
\underline{u_1} = (0, 1) \hspace{0.2cm}\leftrightarrow \hspace{0.2cm}(0, 1, 0, 1, 0) = \underline{x_1}\hspace{0.05cm}, </math>
  
::<math>\underline{u_2} = (1, 0) \leftrightarrow (1, 0, 1, 0, 1) = \underline{x_2}\hspace{0.05cm}, \hspace{0.2cm}
+
::<math>\underline{u_2} = (1, 0)\hspace{0.2cm} \leftrightarrow \hspace{0.2cm}(1, 0, 1, 0, 1) = \underline{x_2}\hspace{0.05cm}, \hspace{0.8cm}
\underline{u_3} = (1, 1) \leftrightarrow (1, 1, 1, 1, 1) = \underline{x_3}\hspace{0.05cm}.</math>
+
\underline{u_3} = (1, 1) \hspace{0.2cm} \leftrightarrow \hspace{0.2cm}(1, 1, 1, 1, 1) = \underline{x_3}\hspace{0.05cm}.</math>
  
*Der Code weist die '''Coderate''' $R = k/n = 2/5$ auf. Dementsprechend beträgt seine Redundanz $1-R$, also $60\%$. Ohne Fehlerschutz (also für den Fall $n = k$) wäre die Coderate $R = 1$.<br>
+
*Der Code weist die&nbsp; '''Coderate'''&nbsp; $R = k/n = 2/5$&nbsp; auf.&nbsp; Dementsprechend beträgt seine Redundanz&nbsp; $1-R$,&nbsp; also&nbsp; $60\%$.&nbsp; Ohne Fehlerschutz &nbsp;$($also für den Fall&nbsp; $n = k)$&nbsp; wäre die Coderate&nbsp; $R = 1$.<br>
  
*Eine kleine Coderate  zeigt an, dass von den $n$ Bits eines Codewortes nur sehr wenige tatsächlich Information tragen. Beispielsweise hat ein Wiederholungscode $(k = 1)$ mit $n = 10$ die  Coderate $R = 0.1$.<br>
+
*Eine kleine Coderate  zeigt an,&nbsp; dass von den&nbsp; $n$&nbsp; Bits eines Codewortes nur sehr wenige tatsächlich Information tragen.&nbsp; Beispielsweise hat ein Wiederholungscode&nbsp; $(k = 1)$&nbsp; mit&nbsp; $n = 10$&nbsp; die  Coderate&nbsp; $R = 0.1$.<br>
  
*Das '''Hamming&ndash;Gewicht''' $w_{\rm H}(\underline{x})$ des Codewortes $\underline{x}$ gibt die Zahl der Codewortelemente $x_i \ne 0$ an. Bei einem binären Code &nbsp; &#8658; &nbsp; $x_i \in  \{0, \, 1\}$ ist $w_{\rm H}(\underline{x})$ gleich der Summe $x_1 + x_2 + \text{...} + x_n$. Im Beispiel:
+
*Das&nbsp; '''Hamming&ndash;Gewicht'''&nbsp; $w_{\rm H}(\underline{x})$&nbsp; des Codewortes&nbsp; $\underline{x}$&nbsp; gibt die Zahl der Codewortelemente&nbsp; $x_i \ne 0$&nbsp; an.&nbsp; Bei einem binären Code &nbsp; &#8658; &nbsp; $x_i \in  \{0, \, 1\}$&nbsp; ist&nbsp; $w_{\rm H}(\underline{x})$&nbsp; gleich der Summe&nbsp; $x_1 + x_2 + \hspace{0.05cm}\text{...} \hspace{0.05cm}+ x_n$.&nbsp; Im Beispiel:
  
::<math>w_{\rm H}(\underline{x}_0) = 0\hspace{0.05cm}, \hspace{0.3cm}w_{\rm H}(\underline{x}_1) = 2\hspace{0.05cm}, \hspace{0.3cm} w_{\rm H}(\underline{x}_2) = 3\hspace{0.05cm}, \hspace{0.3cm}w_{\rm H}(\underline{x}_3) = 5\hspace{0.05cm}.  
+
::<math>w_{\rm H}(\underline{x}_0) = 0\hspace{0.05cm}, \hspace{0.4cm}w_{\rm H}(\underline{x}_1) = 2\hspace{0.05cm}, \hspace{0.4cm} w_{\rm H}(\underline{x}_2) = 3\hspace{0.05cm}, \hspace{0.4cm}w_{\rm H}(\underline{x}_3) = 5\hspace{0.05cm}.  
 
</math>
 
</math>
  
*Die '''Hamming&ndash;Distanz''' $d_{\rm H}(\underline{x}, \ \underline{x}\hspace{0.03cm}')$ zwischen den Codeworten $\underline{x}$ und $\underline{x}\hspace{0.03cm}'$ bezeichnet die Anzahl der Bitpositionen, in denen sich die beiden Codeworte unterscheiden:
+
*Die&nbsp; '''Hamming&ndash;Distanz''' &nbsp; $d_{\rm H}(\underline{x}, \ \underline{x}\hspace{0.03cm}')$ &nbsp; zwischen den Codeworten&nbsp; $\underline{x}$&nbsp; und&nbsp; $\underline{x}\hspace{0.03cm}'$&nbsp; bezeichnet die Anzahl der Bitpositionen,&nbsp; in denen sich die beiden Codeworte unterscheiden:
  
::<math>d_{\rm H}(\underline{x}_0, \hspace{0.05cm}\underline{x}_1) = 2\hspace{0.05cm}, \hspace{0.3cm}
+
::<math>d_{\rm H}(\underline{x}_0, \hspace{0.05cm}\underline{x}_1) = 2\hspace{0.05cm}, \hspace{0.4cm}
d_{\rm H}(\underline{x}_0, \hspace{0.05cm}\underline{x}_2) = 3\hspace{0.05cm}, \hspace{0.3cm}
+
d_{\rm H}(\underline{x}_0, \hspace{0.05cm}\underline{x}_2) = 3\hspace{0.05cm}, \hspace{0.4cm}
d_{\rm H}(\underline{x}_0, \hspace{0.05cm}\underline{x}_3) = 5\hspace{0.05cm},\hspace{0.3cm}
+
d_{\rm H}(\underline{x}_0, \hspace{0.05cm}\underline{x}_3) = 5\hspace{0.05cm},\hspace{0.4cm}
d_{\rm H}(\underline{x}_1, \hspace{0.05cm}\underline{x}_2) = 5\hspace{0.05cm}, \hspace{0.3cm}
+
d_{\rm H}(\underline{x}_1, \hspace{0.05cm}\underline{x}_2) = 5\hspace{0.05cm}, \hspace{0.4cm}
d_{\rm H}(\underline{x}_1, \hspace{0.05cm}\underline{x}_3) = 3\hspace{0.05cm}, \hspace{0.3cm}
+
d_{\rm H}(\underline{x}_1, \hspace{0.05cm}\underline{x}_3) = 3\hspace{0.05cm}, \hspace{0.4cm}
 
d_{\rm H}(\underline{x}_2, \hspace{0.05cm}\underline{x}_3) = 2\hspace{0.05cm}.</math>
 
d_{\rm H}(\underline{x}_2, \hspace{0.05cm}\underline{x}_3) = 2\hspace{0.05cm}.</math>
  
*Eine wichtige Eigenschaft eines Codes $C$, die seine Korrekturfähigkeit wesentlich beeinflusst, ist die '''minimale Distanz''' zwischen zwei beliebigen Codeworten:
+
*Eine wichtige Eigenschaft eines Codes&nbsp; $C$,&nbsp; die seine Korrekturfähigkeit wesentlich beeinflusst,&nbsp; ist die&nbsp; '''minimale Distanz'''&nbsp; zwischen zwei beliebigen Codeworten:
  
 
::<math>d_{\rm min}(\mathcal{C}) =
 
::<math>d_{\rm min}(\mathcal{C}) =
Zeile 269: Zeile 321:
  
 
{{BlaueBox|TEXT=  
 
{{BlaueBox|TEXT=  
$\text{Definition:}$&nbsp; Ein <b>(<i>n</i>, <i>k</i>, <i>d</i><sub>min</sub>)&ndash;Blockcode</b> besitzt die Codewortlänge $n$, die Informationsblocklänge $k$ sowie die minimale Distanz $d_{\rm min}$.
+
$\text{Definition:}$&nbsp; Ein&nbsp; $(n, \hspace{0.05cm}k, \hspace{0.05cm}d_{\rm min})\text{ &ndash; Blockcode}$&nbsp; besitzt die Codewortlänge&nbsp; $n$, die Informationsblocklänge&nbsp; $k$&nbsp; und die minimale Distanz&nbsp; $d_{\rm min}$.
*Nach dieser Nomenklatur handelt es sich im hier betrachteten Beispiel um einen (5, 2, 2)&ndash;Blockcode.
+
*Nach dieser Nomenklatur handelt es sich im hier betrachteten Beispiel um einen&nbsp; $(5, \hspace{0.05cm}2,\hspace{0.05cm} 2)$ &ndash; Blockcode.
*Manchmal verzichtet man auf die Angabe von $d_{\rm min}$ und spricht dann von einem '''(<i>n</i>, <i>k</i>)&ndash;Blockcode '''. }}<br>
+
*Manchmal verzichtet man auf die Angabe von&nbsp; $d_{\rm min}$&nbsp; und spricht dann von einem&nbsp; $(n,\hspace{0.05cm} k)$ &ndash; Blockcode.}}<br>
  
 
== Beispiele für Fehlererkennung und Fehlerkorrektur ==
 
== Beispiele für Fehlererkennung und Fehlerkorrektur ==
 
<br>
 
<br>
 
Die eben definierten Größen sollen nun an zwei Beispielen verdeutlicht werden.
 
Die eben definierten Größen sollen nun an zwei Beispielen verdeutlicht werden.
 +
 +
{{GraueBox|TEXT=
 +
$\text{Beispiel 11:}$&nbsp; &nbsp; &nbsp;$\text{(4, 2, 2)&ndash;Blockcode}$
  
 
[[Datei:P ID2532 KC T 1 1 S5a v2.png|right|frame|(4, 2, 2)–Blockcode zur Fehlererkennung|class=fit]]
 
[[Datei:P ID2532 KC T 1 1 S5a v2.png|right|frame|(4, 2, 2)–Blockcode zur Fehlererkennung|class=fit]]
{{GraueBox|TEXT=
+
In der Grafik  verdeutlichen die nach rechts bzw. links zeigenden Pfeile den Codiervorgang bzw. die Decodierung:
$\text{Beispiel 11: (4, 2, 2)&ndash;Blockcode}$
 
  
Die nach rechts bzw. links zeigenden Pfeile verdeutlichen den Codiervorgang bzw. die Decodierung:
 
 
:$$\underline{u_0} = (0, 0) \leftrightarrow (0, 0, 0, 0) = \underline{x_0}\hspace{0.05cm},$$
 
:$$\underline{u_0} = (0, 0) \leftrightarrow (0, 0, 0, 0) = \underline{x_0}\hspace{0.05cm},$$
:$$\underline{u_1} = (0, 1) \leftrightarrow (0, 1, 0, 1) = \underline{x_1}\hspace{0.05cm},$$
+
:$$\underline{u_1} = (0, 1) \leftrightarrow (0, 1, 0, 1) = \underline{x_1}$$
:$$\underline{u_2} = (1, 0) \leftrightarrow (1, 0, 1, 0) = \underline{x_2}\hspace{0.05cm}, $$
+
:$$\underline{u_2} = (1, 0) \leftrightarrow (1, 0, 1, 0) = \underline{x_2}\hspace{0.05cm},$$
 
:$$\underline{u_3} = (1, 1) \leftrightarrow (1, 1, 1, 1) = \underline{x_3}\hspace{0.05cm}.$$
 
:$$\underline{u_3} = (1, 1) \leftrightarrow (1, 1, 1, 1) = \underline{x_3}\hspace{0.05cm}.$$
  
Rechts sind alle $2^4 = 16$ möglichen Empfangsworte $\underline{y}$ dargestellt:
 
* Von diesen können $2^n - 2^k = 12$ nur durch Bitfehler entstanden sein.
 
*Empfängt der Decoder ein solches &bdquo;weißes&rdquo; Codewort, so erkennt er zwar einen Fehler, er kann diesen aber wegen $d_{\rm min} = 2$ nicht korrigieren.
 
*Empfängt er $\underline{y} = (0, 0, 0, 1)$, so kann mit gleicher Wahrscheinlichkeit das Codewort $\underline{x_0} = (0, 0, 0, 0)$ oder $\underline{x_1} = (0, 1, 0, 1)$ gesendet worden sein.}}<br>
 
  
 +
Rechts erkennt man alle&nbsp; $2^4 = 16$&nbsp; möglichen Empfangsworte&nbsp; $\underline{y}$:
 +
* Von diesen ergeben sich&nbsp; $2^n - 2^k = 12$&nbsp; nur durch Bitfehler.
 +
 +
*Empfängt der Decoder ein solches &bdquo;weißes&rdquo; Codewort,&nbsp; so erkennt er zwar einen Fehler,&nbsp; er kann diesen aber wegen&nbsp; $d_{\rm min} = 2$&nbsp; nicht korrigieren.
 +
 +
*Empfängt er beispielsweise&nbsp; $\underline{y} = (0, 0, 0, 1)$,&nbsp; so kann nämlich mit gleicher Wahrscheinlichkeit&nbsp; $\underline{x_0} = (0, 0, 0, 0)$&nbsp; oder&nbsp; $\underline{x_1} = (0, 1, 0, 1)$ gesendet worden sein.}}<br>
 +
 +
{{GraueBox|TEXT=
 +
$\text{Beispiel 11:}$&nbsp; &nbsp; &nbsp;$\text{(5, 2, 3)&ndash;Blockcode}$
 
[[Datei:P ID2533 KC T 1 1 S5b v2.png|right|frame|(5, 2, 3)–Blockcode zur Fehlerkorrektur|class=fit]]
 
[[Datei:P ID2533 KC T 1 1 S5b v2.png|right|frame|(5, 2, 3)–Blockcode zur Fehlerkorrektur|class=fit]]
{{GraueBox|TEXT=
 
$\text{Beispiel 12: (5, 2, 3)&ndash;Blockcode}$
 
 
Vier gültige Codeworte wegem $k=2$:
 
*$(0, 0, 0, 0, 0)$,
 
*$(0, 1, 0, 1, 1)$,
 
*$(1, 0, 1, 1, 0)$,
 
*$(1, 1, 1, 0, 1)$.
 
  
 +
Hier gibt es wegen $k=2$ vier gültige Codeworte :
 +
:$$\underline{x_0} = (0, 0, 0, 0, 0)\hspace{0.05cm},$$
 +
:$$\underline{x_1} =(0, 1, 0, 1, 1)\hspace{0.05cm},$$
 +
:$$\underline{x_2} =(1, 0, 1, 1, 0)\hspace{0.05cm},$$
 +
:$$\underline{x_3} =(1, 1, 1, 0, 1).$$
  
Dargestellt ist die Empfängerseite:
+
In der Grafik dargestellt ist die Empfängerseite, wobei man verfälschte Bit an der Kursivschrift erkennt.
*In der Grafik erkennt man verfälschte Bit an der Kursivschrift.
+
<br clear=all>
*Von den $2^n - 2^k = 28$ unzulässigen Codeworten lassen sich nun $20$ einem gültigen Codewort (rot, grün, blau oder ocker) zuordnen, wenn man davon ausgeht, dass ein einziger  Bitfehler wahrscheinlicher ist als deren zwei.  
+
*Von den&nbsp; $2^n - 2^k = 28$&nbsp; unzulässigen Codeworten lassen sich nun&nbsp; $20$&nbsp; einem gültigen Codewort&nbsp; (Füllfarbe: &nbsp; rot,&nbsp; grün,&nbsp; blau oder ocker)&nbsp; zuordnen,&nbsp; wenn man davon ausgeht,&nbsp; dass ein einziger  Bitfehler wahrscheinlicher ist als deren zwei oder mehr.
*Zu jedem gültigen Codewort (rot, grün, blau oder ocker) gibt es fünf unzulässige Codeworte mit jeweils nur einer Verfälschung &nbsp; &rArr; &nbsp; Hamming&ndash;Distanz 1.  
+
*Die Fehlerkorrektur ist für diese aufgrund der minimalen Distanz $d_{\rm min} = 3$ zwischen den Codeworten möglich.  
+
*Zu jedem gültigen Codewort  gibt es fünf unzulässige Codeworte mit jeweils nur einer Verfälschung &nbsp; &rArr; &nbsp; Hamming&ndash;Distanz&nbsp; $d_{\rm H} =1$.&nbsp; Diese sind in dem jeweiligen Quadrat  mit roter, grüner, blauer oder ockerfarbenen Hintergrundfarbe angegeben.
*Allerdings sind acht Empfangsworte nicht decodierbar. Beispielsweise könnte das Empfangswort $\underline{y} = (0, 0, 1, 0, 1)$ sowohl aus dem Codewort $\underline{x} = (0, 0, 0, 0, 0)$ entstanden sein oder auch aus  $\underline{x} = (1, 1, 1, 0, 1)$. In beiden Fällen wären zwei Bitfehler aufgetreten.}}<br>
+
 +
*Die Fehlerkorrektur ist für diese aufgrund der minimalen Distanz&nbsp; $d_{\rm min} = 3$&nbsp; zwischen den Codeworten möglich.
 +
 +
*Acht Empfangsworte sind nicht decodierbar.&nbsp; Beispielsweise könnte das Empfangswort&nbsp; $\underline{y} = (0, 0, 1, 0, 1)$&nbsp; aus dem Codewort&nbsp; $\underline{x}_0 = (0, 0, 0, 0, 0)$&nbsp; entstanden sein,&nbsp; aber auch aus dem Codewort&nbsp; $\underline{x}_3 = (1, 1, 1, 0, 1)$.&nbsp; In beiden Fällen wären zwei Bitfehler aufgetreten.}}<br>
  
 
== Zur Nomenklatur in diesem Buch ==
 
== Zur Nomenklatur in diesem Buch ==
 
<br>
 
<br>
Eine Zielvorgabe unseres Lerntutorials <i>LNTwww</i> war, das gesamte Fachgebiet der Nachrichtentechnik und der zugehörigen Grundlagenfächer mit einheitlicher Nomenklatur zu beschreiben. In diesem zuletzt in Angriff genommenen Buch &bdquo; Kanalcodierung&rdquo; müssen nun doch einige Änderungen hinsichtlich der Nomenklatur vorgenommen werden. Die Gründe hierfür sind:
+
Eine Zielvorgabe unseres Lerntutorials&nbsp; $\rm LNTwww$&nbsp; war,&nbsp; das gesamte Fachgebiet der Nachrichtentechnik und der zugehörigen Grundlagenfächer mit einheitlicher Nomenklatur zu beschreiben.&nbsp; In diesem zuletzt in Angriff genommenen Buch &bdquo;Kanalcodierung&rdquo; müssen nun doch einige Änderungen hinsichtlich der Nomenklatur vorgenommen werden.&nbsp; Die Gründe hierfür sind:
*Die Codierungstheorie ist ein weitgehend in sich abgeschlossenes Fachgebiet und nur wenige Autoren von einschlägigen Fachbüchern zu diesem Gebiet versuchen, einen Zusammenhang mit anderen Aspekten der Digitalsignalübertragung herzustellen.<br>
+
*Die Codierungstheorie ist ein weitgehend in sich abgeschlossenes Fachgebiet und nur wenige Autoren von einschlägigen Fachbüchern zu diesem Gebiet versuchen,&nbsp; einen Zusammenhang mit anderen Aspekten der Digitalsignalübertragung herzustellen.<br>
  
*Die Autoren der wichtigsten Bücher zur Kanalcodierung &ndash; englischsprachige und auch deutsche &ndash; verwenden eine in weiten Bereichen einheitliche Nomenklatur. Deshalb erlauben wir uns nicht, die Bezeichnungen zur Kanalcodierung in unser Übertragungstechnik&ndash;Schema zu pressen.<br><br>
+
*Die Autoren der wichtigsten Bücher zur Kanalcodierung &ndash; englischsprachige und deutsche &ndash; verwenden weitgehend eine einheitliche Nomenklatur.&nbsp; Wir erlauben uns deshalb nicht,&nbsp; die Bezeichnungen zur Kanalcodierung in unser Übertragungstechnik&ndash;Schema zu pressen.<br><br>
  
Die wichtigsten Änderungen gegenüber den anderen LNTwww&ndash;Büchern sind:
+
Einige Nomenklaturänderungen gegenüber den anderen&nbsp; $\rm LNTwww$&ndash;Büchern sollen hier genannt werden:
*Alle Signale werden durch die entsprechenden Symbolfolgen in Vektorschreibweise dargestellt. Beispielsweise kennzeichnet $\underline{u} = (u_1, u_2, \text{...}, u_k)$ die <i>Quellensymbolfolge</i> und $\underline{v} = (v_1, v_2, \text{...}, v_k)$ die <i>Sinkensymbolfolge</i>. Bisher wurden diese Symbolfolgen mit $\langle q_\nu \rangle$ bzw. $\langle v_\nu \rangle$ bezeichnet.<br>
+
*Alle Signale werden durch Symbolfolgen in Vektorschreibweise dargestellt.&nbsp; Beispielsweise kennzeichnet&nbsp; $\underline{u} = (u_1, u_2, \hspace{0.05cm}\text{...}\hspace{0.05cm}, u_k)$&nbsp; die&nbsp; <u>Quellensymbolfolge</u>&nbsp; und&nbsp; $\underline{v} = (v_1, v_2, \hspace{0.05cm}\text{...}\hspace{0.05cm}, v_k)$&nbsp; die <u>Sinkensymbolfolge</u>.&nbsp; Bisher wurden diese Symbolfolgen mit&nbsp; $\langle q_\nu \rangle$&nbsp; bzw.&nbsp; $\langle v_\nu \rangle$&nbsp; bezeichnet.<br>
  
*Das zeitdiskrete Äquivalent zum <i>Sendesignal</i> $s(t)$ bzw. zum <i>Empfangssignal</i> $r(t)$ in anderen Büchern sind die Vektoren $\underline{x} = (x_1, x_2, \text{...}, x_n)$ und $\underline{y} = (y_1, y_2, \text{...}, y_n)$. Die <i>Coderate</i> ergibt sich zu $R=k/n$ (Werte zwischen 0 und 1 &nbsp; &#8658; &nbsp; $ n\ge k$), und $m = n-k$ gibt die Anzahl der Prüfbits an.
+
*Der Vektor $\underline{x} = (x_1, x_2, \hspace{0.05cm}\text{...} \hspace{0.05cm}, x_n)$&nbsp; bezeichnet nun das zeitdiskrete Äquivalent zum Sendesignal&nbsp; $s(t)$,&nbsp; während das Empfangssignal&nbsp; $r(t)$&nbsp; durch den Vektor&nbsp; $\underline{y} = (y_1, y_2, \hspace{0.05cm}\text{...}\hspace{0.05cm}, y_n)$&nbsp; beschrieben wird.&nbsp; Die Coderate ist der Quotient &nbsp; $R=k/n$ &nbsp; mit &nbsp; $0 \le R \le 1$ und die Anzahl der Prüfbits ergibt sich zu&nbsp; $m = n-k$.
  
*Im ersten Hauptkapitel sind die Elemente $u_i$ und $v_i$ (jeweils $i = 1, \text{...} , k)$ der Vektoren $\underline{u}$ und $\underline{v}$ stets binär ($0$ oder $1$), ebenso wie die $n$ Elemente $x_i$ des Codewortes $\underline{x}$. Bei digitalem Kanalmodell ([[Kanalcodierung/Kanalmodelle_und_Entscheiderstrukturen#Binary_Symmetric_Channel_.E2.80.93_BSC|BSC]], [[Kanalcodierung/Kanalmodelle_und_Entscheiderstrukturen#Binary_Erasure_Channel_.E2.80.93_BEC|BEC]], [[Kanalcodierung/Kanalmodelle_und_Entscheiderstrukturen#Binary_Symmetric_Error_.26_Erasure_Channel_.E2.80.93_BSEC|BSEC]]) gilt auch für die $n$ Empfangswerte $y_i \in \{0, 1\}$.
+
*Im ersten Hauptkapitel sind die Elemente&nbsp; $u_i$&nbsp; und&nbsp; $v_i$&nbsp; &nbsp;$($jeweils mit Index&nbsp; $i = 1, \hspace{0.05cm}\text{...} \hspace{0.05cm}, k)$&nbsp; der Vektoren&nbsp; $\underline{u}$&nbsp; und&nbsp; $\underline{v}$&nbsp; stets binär&nbsp; $(0$&nbsp; oder &nbsp;$1)$,&nbsp; ebenso wie die&nbsp; $n$&nbsp; Elemente&nbsp; $x_i$&nbsp; des Codewortes&nbsp; $\underline{x}$.&nbsp; Bei digitalem Kanalmodell&nbsp; ([[Kanalcodierung/Kanalmodelle_und_Entscheiderstrukturen#Binary_Symmetric_Channel_.E2.80.93_BSC|"BSC"]],&nbsp; [[Kanalcodierung/Kanalmodelle_und_Entscheiderstrukturen#Binary_Erasure_Channel_.E2.80.93_BEC|"BEC"]],&nbsp; [[Kanalcodierung/Kanalmodelle_und_Entscheiderstrukturen#Binary_Symmetric_Error_.26_Erasure_Channel_.E2.80.93_BSEC|"BSEC"]]) gilt auch für die&nbsp; $n$&nbsp; Empfangswerte&nbsp; $y_i \in \{0, 1\}$.
  
*Das [[Kanalcodierung/Kanalmodelle_und_Entscheiderstrukturen#AWGN.E2.80.93Kanal_bei_bin.C3.A4rem_Eingang|AWGN&ndash;Kanalmodell]] ist durch reellwertige Ausgangswerte  $y_i$ gekennzeichnet. Der <i>Codewortschätzer</i> gewinnt daraus den binären Vektor $\underline{z} = (z_1, z_2, \text{...}, z_n)$, der mit dem Codewort $\underline{x}$ zu vergleichen ist.
+
*Das&nbsp; [[Kanalcodierung/Kanalmodelle_und_Entscheiderstrukturen#AWGN.E2.80.93Kanal_bei_bin.C3.A4rem_Eingang|"AWGN&ndash;Kanalmodell"]]&nbsp; ist durch reellwertige Ausgangswerte&nbsp; $y_i$&nbsp; gekennzeichnet.&nbsp; Der&nbsp; "Codewortschätzer"&nbsp; gewinnt dann aus dem Vektor&nbsp; $\underline{y} = (y_1, y_2, \hspace{0.05cm}\text{...}\hspace{0.05cm}, y_n)$&nbsp; den binären Vektor&nbsp; $\underline{z} = (z_1, z_2, \hspace{0.05cm}\text{...} \hspace{0.05cm}, z_n)$,&nbsp; der mit dem Codewort&nbsp; $\underline{x}$&nbsp; zu vergleichen ist.
  
*Der Übergang von $\underline{y}$ auf $\underline{z}$ erfolgt entweder durch Schwellenwertentscheidung &nbsp; &#8658; &nbsp; <i>Hard Decision</i> oder nach dem MAP&ndash;Kriterium &nbsp; &#8658; &nbsp; <i>Soft Decision</i>. Die Schätzung gemäß &bdquo;Maximum Likelihood&rdquo; führt bei gleichwahrscheinlichen Eingangssymbolen ebenfalls zur minimalen Fehlerrate.
+
*Der Übergang von&nbsp; $\underline{y}$&nbsp; auf&nbsp; $\underline{z}$&nbsp; erfolgt durch Schwellenwertentscheidung &nbsp; &#8658; &nbsp; "Hard Decision"&nbsp; oder nach dem MAP&ndash;Kriterium &nbsp; &#8658; &nbsp; "Soft Decision".&nbsp; Bei gleichwahrscheinlichen Eingangssymbolen  führt die  &bdquo;Maximum Likelihood&rdquo;&ndash;Schätzung ebenfalls zur minimalen Fehlerrate.
  
*Im Zusammenhang mit dem AWGN&ndash;Modell macht es Sinn, die binären Codesymbole $x_i$ bipolar (also als $\pm1$) darzustellen. An den statistischen Eigenschaften ändert sich dadurch nichts. Wir kennzeichnen im Folgenden die bipolare Signalisierung durch eine Tilde. Dann gilt:
+
*Im Zusammenhang mit dem AWGN&ndash;Modell macht es Sinn,&nbsp; binäre Codesymbole&nbsp; $x_i$&nbsp; bipolar&nbsp; $($also $\pm1)$&nbsp; darzustellen.&nbsp; An den statistischen Eigenschaften ändert sich dadurch nichts.&nbsp; Wir kennzeichnen im Folgenden die bipolare Signalisierung durch eine Tilde.&nbsp; Dann gilt:
  
 
::<math>\tilde{x}_i = 1 - 2 x_i  = \left\{ \begin{array}{c} +1\\
 
::<math>\tilde{x}_i = 1 - 2 x_i  = \left\{ \begin{array}{c} +1\\
 
  -1  \end{array} \right.\quad
 
  -1  \end{array} \right.\quad
\begin{array}{*{1}c} {\rm falls} \hspace{0.15cm} x_i = 0\hspace{0.05cm},\\
+
\begin{array}{*{1}c} {\rm falls} \hspace{0.25cm} x_i = 0\hspace{0.05cm},\\
{\rm falls} \hspace{0.15cm}x_i = 1\hspace{0.05cm}.\\ \end{array}</math>
+
{\rm falls} \hspace{0.25cm}x_i = 1\hspace{0.05cm}.\\ \end{array}</math>
  
 
== Aufgaben zum Kapitel==
 
== Aufgaben zum Kapitel==
 
<br>
 
<br>
[[Aufgaben:1.1 Zur Kennzeichnung aller Bücher|A1.1 Zur Kennzeichnung aller Bücher]]
+
[[Aufgaben:1.1 Zur Kennzeichnung aller Bücher|Aufgabe 1.1: Zur Kennzeichnung aller Bücher]]
  
[[Aufgaben:1.2 Einfacher binärer Kanalcode|A1.2 Einfacher binärer Kanalcode]]
+
[[Aufgaben:1.2 Einfacher binärer Kanalcode|Aufgabe 1.2: Einfacher binärer Kanalcode]]
  
[[Zusatzaufgaben:1.2 3D–Darstellung von Codes]]
+
[[Aufgaben:1.2Z_3D–Darstellung_von_Codes|Aufgabe 1.2Z: 3D–Darstellung von Codes]]
  
 
==Quellenverzeichnis==
 
==Quellenverzeichnis==

Aktuelle Version vom 15. August 2022, 16:47 Uhr


# ÜBERBLICK ZUM ERSTEN HAUPTKAPITEL #


Das erste Kapitel behandelt  Blockcodes zur Fehlererkennung und Fehlerkorrektur  und liefert die Grundlagen zur Beschreibung effektiverer Codes wie zum Beispiel

  • den  »Reed–Solomon–Codes«  (siehe Kapitel 2),
  • den  »Faltungscodes«  (Kapitel 3),
  • den  »iterativ decodierbaren Produkt–Codes« (»Turbo–Codes«),  und
  • den  »Low–density Parity–check Codes«  (Kapitel 4).


Wir beschränken uns hier auf binäre Codes.

Man bezeichnet dieses spezifische Fachgebiet als   Kanalcodierung   im Gegensatz

  • zur  »Quellencodierung«  (Redundanzminderung aus Gründen der Datenkomprimierung) und
  • zur  »Leitungscodierung«  (zusätzliche Redundanz zur Anpassung des Digitalsignals an die spektralen Eigenschaften des Übertragungsmediums).

Im Einzelnen werden behandelt:

  1. Definitionen und einführende Beispiele zur  »Fehlererkennung und Fehlererkorrektur«,
  2. eine kurze Wiederholung geeigneter  »Kanalmodelle und Entscheiderstrukturen«,
  3. bekannte binäre Blockcodes wie  »Single Parity-check Code«,  »Wiederholungscode«  und  »Hamming–Code«,
  4. die allgemeine Beschreibung linearer Codes mittels  »Generatormatrix«  und  »Prüfmatrix«,
  5. die Decodiermöglichkeiten für Blockcodes, unter anderem die  »Syndromdecodierung«,
  6. einfache Näherungen und obere Schranken für die  »Blockfehlerwahrscheinlichkeit«,  sowie
  7. eine  »informationstheoretische Grenze«  der Kanalcodierung.


Fehlererkennung und Fehlerkorrektur


Bei einem jeden Nachrichtenübertragungssystem kommt es zu Übertragungsfehlern.  Man kann zwar die Wahrscheinlichkeit  $p_{\rm S}$  für einen solchen Symbolfehler sehr klein halten,  zum Beispiel durch eine sehr große Signalenergie.  Die Symbolfehlerwahrscheinlichkeit  $p_{\rm S} = 0$  ist aber wegen der Gaußschen WDF des stets vorhandenen thermischen Rauschens nie erreichbar.

Insbesondere bei stark gestörten Kanälen und auch für sicherheitskritische Anwendungen ist es deshalb unumgänglich,  die zu übertragenden Daten angepasst an Anwendung und Kanal besonders zu schützen.  Dazu fügt man beim Sender Redundanz hinzu und nutzt diese Redundanz beim Empfänger,  um die Anzahl der Decodierfehler zu verringern.

$\text{Definitionen:}$

  1. Fehlererkennung  (englisch:   "Error Detection"):   Der Decoder prüft die Integrität der empfangenen Blöcke und markiert gefundene Fehler.  Eventuell informiert der Empfänger den Sender über fehlerhafte Blöcke via Rückkanal,  so dass dieser den entsprechenden Block noch einmal sendet.

  2. Fehlerkorrektur  (englisch:   "Error Correction"):   Der Decoder erkennt einen  (oder mehrere)  Bitfehler und liefert für diese weitere Informationen,  zum Beispiel deren Positionen im übertragenen Block.  Damit können unter Umständen die entstandenen Fehler vollständig korrigiert werden.

  3. Die  Kanalcodierung  (englisch:   "Channel Coding"  oder  "Error–Control Coding")  umfasst sowohl Verfahren zur Fehlererkennung als auch solche zur Fehlerkorrektur.


Alle  ARQ–Verfahren  (englisch:   "Automatic Repeat Request")  nutzen ausschließlich Fehlererkennung. 

  • Für die Fehlererkennung ist weniger Redundanz erforderlich als für eine Fehlerkorrektur. 
  • Ein Nachteil der ARQ ist der geringe Durchsatz bei schlechter Kanalqualität,  also dann,  wenn häufig ganze Datenblöcke vom Empfänger neu angefordert werden müssen.


In diesem Buch behandeln wir größtenteils die  Vorwärtsfehlerkorrektur  (englisch:   "Forward Error Correction", FEC),  die bei einem ausreichend guten Kanal (großes SNR) zu sehr kleinen Fehlerraten führt.

  • Bei schlechteren Kanalbedingungen ändert sich am Durchsatz nichts,  das heißt,  es wird die gleiche Informationsmenge übertragen.
  • Allerdings kann dann die Fehlerrate sehr große Werte annehmen.


Oft werden FEC– und ARQ–Verfahren kombiniert, und zwischen diesen die Redundanz so aufgeteilt,

  • dass eine kleine Anzahl von Fehlern noch korrigierbar ist,
  • bei vielen Fehlern aber eine Wiederholung des Blocks angefordert wird.

Einige einführende Beispiele zur Fehlererkennung


$\text{Beispiel 1:   Single Parity–check Code (SPC)}$

Ergänzt man  $k = 4$  Bit um ein so genanntes  "Prüfbit"  (englisch:   "parity bit")  derart,  dass die Summe aller Einsen geradzahlig ist,  z.B.  (mit fettgedruckten Prüfbits)

$$0000\boldsymbol{0}, 0001\boldsymbol{1}, \text{...} , 1111\boldsymbol{0}, \text{...}\ ,$$

so kann man einen Einzelfehler sehr einfach erkennen.  Zwei Fehler innerhalb eines Codewortes bleiben dagegen unerkannt.

Die deutsche Bezeichnung hierfür ist  "Paritätsprüfcode".


$\text{Beispiel 2:   International Standard Book Number (ISBN)}$

Seit den 1960er Jahren werden alle Bücher mit 10–stelligen Kennzahlen  ("ISBN–10")  versehen.  Seit 2007 ist zusätzlich noch die Angabe gemäß  "ISBN–13"  verpflichtend.  Beispielsweise lauten diese für das Fachbuch  [Söd93][1]:

  • $\boldsymbol{3–540–57215–5}$  (für ISBN–10), bzw.
  • $\boldsymbol{978–3–54057215–2}$  (für ISBN–13).


Die letzte Ziffer  $z_{10}$  ergibt sich bei ISBN–10 aus den vorherigen Ziffern  $z_1 = 3$,  $z_2 = 5$, ... ,  $z_9 = 5$  nach folgender Rechenregel:

\[z_{10} = \left ( \sum_{i=1}^{9} \hspace{0.2cm} i \cdot z_i \right ) \hspace{-0.3cm} \mod 11 = (1 \cdot 3 + 2 \cdot 5 + ... + 9 \cdot 5 ) \hspace{-0.2cm} \mod 11 = 5 \hspace{0.05cm}. \]
Zu beachten ist,  dass  $z_{10} = 10$  als  $z_{10} = \rm X$  geschrieben werden muss  (römische Zahlendarstellung von „10”),  da sich die Zahl  $10$  im Zehnersystem nicht als Ziffer darstellen lässt.

Entsprechend gilt für die Prüfziffer bei ISBN–13:

\[z_{13}= 10 - \left ( \sum_{i=1}^{12} \hspace{0.2cm} z_i \cdot 3^{(i+1) \hspace{-0.2cm} \mod 2} \right ) \hspace{-0.3cm} \mod 10 = 10 \hspace{-0.05cm}- \hspace{-0.05cm} \big [(9\hspace{-0.05cm}+\hspace{-0.05cm}8\hspace{-0.05cm}+\hspace{-0.05cm}5\hspace{-0.05cm}+\hspace{-0.05cm}0\hspace{-0.05cm}+\hspace{-0.05cm}7\hspace{-0.05cm}+\hspace{-0.05cm}1) \cdot 1 + (7\hspace{-0.05cm}+\hspace{-0.05cm}3\hspace{-0.05cm}+\hspace{-0.05cm}4\hspace{-0.05cm}+\hspace{-0.05cm}5\hspace{-0.05cm}+\hspace{-0.05cm}2\hspace{-0.05cm}+\hspace{-0.05cm}5) \cdot 3\big ] \hspace{-0.2cm} \mod 10 \]
\[\Rightarrow \hspace{0.3cm} z_{13}= 10 - (108 \hspace{-0.2cm} \mod 10) = 10 - 8 = 2 \hspace{0.05cm}. \]

Bei beiden Varianten werden im Gegensatz zum obigen Paritätsprüfcode  $\rm (SPC)$  auch Zahlendreher wie  $57 \, \leftrightarrow 75$  erkannt,  da hier unterschiedliche Positionen verschieden gewichtet werden.


$\text{Beispiel 3:   Strichcode (eindimensionaler Barcode)}$

1D–Barcode

Der am weitesten verbreitete fehlererkennende Code weltweit ist der  "Strichcode"  oder  "Balkencode"  (englisch:   "bar code")  zur Kennzeichnung von Produkten,  zum Beispiel nach  EAN–13  "European Article Number")  mit 13 Ziffern.

  • Diese werden durch verschieden breite Balken und Lücken dargestellt und können mit einem opto–elektronischen Lesegerät leicht entschlüsselt werden.
  • Die ersten drei Ziffern kennzeichnen das Land  (beispielsweise Deutschland:   zwischen 400 und 440),  die nächsten vier bzw. fünf Stellen den Hersteller und das Produkt.
  • Die letzte Ziffer ist die Prüfziffer  $z_{13}$,  die sich genau so berechnet wie bei ISBN–13.

Einige einführende Beispiele zur Fehlerkorrektur


$\text{Beispiel 4:   2D–Barcodes für Online–Tickets}$

Wenn Sie eine Fahrkarte der Deutschen Bahn online buchen und ausdrucken,  finden Sie ein Beispiel eines zweidimensionalen Barcodes,  nämlich den 1995 von Andy Longacre bei der Firma Welch Allyn in den USA entwickelten  "Aztec–Code",  mit dem Datenmengen bis zu  $3000$  Zeichen codiert werden können.  Aufgrund der  "Reed–Solomon–Fehlerkorrektur"  ist die Rekonstruktion des Dateninhalts auch dann noch möglich,  wenn bis zu  $40\%$  des Codes zerstört wurden,  zum Beispiel durch Knicken der Fahrkarte oder durch Kaffeeflecken.

2D–Barcodes: Aztec– und QR–Code

Rechts ist ein  $\rm QR–Code$  ("Quick Response")  mit zugehörigem Inhalt dargestellt.

  • Der QR–Code wurde 1994 für die Autoindustrie in Japan zur Kennzeichnung von Bauteilen entwickelt und erlaubt ebenfalls eine Fehlerkorrektur. 
  • Der Einsatz des QR–Codes sehr vielfältig.  In Japan findet man ihn schon lange auf Werbeplakat und auf jeder Visitenkarte.  Auch in Deutschland setzt er sich mehr und mehr durch.
  • Bei allen 2D–Barcodes gibt es quadratische Markierungen zur Kalibrierung des Lesegerätes. Details finden Sie in [KM+09][2].


$\text{Beispiel 5:   Codes für die Satelliten– und Weltraumkommunikation}$

Eines der ersten Einsatzgebiete von Fehlerkorrekturverfahren war die Kommunikation von/zu Satelliten und Raumfähren,  also Übertragungsstrecken, 

  • die durch niedrige Sendeleistungen und
  • große Pfadverluste gekennzeichnet sind.


Schon 1977 wurde bei der  "Raum–Mission Voyager 1"  zu Neptun und Uranus Kanalcodierung eingesetzt,  und zwar in Form der seriellen Verkettung eines  "Reed–Solomon–Codes"  und eines  "Faltungscodes".

Damit genügte schon  $10 · \lg \; E_{\rm B}/N_0 \approx 2 \, \rm dB$,  um die geforderte Fehlerrate  $5 · 10^{-5}$  (bezogen auf die komprimierten Daten nach der Quellencodierung)  zu erreichen.  Ohne Kanalcodierung wären dagegen für die gleiche Fehlerrate fast  $9 \, \rm dB$  erforderlich,  also eine um den Faktor  $10^{0.7} ≈ 5$  größere Sendeleistung.

Auch das geplante Marsprojekt  (die Datenübertragung vom Mars zur Erde mit  $\rm 5W$–Lasern)  wird nur mit einem ausgeklügelten Codierschema erfolgreich sein.


$\text{Beispiel 6:   Kanalcodes für die Mobilkommunikation}$

Ein weiteres und besonders umsatzstarkes Anwendungsgebiet,  das ohne Kanalcodierung nicht funktionieren würde,  ist die Mobilkommunikation.  Hier ergäben sich bei ungünstigen Bedingungen ohne Codierung Fehlerraten im Prozentbereich und aufgrund von Abschattungen und Mehrwegeausbreitung  (Echos)  treten die Fehler oft gebündelt auf.  Die Fehlerbündellänge beträgt dabei manchmal einige Hundert Bit.

  • Bei der Sprachübertragung im GSM–System werden die  $182$  wichtigsten  $($Klasse 1a und 1b$)$  der insgesamt  260  Bit eines Sprachrahmens  $(20 \, \rm ms)$  zusammen mit einigen wenigen Paritäts– und Tailbits faltungscodiert  $($mit Memory  $m = 4$  und Rate  $R = 1/2)$  und verwürfelt.  Zusammen mit den  $78$  weniger wichtigen und deshalb uncodierten Bits der Klasse 2 führt dies dazu,  dass die Bitrate von  $13 \, \rm kbit/s$  auf  $22.4 \, \rm kbit/s$  ansteigt.
  • Man nutzt die (relative) Redundanz von  $r = (22.4 - 13)/22.4 ≈ 0.42$  zur Fehlerkorrektur.  Anzumerken ist,  dass  $r = 0.42$  aufgrund der hier verwendeten Definition aussagt,  dass  $42\%$  der codierten Bits redundant sind.  Mit dem Bezugswert „Bitrate der uncodierten Folge” ergäbe sich  $r = 9.4/13 \approx 0.72$  mit der Aussage:   Zu den Informationsbits werden  $72\%$  Prüfbits hinzugefügt.
  • Bei  "UMTS"  ("Universal Mobile Telecommunications System")  werden  "Faltungscodes"  mit den Raten  $R = 1/2$  bzw.  $R = 1/3$  eingesetzt.  Bei den UMTS–Modi für höhere Datenraten und entsprechend geringeren Spreizfaktoren verwendet man dagegen  "Turbo–Codes"  der Rate  $R = 1/3$  und iterative Decodierung.  Abhängig von der Anzahl der Iterationen erzielt man gegenüber der Faltungscodierung hiermit Gewinne von bis zu  $3 \, \rm dB$.


$\text{Beispiel 7:   Fehlerschutz der Compact Disc}$

Bei einer CD  ("Compact Disc")  verwendet man einen  "cross–interleaved  Reed–Solomon–Code"  $\rm (RS)$  und anschließend eine so genannte  "Eight–to–Fourteen–Modulation".  Die Redundanz nutzt man zur Fehlererkennung und –korrektur.  Dieses Codierschema zeigt folgende Charakteristika:

  • Die gemeinsame Coderate der zwei RS–Komponentencodes beträgt  $R_{\rm RS} = 24/28 · 28/32 = 3/4$.  Durch die  "8–to–14–Modulation"  und einiger Kontrollbits kommt man zur Gesamtcoderate  $R ≈ 1/3$.
  • Bei statistisch unabhängigen Fehlern gemäß dem  "BSC–Modell"  ("Binary Symmetric Channel")  ist eine vollständige Korrektur möglich,  so lange die Bitfehlerrate den Wert  $10^{-3}$  nicht überschreitet.
  • Der CD–spezifische  "Cross Interleaver"  verwürfelt  $108$  Blöcke miteinander,  so dass die  $588$  Bit eines Blockes  $($jedes Bit entspricht ca.  $0.28 \, \rm {µ m})$  auf etwa  $1.75\, \rm cm$  verteilt werden.
  • Mit der Coderate  $R ≈ 1/3$  kann man ca.  $10\%$  "Erasures"  korrigieren.  Die verloren gegangenen Werte lassen sich durch Interpolation  (näherungsweise)  rekonstruieren   ⇒  "Fehlerverschleierung".

Zusammenfassend lässt sich sagen:   Weist eine CD einen Kratzer von  $1.75\, \rm mm$  Länge in Abspielrichtung auf  (also mehr als  $6000$  aufeinanderfolgende  "Erasures"),  so sind immer noch  $90\%$  aller Bits eines Blockes fehlerfrei,  so dass sich auch die fehlenden  $10\%$  rekonstruieren lassen,  oder dass die Auslöschungen zumindest so verschleiert werden können,  dass sie nicht hörbar sind.

Auf der nächsten Seite folgt eine Demonstration zur Korrekturfähigkeit der CD.


Die „Geschlitzte CD” – eine Demonstration des LNT der TUM


Ende der 1990er Jahre haben Mitarbeiter des  "Lehrstuhls für Nachrichtentechnik" der TU München  unter Leitung von Professor  Joachim Hagenauer  eine Musik–CD gezielt beschädigt,  indem insgesamt drei Schlitze von jeweils mehr als einem Millimeter Breite eingefräst wurden.  Damit fehlen bei jedem Defekt fast  $4000$  fortlaufende Bit der Audiocodierung.

„Geschlitzte CD” des  $\rm LNT/TUM$

Die Grafik zeigt die  „geschlitzte CD”:

  • Sowohl in der Spur 3 als auch in der Spur 14 gibt es bei jeder Umdrehung zwei solcher fehlerhafter Bereiche.
  • Sie können sich die Musikqualität mit Hilfe der beiden Audioplayer  $($jeweils ca. 15 Sekunden$)$  verdeutlichen.
  • Die Theorie zu dieser Audio–Demo finden Sie im  $\text{Beispiel 7}$  auf der vorherigen Seite.


Spur 14:

Spur 3:


Resumee dieser Audiodemo:

  • Ebenso wichtig für die Funktionsfähigkeit der CD wie diese Codes ist der dazwischen geschaltete Interleaver,  der die ausgelöschten Bits  ("Erasures")  über eine Länge von fast  $2 \, \rm cm$  verteilt.
  • Bei  Spur 14  liegen die beiden defekten Bereiche genügend weit auseinander.  Deshalb ist der Reed–Solomon–Decoder in der Lage,  die fehlenden Daten zu rekonstruieren.
  • Bei  Spur 3  folgen die beiden Fehlerblöcke in sehr kurzem Abstand aufeinander,  so dass der Korrekturalgorithmus versagt.  Das Resultat ist ein fast periodisches Klackgeräusch.

Wir bedanken uns bei  Rainer Bauer,  Manfred Jürgens und  Thomas Hindelang  für die Erlaubnis,  diese Audio–Demo in unserem  $\rm LNTwww$  verwenden zu dürfen.

Zusammenspiel zwischen Quellen– und Kanalcodierung


Die Nachrichtenübertragung natürlicher Quellen wie Sprache, Musik, Bilder, Videos, usw. geschieht meist entsprechend dem im nachfolgenden  $\text{Beispiel 8}$  skizzierten zeitdiskreten Modell.  Zu dieser aus  [Liv10][3]  entnommenen Grafik ist Folgendes anzumerken:

  • Quelle und Sinke sind digitalisiert und werden durch  (etwa gleich viele)  Nullen und Einsen repräsentiert.
  • Der Quellencodierer komprimiert die binären Daten – im Beispiel ein Digitalfoto – und reduziert somit die Redundanz der Quelle.
  • Der Kanalcodierer fügt wieder Redundanz hinzu und zwar gezielt,  so dass einige der auf dem Kanal entstandenen Fehler im Kanaldecoder korrigiert werden können.
  • Für den Kanal wird hier ein zeitdiskretes Modell mit binärem Eingang und Ausgang verwendet,  das auch die Komponenten der technischen Sende– und Empfangseinrichtungen  (Modulator, Entscheider, Taktwiedergewinnung) geeignet berücksichtigen sollte.

Bei richtiger Dimensionierung von Quellen– und Kanalcodierung ist die Qualität des empfangenen Fotos hinreichend gut,  auch wenn die Sinkensymbolfolge aufgrund nicht korrigierbarer Fehlermuster nicht exakt mit der Quellensymbolfolge übereinstimmen wird.  Man erkennt innerhalb der Sinkensymbolfolge einen (rot markierten) Bitfehler.

$\text{Beispiel 8:}$  Für die Grafik wurde beispielhaft und stark vereinfachend angenommen,  dass

Bildübertragung mit Quellen– und Kanalcodierung
  • die Quellensymbolfolge nur die Länge  $40$  hat,
  • der Quellencodierer die Daten um den Faktor  $40/16 = 2.5$  komprimiert,  und
  • der Kanalcoder  $50\%$  Redundanz hinzufügt.


Übertragen werden müssen also nur  $24$  Codersymbole statt der  $40$  Quellensymbole,  was die Übertragungsrate insgesamt um  $40\%$  reduziert.

Würde man auf die Quellencodierung verzichten,  in dem man das ursprüngliche Foto im BMP–Format übertragen würde und nicht das komprimierte JPG–Bild, 

  • so wäre die Qualität vergleichbar, 
  • aber eine um den Faktor  $2.5$  höhere Bitrate erforderlich
  • und damit sehr viel höherer Aufwand.


$\text{Beispiel 9:}$ 

Bildübertragung ohne Quellen– und Kanalcodierung





Würde man

  • sowohl auf die Quellen–
  • als auch auf die Kanalcodierung verzichten,


also direkt die BMP–Daten ohne Fehlerschutz übertragen,  so wäre das Ergebnis trotz  $($um den Faktor  $40/24)$  größerer Bitrate äußerst dürftig.

Bildübertragung mit Quellencodierung, ohne Kanalcodierung


Quellencodierung, aber keine Kanalcodierung

Nun betrachten wir den Fall,  dass man die komprimierten Daten  (zum Beispiel "JPG")  ohne Fehlersicherungsmaßnahmen direkt überträgt.  Dann gilt:

  1. Die komprimierte Quelle besitzt nur noch wenig Redundanz.
  2. Deshalb führt jeder einzelne Übertragungsfehler dazu,  dass ganze Bildblöcke falsch decodiert werden.
  3. Dieses Codierschema sollte man auf jeden Fall vermeiden.

Blockschaltbild und Voraussetzungen


Im weiteren Verlauf gehen wir von dem skizzierten Blockschaltbild mit Kanalcodierer,  Digitalem Kanal und Kanaldecoder aus.

Blockschaltbild zur Beschreibung der Kanalcodierung

Dabei gelten folgende Voraussetzungen:

  • Der Vektor  $\underline{u} = (u_1, u_2, \text{...} \hspace{0.05cm}, u_k)$  kennzeichnet einen  Informationsblock  mit  $k$  Symbolen.  Meist beschränken wir uns auf Binärsymbole (Bits)   ⇒   $u_i \in \{0, \, 1\}$ für $i = 1, 2, \text{...} \hspace{0.05cm}, k$  mit gleichen Auftrittswahrscheinlichkeiten für Nullen und Einsen.
  • Jeder Informationsblock  $\underline{u}$  wird durch ein  Codewort  (oder einen  "Codeblock")  $\underline{x} = (x_1, x_2, \text{...} \hspace{0.05cm}, x_n)$  mit  $n \ge k$, $x_i \in \{0, \, 1\}$  dargestellt.  Man spricht dann von einem binären  $(n, k)$–Blockcode  $C$.  Die Zuordnung bezeichnen wir mit  $\underline{x} = {\rm enc}(\underline{u})$,  wobei „enc” für „Encoder–Funktion” steht.
  • Das  Empfangswort  $\underline{y}$  ergibt sich aus dem Codewort  $\underline{x}$  durch  "Modulo–2–Addition"  mit dem ebenfalls binären Fehlervektor  $\underline{e} = (e_1, e_2, \text{...} \hspace{0.05cm}, e_n)$,  wobei  "$e= 1$"  für einen Übertragungfehler steht und  "$e= 0$"  anzeigt,  dass das  $i$–te Bit des Codewortes richtig übertragen wurde.  Es gilt also:
\[\underline{y} = \underline{x} \oplus \underline{e} \hspace{0.05cm}, \hspace{0.5cm} y_i = x_i \oplus e_i \hspace{0.05cm}, \hspace{0.2cm} i = 1, \text{...} \hspace{0.05cm} , n\hspace{0.05cm}, x_i \hspace{-0.05cm} \in \hspace{-0.05cm} \{ 0, 1 \}\hspace{0.05cm}, \hspace{0.5cm}e_i \in \{ 0, 1 \}\hspace{0.5cm} \Rightarrow \hspace{0.5cm}y_i \in \{ 0, 1 \}\hspace{0.05cm}.\]
  • Die Beschreibung durch das  Digitale Kanalmodell  – also mit binärem Eingang und Ausgang – ist allerdings nur dann anwendbar,  wenn das Übertragungssystem harte Entscheidungen trifft – siehe  "AWGN–Kanal bei binärem Eingang".   Systeme mit  "Soft Decision"  sind mit diesem einfachen Modell nicht modellierbar.
  • Der Vektor  $\underline{v}$  nach der  Kanaldecodierung  hat die gleiche Länge  $k$  wie der Informationsblock  $\underline{u}$.  Den Decodiervorgang beschreiben wir mit der  "Decoder–Funktion"  als  $\underline{v} = {\rm enc}^{-1}(\underline{y}) = {\rm dec}(\underline{y})$.  Im fehlerfreien Fall gilt analog zu  $\underline{x} = {\rm enc}(\underline{u})$  auch  $\underline{v} = {\rm enc}^{-1}(\underline{y})$.
  • Ist der Fehlervektor  $\underline{e} \ne \underline{0}$,  so ist  $\underline{y}$  meist kein gültiges Element des verwendeten Blockcodes,  und die Decodierung ist dann keine reine Zuordnung  $\underline{y} \rightarrow \underline{v}$,  sondern eine auf maximale Übereinstimmung  (mimimale Fehlerwahrscheinlichkeit)  basierende Schätzung von  $\underline{v}$.

Einige wichtige Definitionen zur Blockcodierung


Wir betrachten nun den beispielhaften binären Blockcode

\[\mathcal{C} = \{ (0, 0, 0, 0, 0) \hspace{0.05cm},\hspace{0.15cm} (0, 1, 0, 1, 0) \hspace{0.05cm},\hspace{0.15cm}(1, 0, 1, 0, 1) \hspace{0.05cm},\hspace{0.15cm}(1, 1, 1, 1, 1) \}\hspace{0.05cm}.\]

Dieser Code wäre zum Zwecke der Fehlererkennung oder –korrektur ungeeignet.  Aber er ist so konstruiert,  dass er die Berechnung wichtiger Beschreibungsgrößen anschaulich verdeutlicht:

  • Jedes einzelne Codewort  $\underline{u}$  wird durch fünf Bit beschrieben.  Im gesamten Buch drücken wir diesen Sachverhalt durch die  Codewortlänge  (englisch:  "code word length")  $n = 5$  aus.
  • Der obige Code beinhaltet vier Elemente.  Damit ist der  Codeumfang  (englisch:   "code size")  $|C| = 4$.  Entsprechend gibt es auch vier eindeutige Zuordnungen  (englisch:  "mappings")  zwischen  $\underline{u}$  und  $\underline{x}$.
  • Die Länge eines Informationsblocks  $\underline{u}$   ⇒   Informationsblocklänge  wird mit  $k$  bezeichnet.  Da bei allen binären Codes  $|C| = 2^k$  gilt,  folgt aus  $|C| = 4$  der Wert  $k = 2$.  Die Zuordnungen zwischen  $\underline{u}$  und  $\underline{x}$  lauten bei obigem Code  $C$:
\[\underline{u_0} = (0, 0) \hspace{0.2cm}\leftrightarrow \hspace{0.2cm}(0, 0, 0, 0, 0) = \underline{x_0}\hspace{0.05cm}, \hspace{0.8cm} \underline{u_1} = (0, 1) \hspace{0.2cm}\leftrightarrow \hspace{0.2cm}(0, 1, 0, 1, 0) = \underline{x_1}\hspace{0.05cm}, \]
\[\underline{u_2} = (1, 0)\hspace{0.2cm} \leftrightarrow \hspace{0.2cm}(1, 0, 1, 0, 1) = \underline{x_2}\hspace{0.05cm}, \hspace{0.8cm} \underline{u_3} = (1, 1) \hspace{0.2cm} \leftrightarrow \hspace{0.2cm}(1, 1, 1, 1, 1) = \underline{x_3}\hspace{0.05cm}.\]
  • Der Code weist die  Coderate  $R = k/n = 2/5$  auf.  Dementsprechend beträgt seine Redundanz  $1-R$,  also  $60\%$.  Ohne Fehlerschutz  $($also für den Fall  $n = k)$  wäre die Coderate  $R = 1$.
  • Eine kleine Coderate zeigt an,  dass von den  $n$  Bits eines Codewortes nur sehr wenige tatsächlich Information tragen.  Beispielsweise hat ein Wiederholungscode  $(k = 1)$  mit  $n = 10$  die Coderate  $R = 0.1$.
  • Das  Hamming–Gewicht  $w_{\rm H}(\underline{x})$  des Codewortes  $\underline{x}$  gibt die Zahl der Codewortelemente  $x_i \ne 0$  an.  Bei einem binären Code   ⇒   $x_i \in \{0, \, 1\}$  ist  $w_{\rm H}(\underline{x})$  gleich der Summe  $x_1 + x_2 + \hspace{0.05cm}\text{...} \hspace{0.05cm}+ x_n$.  Im Beispiel:
\[w_{\rm H}(\underline{x}_0) = 0\hspace{0.05cm}, \hspace{0.4cm}w_{\rm H}(\underline{x}_1) = 2\hspace{0.05cm}, \hspace{0.4cm} w_{\rm H}(\underline{x}_2) = 3\hspace{0.05cm}, \hspace{0.4cm}w_{\rm H}(\underline{x}_3) = 5\hspace{0.05cm}. \]
  • Die  Hamming–Distanz   $d_{\rm H}(\underline{x}, \ \underline{x}\hspace{0.03cm}')$   zwischen den Codeworten  $\underline{x}$  und  $\underline{x}\hspace{0.03cm}'$  bezeichnet die Anzahl der Bitpositionen,  in denen sich die beiden Codeworte unterscheiden:
\[d_{\rm H}(\underline{x}_0, \hspace{0.05cm}\underline{x}_1) = 2\hspace{0.05cm}, \hspace{0.4cm} d_{\rm H}(\underline{x}_0, \hspace{0.05cm}\underline{x}_2) = 3\hspace{0.05cm}, \hspace{0.4cm} d_{\rm H}(\underline{x}_0, \hspace{0.05cm}\underline{x}_3) = 5\hspace{0.05cm},\hspace{0.4cm} d_{\rm H}(\underline{x}_1, \hspace{0.05cm}\underline{x}_2) = 5\hspace{0.05cm}, \hspace{0.4cm} d_{\rm H}(\underline{x}_1, \hspace{0.05cm}\underline{x}_3) = 3\hspace{0.05cm}, \hspace{0.4cm} d_{\rm H}(\underline{x}_2, \hspace{0.05cm}\underline{x}_3) = 2\hspace{0.05cm}.\]
  • Eine wichtige Eigenschaft eines Codes  $C$,  die seine Korrekturfähigkeit wesentlich beeinflusst,  ist die  minimale Distanz  zwischen zwei beliebigen Codeworten:
\[d_{\rm min}(\mathcal{C}) = \min_{\substack{\underline{x},\hspace{0.05cm}\underline{x}' \hspace{0.05cm}\in \hspace{0.05cm} \mathcal{C} \\ {\underline{x}} \hspace{0.05cm}\ne \hspace{0.05cm} \underline{x}'}}\hspace{0.1cm}d_{\rm H}(\underline{x}, \hspace{0.05cm}\underline{x}')\hspace{0.05cm}.\]

$\text{Definition:}$  Ein  $(n, \hspace{0.05cm}k, \hspace{0.05cm}d_{\rm min})\text{ – Blockcode}$  besitzt die Codewortlänge  $n$, die Informationsblocklänge  $k$  und die minimale Distanz  $d_{\rm min}$.

  • Nach dieser Nomenklatur handelt es sich im hier betrachteten Beispiel um einen  $(5, \hspace{0.05cm}2,\hspace{0.05cm} 2)$ – Blockcode.
  • Manchmal verzichtet man auf die Angabe von  $d_{\rm min}$  und spricht dann von einem  $(n,\hspace{0.05cm} k)$ – Blockcode.


Beispiele für Fehlererkennung und Fehlerkorrektur


Die eben definierten Größen sollen nun an zwei Beispielen verdeutlicht werden.

$\text{Beispiel 11:}$     $\text{(4, 2, 2)–Blockcode}$

(4, 2, 2)–Blockcode zur Fehlererkennung

In der Grafik verdeutlichen die nach rechts bzw. links zeigenden Pfeile den Codiervorgang bzw. die Decodierung:

$$\underline{u_0} = (0, 0) \leftrightarrow (0, 0, 0, 0) = \underline{x_0}\hspace{0.05cm},$$
$$\underline{u_1} = (0, 1) \leftrightarrow (0, 1, 0, 1) = \underline{x_1}$$
$$\underline{u_2} = (1, 0) \leftrightarrow (1, 0, 1, 0) = \underline{x_2}\hspace{0.05cm},$$
$$\underline{u_3} = (1, 1) \leftrightarrow (1, 1, 1, 1) = \underline{x_3}\hspace{0.05cm}.$$


Rechts erkennt man alle  $2^4 = 16$  möglichen Empfangsworte  $\underline{y}$:

  • Von diesen ergeben sich  $2^n - 2^k = 12$  nur durch Bitfehler.
  • Empfängt der Decoder ein solches „weißes” Codewort,  so erkennt er zwar einen Fehler,  er kann diesen aber wegen  $d_{\rm min} = 2$  nicht korrigieren.
  • Empfängt er beispielsweise  $\underline{y} = (0, 0, 0, 1)$,  so kann nämlich mit gleicher Wahrscheinlichkeit  $\underline{x_0} = (0, 0, 0, 0)$  oder  $\underline{x_1} = (0, 1, 0, 1)$ gesendet worden sein.


$\text{Beispiel 11:}$     $\text{(5, 2, 3)–Blockcode}$

(5, 2, 3)–Blockcode zur Fehlerkorrektur

Hier gibt es wegen $k=2$ vier gültige Codeworte :

$$\underline{x_0} = (0, 0, 0, 0, 0)\hspace{0.05cm},$$
$$\underline{x_1} =(0, 1, 0, 1, 1)\hspace{0.05cm},$$
$$\underline{x_2} =(1, 0, 1, 1, 0)\hspace{0.05cm},$$
$$\underline{x_3} =(1, 1, 1, 0, 1).$$

In der Grafik dargestellt ist die Empfängerseite, wobei man verfälschte Bit an der Kursivschrift erkennt.

  • Von den  $2^n - 2^k = 28$  unzulässigen Codeworten lassen sich nun  $20$  einem gültigen Codewort  (Füllfarbe:   rot,  grün,  blau oder ocker)  zuordnen,  wenn man davon ausgeht,  dass ein einziger Bitfehler wahrscheinlicher ist als deren zwei oder mehr.
  • Zu jedem gültigen Codewort gibt es fünf unzulässige Codeworte mit jeweils nur einer Verfälschung   ⇒   Hamming–Distanz  $d_{\rm H} =1$.  Diese sind in dem jeweiligen Quadrat mit roter, grüner, blauer oder ockerfarbenen Hintergrundfarbe angegeben.
  • Die Fehlerkorrektur ist für diese aufgrund der minimalen Distanz  $d_{\rm min} = 3$  zwischen den Codeworten möglich.
  • Acht Empfangsworte sind nicht decodierbar.  Beispielsweise könnte das Empfangswort  $\underline{y} = (0, 0, 1, 0, 1)$  aus dem Codewort  $\underline{x}_0 = (0, 0, 0, 0, 0)$  entstanden sein,  aber auch aus dem Codewort  $\underline{x}_3 = (1, 1, 1, 0, 1)$.  In beiden Fällen wären zwei Bitfehler aufgetreten.


Zur Nomenklatur in diesem Buch


Eine Zielvorgabe unseres Lerntutorials  $\rm LNTwww$  war,  das gesamte Fachgebiet der Nachrichtentechnik und der zugehörigen Grundlagenfächer mit einheitlicher Nomenklatur zu beschreiben.  In diesem zuletzt in Angriff genommenen Buch „Kanalcodierung” müssen nun doch einige Änderungen hinsichtlich der Nomenklatur vorgenommen werden.  Die Gründe hierfür sind:

  • Die Codierungstheorie ist ein weitgehend in sich abgeschlossenes Fachgebiet und nur wenige Autoren von einschlägigen Fachbüchern zu diesem Gebiet versuchen,  einen Zusammenhang mit anderen Aspekten der Digitalsignalübertragung herzustellen.
  • Die Autoren der wichtigsten Bücher zur Kanalcodierung – englischsprachige und deutsche – verwenden weitgehend eine einheitliche Nomenklatur.  Wir erlauben uns deshalb nicht,  die Bezeichnungen zur Kanalcodierung in unser Übertragungstechnik–Schema zu pressen.

Einige Nomenklaturänderungen gegenüber den anderen  $\rm LNTwww$–Büchern sollen hier genannt werden:

  • Alle Signale werden durch Symbolfolgen in Vektorschreibweise dargestellt.  Beispielsweise kennzeichnet  $\underline{u} = (u_1, u_2, \hspace{0.05cm}\text{...}\hspace{0.05cm}, u_k)$  die  Quellensymbolfolge  und  $\underline{v} = (v_1, v_2, \hspace{0.05cm}\text{...}\hspace{0.05cm}, v_k)$  die Sinkensymbolfolge.  Bisher wurden diese Symbolfolgen mit  $\langle q_\nu \rangle$  bzw.  $\langle v_\nu \rangle$  bezeichnet.
  • Der Vektor $\underline{x} = (x_1, x_2, \hspace{0.05cm}\text{...} \hspace{0.05cm}, x_n)$  bezeichnet nun das zeitdiskrete Äquivalent zum Sendesignal  $s(t)$,  während das Empfangssignal  $r(t)$  durch den Vektor  $\underline{y} = (y_1, y_2, \hspace{0.05cm}\text{...}\hspace{0.05cm}, y_n)$  beschrieben wird.  Die Coderate ist der Quotient   $R=k/n$   mit   $0 \le R \le 1$ und die Anzahl der Prüfbits ergibt sich zu  $m = n-k$.
  • Im ersten Hauptkapitel sind die Elemente  $u_i$  und  $v_i$   $($jeweils mit Index  $i = 1, \hspace{0.05cm}\text{...} \hspace{0.05cm}, k)$  der Vektoren  $\underline{u}$  und  $\underline{v}$  stets binär  $(0$  oder  $1)$,  ebenso wie die  $n$  Elemente  $x_i$  des Codewortes  $\underline{x}$.  Bei digitalem Kanalmodell  ("BSC""BEC""BSEC") gilt auch für die  $n$  Empfangswerte  $y_i \in \{0, 1\}$.
  • Das  "AWGN–Kanalmodell"  ist durch reellwertige Ausgangswerte  $y_i$  gekennzeichnet.  Der  "Codewortschätzer"  gewinnt dann aus dem Vektor  $\underline{y} = (y_1, y_2, \hspace{0.05cm}\text{...}\hspace{0.05cm}, y_n)$  den binären Vektor  $\underline{z} = (z_1, z_2, \hspace{0.05cm}\text{...} \hspace{0.05cm}, z_n)$,  der mit dem Codewort  $\underline{x}$  zu vergleichen ist.
  • Der Übergang von  $\underline{y}$  auf  $\underline{z}$  erfolgt durch Schwellenwertentscheidung   ⇒   "Hard Decision"  oder nach dem MAP–Kriterium   ⇒   "Soft Decision".  Bei gleichwahrscheinlichen Eingangssymbolen führt die „Maximum Likelihood”–Schätzung ebenfalls zur minimalen Fehlerrate.
  • Im Zusammenhang mit dem AWGN–Modell macht es Sinn,  binäre Codesymbole  $x_i$  bipolar  $($also $\pm1)$  darzustellen.  An den statistischen Eigenschaften ändert sich dadurch nichts.  Wir kennzeichnen im Folgenden die bipolare Signalisierung durch eine Tilde.  Dann gilt:
\[\tilde{x}_i = 1 - 2 x_i = \left\{ \begin{array}{c} +1\\ -1 \end{array} \right.\quad \begin{array}{*{1}c} {\rm falls} \hspace{0.25cm} x_i = 0\hspace{0.05cm},\\ {\rm falls} \hspace{0.25cm}x_i = 1\hspace{0.05cm}.\\ \end{array}\]

Aufgaben zum Kapitel


Aufgabe 1.1: Zur Kennzeichnung aller Bücher

Aufgabe 1.2: Einfacher binärer Kanalcode

Aufgabe 1.2Z: 3D–Darstellung von Codes

Quellenverzeichnis

  1. Söder, G.:  Modellierung, Simulation und Optimierung von Nachrichtensystemen.  Berlin – Heidelberg: Springer, 1993.
  2. Kötter, R.; Mayer, T.; Tüchler, M.; Schreckenbach, F.; Brauchle, J.:  Channel Coding.  Vorlesungsmanuskript, Lehrstuhl für Nachrichtentechnik, TU München, 2008.
  3. Liva, G.:  Channel Coding.  Vorlesungsmanuskript, Lehrstuhl für Nachrichtentechnik, TU München und DLR Oberpfaffenhofen, 2010.