<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Faltungscode</id>
	<title>Faltungscode - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Faltungscode"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Faltungscode&amp;action=history"/>
	<updated>2026-05-29T17:51:57Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Faltungscode&amp;diff=246601&amp;oldid=prev</id>
		<title>imported&gt;Joschi71: /* Bedeutung */ Stil</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Faltungscode&amp;diff=246601&amp;oldid=prev"/>
		<updated>2026-04-23T00:34:26Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Bedeutung: &lt;/span&gt; Stil&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Faltungscodes&amp;#039;&amp;#039;&amp;#039; (auch &amp;#039;&amp;#039;&amp;#039;konvolutioneller Code&amp;#039;&amp;#039;&amp;#039;; engl. &amp;#039;&amp;#039;Convolutional Code&amp;#039;&amp;#039;) – ein Begriff der [[Kodierungstheorie|Codierungstheorie]] – werden, wie auch [[Blockcode]]s, in der [[Nachrichtentechnik]] zur [[Kanalkodierung]] eingesetzt, denn sie bieten eine [[Vorwärtsfehlerkorrektur]]. Dabei wird durch zusätzlich eingebrachte [[Redundanz (Informationstheorie)|Redundanz]] ein höherer Schutz gegen Übertragungs- bzw. Speicherfehler erreicht. Durch das namensgebende mathematische Verfahren der [[Faltung (Mathematik)|Faltung]] (auch Konvolution genannt) wird der Informationsgehalt der einzelnen [[Nutzdaten]]&amp;lt;nowiki/&amp;gt;stellen über mehrere Stellen des Codewortes verteilt.&lt;br /&gt;
&lt;br /&gt;
Faltungscodes haben nichts mit der ähnlich klingenden [[Code-Faltung]] zu tun.&lt;br /&gt;
&lt;br /&gt;
== Bedeutung ==&lt;br /&gt;
Faltungscodes werden beispielsweise im [[Mobilfunk]] und bei [[Satellit (Raumfahrt)|Satellitenübertragungen]] zur digitalen Datenübertragung eingesetzt. Sie finden aber auch bei Speichermedien wie [[Festplattenlaufwerk|Festplatten]] Anwendung und dienen dort dem Schutz gegen Lesefehler. Eine Kombination aus Faltungscodierung und digitaler [[Modulation (Technik)|Modulation]] ist die [[Trellis-Coded Modulation]].&lt;br /&gt;
&lt;br /&gt;
Ein Faltungscodierer bildet dabei im Regelfall eingangsseitig &amp;#039;&amp;#039;k&amp;#039;&amp;#039; Informationsbits (Nutzdatenbits) auf ein &amp;#039;&amp;#039;n&amp;#039;&amp;#039; Bit langes [[Code]]wort ab, wobei &amp;#039;&amp;#039;k&amp;#039;&amp;#039; kleiner als &amp;#039;&amp;#039;n&amp;#039;&amp;#039; ist. Aufeinanderfolgende Codewörter sind voneinander abhängig, d.&amp;amp;nbsp;h. ein Faltungscodierer besitzt im Gegensatz zu Blockcodes ein inneres „Gedächtnis“. Da sich in der Praxis allerdings nur endlich lange Datensequenzen bearbeiten lassen, werden diese Sequenzen auf eine bestimmte Anzahl an Codewörtern limitiert. Danach wird der Faltungscodierer durch [[Faltungscode#Terminierung|Terminierung]] wieder in einen definierten Zustand gebracht, der meist gleich dem Ausgangszustand ist. Daher lassen sich übliche Faltungscodes auch als eine Form von speziellen, nicht-systematischen Blockcodes beschreiben.&lt;br /&gt;
&lt;br /&gt;
Bei Faltungscodes wird die Information, die ein bestimmtes Nutzdatenbit trägt, über mehrere Stellen (Bits) des Codewortes verteilt. Die Verteilung des [[Informationsgehalt]]es – man kann sich dies auch als eine Art „Verschmierung“ über einzelne Bits des Codewortes vorstellen – wird durch die mathematische Funktion der [[Faltung (Mathematik)|Faltung]] erreicht. Dadurch entstehen Abhängigkeiten zwischen den einzelnen Codebits. Werden durch Fehler einzelne Stellen des Codewortes verfälscht, wobei die Anzahl der Fehler pro Codewort eine bestimmte obere Grenze nicht überschreiten darf, kann der Faltungsdecodierer durch die über mehrere Stellen verteilte Information die korrekte Nutzdatenfolge aus den um die Fehlerstelle benachbarten Stellen des Codewortes ermitteln.&lt;br /&gt;
&lt;br /&gt;
Eine wesentliche Besonderheit von Faltungscodes ist, dass für deren Konstruktion kein systematisches Verfahren bekannt ist. Faltungscodes werden primär durch rechenaufwendige Simulationen und das Durchprobieren sehr vieler unterschiedlicher Faltungsstrukturen oder auch durch zufällige Entdeckungen gewonnen. Die Mehrzahl der dabei durchprobierten Strukturen liefert so genannte &amp;#039;&amp;#039;katastrophale Faltungscodes&amp;#039;&amp;#039;, die bestimmte Übertragungsfehler nicht korrigieren, sondern durch eine theoretisch unendlich lange Folge von Fehlern ersetzen. Daher existieren im Vergleich zu den Blockcodes nur sehr wenige in der Praxis relevante und verwertbare Faltungscodes. Dafür sind für die Decodierung von Faltungscodes mittels so genannter &amp;#039;&amp;#039;Soft-Decision&amp;#039;&amp;#039; sehr leistungsfähige Verfahren in Form des [[Viterbi-Algorithmus]] bekannt.&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
[[Datei:Convolutional encoder 5 7 non recursive 2.svg|mini|Struktur eines nicht-rekursiven Faltungscodierers mit R&amp;lt;sub&amp;gt;c&amp;lt;/sub&amp;gt;&amp;amp;#8239;=&amp;amp;#8239;1/2]]&lt;br /&gt;
[[Datei:Convolutional encoder recursive 2.svg|mini|Rekursiver Faltungscodierer mit einer Rückkopplung]]&lt;br /&gt;
Ein Faltungscodierer lässt sich durch ein [[Schieberegister]] beschreiben, in das seriell die Nutzdatenbits geschoben werden und einer kombinatorischen Struktur aus logischen [[XOR]]-Verknüpfungen, die das ausgangsseitige Codewort bilden. Dabei wird zwischen zwei wesentlichen Strukturen unterschieden:&lt;br /&gt;
&lt;br /&gt;
# Nicht-rekursive Faltungscodierer&lt;br /&gt;
# [[Rekursion|Rekursive]] Faltungscodierer&lt;br /&gt;
&lt;br /&gt;
Rekursive Faltungscodierer besitzen interne Rückkopplungsstellen, die zu unendlich langen Ausgabefolgen führen können. Rekursive Faltungsstrukturen lassen sich systematisch aus den nicht-rekursiven Faltungsstrukturen gewinnen. Diese Kodierer werden in der Literatur als RSC-Encoder (&amp;#039;&amp;#039;Recursive Systematic Convolutional&amp;#039;&amp;#039;-Encoder) bezeichnet.&lt;br /&gt;
&lt;br /&gt;
Die Unterteilung ist ähnlich motiviert wie bei den digitalen [[Filter mit endlicher Impulsantwort|Filtern mit endlicher Impulsantwort]] (FIR) mit nicht-rekursiver Struktur bzw. den [[Filter mit unendlicher Impulsantwort|Filtern mit unendlicher Impulsantwort]] (IIR) mit rekursiver Struktur. Allerdings haben Faltungscodierer außer groben Ähnlichkeiten in der Struktur nichts mit digitalen Filtern im Speziellen zu tun.&lt;br /&gt;
&lt;br /&gt;
=== Parameter ===&lt;br /&gt;
Aus der Struktur eines Faltungscodierers ergibt sich die Einflusslänge oder auch Gedächtnisordnung &amp;#039;&amp;#039;L&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;c&amp;lt;/sub&amp;gt;. Sie beschreibt die Anzahl der Takte, die ein Eingangsbit (Nutzdatenbit) benötigt, um alle Stellen des Schieberegisters zu durchlaufen und somit ein Einfluss eines bestimmten Nutzdatenbits auf das ausgangsseitige Codewort vorliegt. Bei nicht-rekursiven Faltungscodierern entspricht sie der Anzahl der Speicherelemente des Faltungscodierers.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Parameter eines Faltungscodes ist seine Coderate &amp;#039;&amp;#039;R&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;c&amp;lt;/sub&amp;gt;. Sie gibt das Verhältnis von der ganzzahligen Anzahl &amp;#039;&amp;#039;k&amp;#039;&amp;#039; der eingangsseitigen Informationsbits zu der ganzzahligen Anzahl &amp;#039;&amp;#039;n&amp;#039;&amp;#039; der ausgangsseitig erzeugten Codebits an:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;R_c = \frac{k}{n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;R&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;c&amp;lt;/sub&amp;gt; ist dabei immer kleiner gleich 1. Dabei kann die Anzahl &amp;#039;&amp;#039;k&amp;#039;&amp;#039; der eingangsseitigen Informationsbit auch größer 1 sein. In diesem Fall werden pro Takt mehrere Nutzdatenbits parallel an den Encoder geschickt. Die ebenfalls parallel abzugreifenden ausgangsseitigen &amp;#039;&amp;#039;n&amp;#039;&amp;#039; Codebits werden durch einen [[Multiplexer]] in einen seriellen Datenstrom mit entsprechend höherer Taktrate umgewandelt.&lt;br /&gt;
&lt;br /&gt;
Bei bestimmten Faltungscodes können einzelne eingangsseitige Nutzdatenbits auch direkt bestimmten ausgangsseitigen Codebits ohne eine Faltungscodierung zugeordnet werden. In diesem Fall spricht man von asymmetrischen Faltungscodes. Diese Verfahren werden beispielsweise bei der [[Trellis-Code|Trellis-Codierten-Modulation]] als wesentlicher Bestandteil verwendet. Werden hingegen alle Nutzdatenbits jeweils eigenen Schieberegisterketten der Gedächtnisordnung &amp;#039;&amp;#039;L&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;c&amp;lt;/sub&amp;gt; zugeordnet, spricht man von symmetrischen Faltungscodes.&lt;br /&gt;
&lt;br /&gt;
=== Terminierung ===&lt;br /&gt;
In praktischen Anwendungen sind nur Nutzdatensequenzen mit endlicher Länge von Bedeutung. Dies macht eine sogenannte Terminierung (engl.: &amp;#039;&amp;#039;Termination&amp;#039;&amp;#039;) der Sequenz notwendig. Man bezeichnet hiermit das Zurückführen des Encoders in einen definierten Endzustand. Falls keine Terminierung am Ende der Nutzdatensequenz vorgenommen wird, wirkt sich dies wesentlich auf die Korrekturfähigkeit bei der Decodierung aus. Ist dem Decodierer der Endzustand einer Sequenz nämlich nicht bekannt, kann er die letzten Informationsbits nur sehr unsicher abschätzen, was eine gesteigerte Fehlerwahrscheinlichkeit zur Folge hat. Ist der Endzustand und die Sequenzlänge &amp;#039;&amp;#039;N&amp;#039;&amp;#039; hingegen bekannt und zwischen Encoder und Decoder vereinbart, kann die Bestimmung der letzten Stellen einer Nutzdatensequenz auf Decoderseite sicher erfolgen.&lt;br /&gt;
&lt;br /&gt;
Im Falle von nicht-rekursiven Faltungscodes werden typischerweise an das Ende einer Nutzdatensequenz eine Folge von logisch-&amp;#039;&amp;#039;0&amp;#039;&amp;#039; Bits angehängt. Dieser sogenannte &amp;#039;&amp;#039;Tail&amp;#039;&amp;#039; führt den Encoder in einen definierten Endzustand, den so genannten Nullzustand, zurück, der auch dem Decoder bekannt ist. Durch diese zusätzlichen Terminierungsstellen am Ende verlängert sich allerdings die Nutzdatensequenz, und die Coderate reduziert sich auf den Wert:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;R_c^\text{tail} = R_c \cdot \frac{1}{k} \cdot \left(1 - \frac{L_c - 1}{N}\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Falle von rekursiven Faltungscodes hängt der &amp;#039;&amp;#039;Tail&amp;#039;&amp;#039; von den vorherigen Nutzdaten ab.&lt;br /&gt;
&lt;br /&gt;
=== Grafische Darstellung ===&lt;br /&gt;
[[Datei:Trellis state.svg|mini|Zustandsübergangsdiagramm eines nicht-rekursiven Faltungscode mit zwei Speichern]]&lt;br /&gt;
[[Datei:Convolutional code trellis diagram.svg|mini|Trellis-Diagramm mit vier Zuständen über fünf Zeitpunkte; rot eingezeichnet ist ein möglicher Entscheidungsweg]]&lt;br /&gt;
Ein Faltungscodierer kann als [[endlicher Automat]] mittels [[Zustandsübergangsdiagramm]] interpretiert werden, wie er in nebenstehender Abbildung für zwei Speicher mit vier Zuständen abgebildet ist. Die Anzahl der Zustände ergibt sich allgemein bei binärem Code aus der Anzahl &amp;#039;&amp;#039;z&amp;#039;&amp;#039; der Zustandsspeicher zu 2&amp;lt;sup&amp;gt;z&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Der Nachteil der Darstellungsform mittels Zustandsübergangsdiagramm ist der fehlende zeitliche Bezug. Dieser fehlende zeitliche Bezug bei der seriellen Decodierung kann durch ein [[Trellis-Diagramm]] (kurz Trellis) visualisiert werden. Ein Trellis-Diagramm ist die Darstellung eines Zustandsübergangsdiagramms, das über die Zeitachse „abgerollt“ wird. Im Rahmen des Trellis-Diagramms lassen sich auch die Decodierungsprozesse von Faltungscodes mit dem [[Viterbi-Algorithmus]] anschaulich darstellen: Dabei bekommen die einzelnen Übergänge von einem Zustand in den nächsten verschiedene Wahrscheinlichkeitswerte zugeordnet, wodurch in sich in der Folge über mehrere Zustände hinweg meist eindeutig ein einziger Pfad im Trellis herausbildet, der die geringste Summenfehlerwahrscheinlichkeit gegenüber allen anderen Pfaden aufweist. Die diesem Pfad zugeordneten Symbole werden dann vom Decoder als die am wahrscheinlichsten gesendeten Symbole angesehen und die zugeordneten Informationsbits zur weiteren Verarbeitung ausgegeben (MLSE = Maximum Likelihood Sequence Estimation).&lt;br /&gt;
&lt;br /&gt;
Bei Faltungscodes mit hoher Einflusslänge wachsen allerdings die Anzahl der Zustände im Trellis-Diagramm exponentiell und diese Darstellung samt den Übergangskanten wird schnell unübersichtlich. Das Trellis-Diagramm dient daher zur Darstellung des Decodierungsprozesses mittels Viterbi-Algorithmus bei beispielhaften Faltungscodes mit geringer Einflusslänge.&lt;br /&gt;
&lt;br /&gt;
=== Decodierung ===&lt;br /&gt;
In der Regel kommt für die Decodierung von Faltungscodes der [[Viterbi-Algorithmus|Viterbi-Decoder]] zum Einsatz. Dieses Verfahren basiert wie erwähnt auf der Trellis-Darstellung des Codes und bestimmt für eine gestörte Codesequenz die wahrscheinlichste zugehörige Nutzdaten- oder Codesequenz. Der Viterbi-Decoder kann dabei nicht nur [[Binary Symmetric Channel|binäre]], sondern auch [[Kanalkapazität#AWGN-Kanal|kontinuierliche]] Eingangssequenzen verarbeiten. Man spricht dann von &amp;#039;&amp;#039;Hard-&amp;#039;&amp;#039; bzw. &amp;#039;&amp;#039;Soft-Decision&amp;#039;&amp;#039;-Decodierung. Generell lassen sich Soft-Decision-Decoder für Faltungs-Codes leichter realisieren als dies bei Block-Codes der Fall ist.&lt;br /&gt;
&lt;br /&gt;
Der klassische Viterbi-Decoder gibt binäre Sequenzen aus – für verschiedene Anwendungen ist es jedoch wichtig, nicht nur die einzelnen decodierten Bits zu kennen, sondern auch deren Zuverlässigkeit. Das Erzeugen dieser Zuverlässigkeiten kann beispielsweise mit Hilfe eines modifizierten Viterbi-Decoders, dem sogenannten &amp;#039;&amp;#039;Soft-Output-Viterbi-Algorithmus&amp;#039;&amp;#039; (SOVA), oder dem [[BCJR-Algorithmus|MAP/BCJR-Algorithmus]] erfolgen.&lt;br /&gt;
&lt;br /&gt;
Für Codes mit sehr großen Gedächtnisordnungen wird das Trellis sehr komplex und eine trellisbasierte Decodierung mittels Viterbi-Decoder damit sehr aufwendig. In diesem Fall können alternativ sequentielle, suboptimale Decodierer verwendet werden, welche auf der Darstellung des Codebaums arbeiten.&lt;br /&gt;
&lt;br /&gt;
=== Punktierung ===&lt;br /&gt;
Bei Faltungscodes lässt sich durch eine sogenannte Punktierung des Codewortes gezielt eine bestimmte Coderate &amp;#039;&amp;#039;R&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;c&amp;lt;/sub&amp;gt; wählen. Bei der Punktierung werden bestimmte Bitpositionen des Codewortes weggelassen („punktiert“) und dadurch die Coderate erhöht. Der Decoder muss dieses sogenannte Punktierungsschema kennen und bei der Decodierung berücksichtigen.&lt;br /&gt;
&lt;br /&gt;
Der Grund für Punktierung liegt darin, die Codewortlängen genau auf eine bestimmte Rahmenlänge für die nachfolgende Datenübertragung bzw. Datenspeicherungen auszulegen. Durch das Weglassen einzelner Stellen des Codewortes kommt es allerdings auch zu einer Reduktion der Korrekturleistung.&lt;br /&gt;
&lt;br /&gt;
=== Erweiterung ===&lt;br /&gt;
Die Erweiterung sind verkettete Faltungscodes. Dabei werden mehrere unterschiedliche oder auch gleiche Faltungscodes seriell oder parallel miteinander verkettet. Die Verkettung der einzelnen Codes erfolgt über eine Funktion die als &amp;#039;&amp;#039;Interleaver&amp;#039;&amp;#039; bezeichnet wird und eine gleichmäßige Verteilung von Fehlern auf die unterschiedlichen Codes ermöglicht und eine Art Entkopplung der Teilcodes ergibt. Damit kann ein größerer [[Codegewinn]] erreicht werden als die Summe der einzelnen Faltungscodes für sich alleine.&lt;br /&gt;
&lt;br /&gt;
Eine spezielle Form der Codeverkettung sind die [[Turbo-Code]]s. Eine Untergruppe der Turbo-Codes, die sogenannten &amp;#039;&amp;#039;Turbo-Convolutional-Codes&amp;#039;&amp;#039; (TCC), basieren auf rekursiven systematischen Faltungscodes. Nicht-rekursive Faltungscodes weisen bei den TCC nicht die gleichen Verbesserung im Codegewinn auf.&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{Literatur&lt;br /&gt;
 |Autor = [[Martin Bossert]]&lt;br /&gt;
 |Titel = Kanalcodierung&lt;br /&gt;
 |Reihe = Informationstechnik&lt;br /&gt;
 |Verlag = B. G. Teubner|Ort= Stuttgart |Auflage=2. vollständig neubearbeitete und erweiterte |Jahr = 1998 |ISBN = 3-519-16143-5&lt;br /&gt;
}}&lt;br /&gt;
* {{Literatur&lt;br /&gt;
 |Autor = [[Karl-Dirk Kammeyer]], Volker Kühn&lt;br /&gt;
 |Titel = MATLAB in der Nachrichtentechnik&lt;br /&gt;
 |Verlag = J. Schlembach Fachverlag |Ort=Weil der Stadt |Jahr = 2001 |ISBN = 3-935340-05-2&lt;br /&gt;
}}&lt;br /&gt;
* {{Literatur&lt;br /&gt;
 |Autor = Todd K. Moon&lt;br /&gt;
 |Titel = Error Correction Coding. Mathematical Methods and Algorithms&lt;br /&gt;
 |Verlag = Wiley-Interscience |Ort=Hoboken NJ  |Jahr = 2005 | ISBN = 0-471-64800-0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://home.netcom.com/~chip.f/Viterbi.html Erklärung des Faltungscodes mit Viterbi-Algorithmus] (englisch)&lt;br /&gt;
* {{Webarchiv|url=http://www.tu-chemnitz.de/informatik/ThIS/downloads/courses/ss03/kv/Faltungscodes.pdf|text=Erklärung des Faltungscodes mit Viterbi-Algorithmus mit detailliertem Beispiel|wayback=20160418104609|format=PDF; 548&amp;amp;nbsp;kB}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Theoretische Informatik]]&lt;br /&gt;
[[Kategorie:Kodierungstheorie]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Joschi71</name></author>
	</entry>
</feed>