se:informationstheorie
Überblick
basiert auf grundlegenden Arbeiten von Shannon
eine Quelle liefert informationskennzeichnende Zeichen xi aus einem q Zeichen umfassenden Alphabet X mit gewissen Wahrscheinlichkeiten
bei stationäre Quellen sind die Wahrscheinlichkeiten, mit denen die Quelle Zeichen abgibt nicht von der Zeit abhängig
bei gedächtnislosen Quellen sind die Wahrscheinlichkeiten der Zeichen unabhängig von zuvor oder im Anschluss gesendeten Zeichen
aus den Elementen des Zeichenvorrats können Worte wi der Länge mi gebildet werden. Es lassen sich qm verschiedene Worte gleicher Länge m herstellen
eine Codierung ist die Vorschrift zur eindeutigen Abbildung der Zeichen eines Zeichenvorrats A auf Codeworte, die aus den Zeichen eines Zeichenvorrats B gebildet werden: C(xi) = wi
Beispiele für Codes: Morse-Code,
ASCII-Code, Dezimal-, Oktalzahlen etc.
Information ist Abbau von Ungewissheit (Beispiel Zufallsexperiment: Ausgang vorher unbekannt, danach bekannt)
Informationsgehalt I(xi)/bit = -ld p(xi)
I(xi, xj) = I(xi) + I(xj)
der Informationsgehalt ist umso größer, je unwahrscheinlicher das Zeichen ist
jedes Zeichen eines binären Zeichenvorrats hat bei gleichwahrscheinlichem Auftreten einen Informationsgehalt von -ld (0,5) = 1
die Entropie H ist der mittlere Informationsgehalt der Zeichen einer Quelle → Maß für statistische Unordnung bzw. Unsicherheit
-
die Entropie ist der Erwartungswert des Informationsgehalts
die Entropie wird maximal, wenn alle Zeichen eines Zeichenvorrats gleich wahrscheinlich sind, Bezeichnung: Hmax oder H0
der Unterschied zwischen H(x) und H0 wird als Redundanz bezeichnet: p = H0 - H(x)
eine Redundanz kann auch für Codes angegeben werden: pcode = L - H(x) mit L = mittlere Codewortlänge
relative Coderedundanz oder Weitschweifigkeit: (L - H(x)) / L, Codeeffizienz: H(x) / L
ein optimaler Code besitzt unter bestimmten Randbedingungen (insb. ganzzahlige Wortlängen) die geringstmögliche Redundanz bzw. größtmögliche Effizienz
eine Quelle, deren Gedächtnis K Zeichen in die Vergangenheit reicht, wird als Markov-Quelle K-ter Ordnung bezeichnet
die bedingte Entropie H(x|s) ist der Mittelwert (über alle Zustände) des mittleren Informationsgehalts eines Zeichens, das in einem bestimmten Zustand der Quelle abgegeben wird
die Verbundentropie (H(x,s) ist der mittlere Informationsgehalt von ganzen Ausgangsfolgen einer Markov-Quelle
-
-
H(x,s) = H(x|s) + H(s) wobei H(s) wiederum eine Verbundentropie ist
beim Erhöhen der Nachrichtenlänge nähert sich der mittlere Informationsgehalt pro Zeichen asymptotisch der bedingten Entropie
Übertragungskanäle
abstraktes Kanalmodell des diskreten Kanals: x → Modulator → physikalischer Kanal → Demodulator → y
die Aufgabe von Modulator und Demodulator ist es, einen möglichst guten diskreten Kanal zu bilden
die Aufgabe von Codierer und Decodierer ist es, eine zuverlässige Übertragung über diesen Kanal zu gewährleisten
Demodulationsverfahren
bei Kanälen mit Gedächtnis hängt die Wahrscheinlichkeit des Ausgangszeichens nicht nur vom Eingangszeichen ab, sondern auch von den K vorangehenden Zeichen
diskreter gedächtnisloser Kanal = Discrete Memoryless Channel (DMC)
die Kanalmatrix enthält die Wahrscheinlichkeiten für die Ausgangszeichen
p(yj|xi) = Wahrscheinlichkeit, dass yj empfangen wird, wenn xi gesendet wurde
die Zeilensummen müssen 1 ergeben: 1 = p(y1|xi) + p(y2|xi) + … + p(yj|xi)
p(xj|yi) heißt A-posteriori-Wahrscheinlichkeit, p(xj) heißt A-priori-Wahrscheinlichkeit
der Detektor schließt aus dem empfangenen Zeichen yi auf das gesendete Zeichen xj
Maximierung der A-posteriori-Wahrscheinlichkeit (Maximum-A-Posteriori-Probability-Detektion: MAP-Detektion) p(yi|xj) * p(xj)
wenn die Quellenstatistik nicht bekannt ist, fällt p(xj) weg bzw. ist für alle Eingangszeichen gleich. Dann wird lediglich das Maximum von p(yi|xj) gesucht → Maximum-Likelihood-Detektor
Entropien im Kanal
-
die Verbundentropie des Kanals gibt den mittleren Informationsgehalt eines Ein-/Ausgangszeichenpaares an
die bedingte Entropie H(x|y) heißt Rückschlussentropie oder Äquivokation und gibt den zusätzlichen Informationsgehalt eines Eingangszeichens an, wenn man das Ausgangszeichen kennt
die bedingte Entropie H(y|x) heißt Streuentropie oder Irrelevanz und gibt den zusätzlichen Informationsgehalt eines Ausgangszeichens an, wenn man das Eingangszeichen bereits kennt
H(x,y) = H(x|y) + H(y) = H(y|x) + H(x)
die Transinformation I(x;y) ist ein Maß für die mittlere in einem Ausgangszeichen enthaltene relevante Information (mittlerer Informationsgehalt abzüglich Irrelevanz)
Sonderfälle der DMC
rauschfreier Kanal: Kanalmatrix hat in jeder Zeile nur einen Wert != 0
verlustfreier Kanal: Kanalmatrix hat in jeder Spalte nur einen Wert != 0
total gestörter Kanal: Ein- und Ausgangszeichen sind statistisch unabhängig voneinander
symmetrischer Kanal: für die Elemente der Kanalmatrix gilt p(yi|xj) = 1 - p (Fehlerwahrscheinlichkeit des Kanals) wenn i = j, sonst = p / (q - 1)
die Kanalkapazität ist das Maximum der Transinformation für einen gegebenen Kanal
Quellencodierung
verlustlose Codierung
ein Quellencodierer erzeugt aus Quellzeichen Codeworte
die Gesamtheit der Codeworte heißt Code
Codes mit gleicher Wortlänge für jedes Codewort heißen Blockcodes
Klassen von Codes
nichtsinguläre Codes: eineindeutige (injektive) Abbildung zwischen Quellzeichen und Codewort (evtl. sind Trennzeichen zwischen den Codeworten nötig)
eindeutig decodierbare Codes: jede Folge von Codewörtern kann eindeutig auf eine Folge von Quellzeichen abgebildet werden (evtl. müssen alle Codewörter gelesen werden, um das erste Quellzeichen decodieren zu können)
unmittelbar decodierbare Codes, präfixfreie oder Präfixcodes: die Decodierung ist stets unmittelbar möglich, da kein längeres Codewort Anfangszeichen enthält, die einem kürzeren Codewort entsprechen)
-
-
Codeeffizienz: H(x) / L (mit L = mittlere Wortlänge * ld q) oder H(y) / Hmax(y)
ein eindeutiger Code mit der Effizienz 1 heißt idealer Code
ein optimaler Code (bezogen auf eine gegebene Quelle mit H(x)) liegt vor, wenn es keinen anderen eindeutig decodierbaren Code mit kleinerer mittlerer Wortlänge L gibt. Ein idealer Code ist optimal
die Codewortlängen eines jedes eindeutig decodierbaren Codes müssen die Kraft-McMillan-Ungleichung erfüllen
Huffman-Codes
einfaches Verfahren zur Erzeugung von optimalen Präfixcodes (mit minimaler mittlerer Codewortlänge)
Entropie-Codierung: Quellzeichen mit geringer Wahrscheinlichkeit bekommen längere Codeworte zugewiesen
Nachteile
Einsortieren der zusammengefassten Zeichen an jeweils höchster Stelle führt zu minimaler Varianz
Fundamentalsatz der Quellencodierung oder Shannons 1. Satz: Für jede stationäre gedächtnislose Quelle gibt es einen Code, dessen Effizienz beliebig nahe bei 1 liegt.
arithmetische Codierung: Codierung der gesamten Nachricht aus Quellzeichen mit bekannten Auftrittswahrscheinlichkeiten als reelle Zahl
zustandsabhängige Codierung: anwendbar bei gedächtnisbehafteten Quellen, bei denen die Auftrittswahrscheinlichkeiten der Quellzeichen abhängig vom aktuellen Zustand sind
Lauflängencodierung: hier werden mehrfach hintereinander auftretende Quellzeichen in der Form {Zeichen, Anzahl} codiert
Kompressionsverfahren mit adaptiven Wörterbüchern
LZ77: Sliding Window
LZ78: Aufbau eines expliziten adaptiven Wörterbuches (Erweiterung des LZ77, bei dem Zeichenfolgen außerhalb des Search Buffer nicht erkannt werden)
LZW: wie LZ78 nur mit Startwörterbuch, das alle Einzelzeichen des Quellalphabets enthält
verlustbehaftete Codierung
bei verlustloser Codierung liegt der Schwerpunkt auf der Effizienz (Kompressionsrate), die begrenzt ist durch die Quellenentropie
statt Verlusten sagt man auch Verzerrungen
das Maß der Qualitätsbeeinträchtigung durch Verzerrungen muss vom jeweiligen Rezipienten bestimmt werden, da messbare Abweichungen nicht unbedingt mit der von Menschen empfundenen Qualität übereinstimmen
einfache Berechnungen der Verzerrung ermitteln den (absoluten oder quadratischen) Abstand zwischen Eingangs- und Ausgangszeichen
dabei ist es sinnvoll, den mittleren quadratischen Fehler dieser Abstände zu ermitteln (MSE = Mean Square Error)
* {{:se:mse.jpg|}}
* das Signal-Verzerrungs-Verhältnis (SNR = Signal to Noise Ratio) setzt den Erwartungswert der quadratischen Eingangszeichen zu dem der Verzerrung ins Verhältnis
um zeit- und wertkontinuierlichen Signale wie Sprache codieren zu können, müssen die diskretisiert werden
die Diskretisierung zeitkontinuierlicher Signale erfordert immer eine Zeitdiskretisierung (Abtastung)
eine verlustfreie Abtastung kann nur bei bandbegrenzten Signalen und ausreichend hoher Abtastrate gewährleistet werden (→ Nyquist-Theorem)
diese Bandbegrenzung ist aber nicht immer gegeben, sodass meist eine Antialias-Tiefpassfilterung vorgenommen werden muss
* Antialiasing sorgt für eine Abschwächung des Alias-Effekts (zu hohe Frequenzen werden als niedrig abgetastet)
* {{:se:aliaseffekt.jpg|}}
* ein Tiefpassfilter schwächt zu hohe Frequenzen ab, sodass das Endsignal nur Frequenzen innerhalb eines bestimmten Bandes aufweist
* Beispiel Telefonie: alle Frequenzen über 3,4kHz werden "abgeschnitten"
* im Anschluss an die Abtastung müssen die ermittelten Werte quantisiert werden
* die Quantisierung bildet die kontinuierlichen oder fein quantisierten Ausgangswerte nicht umkehrbar auf diskrete Repräsentanten ab (Quantisierungsniveaus)
* {{:se:quantisierung.jpg|}}
* der Quantisierungsfehler kann als mit den Ausgangswerten unkorrelierte Zufallsvariable angesehen werden
* die Quantisierungsintervalle können theoretisch beliebig und unterschiedlich groß sein, es bietet sich jedoch an, gleich große Intervalle zu bilden
* {{:se:gleichmaessigequantisierung.jpg|}}
* die Zahl der Quantisierungsniveaus ist in der Praxis immer endlich (2<sup>w</sup> mit w als Binärwortlänge für die codierten Stufen)
* {{:se:quantisierungskennlinien.jpg|}}
* {{:se:snrgleichmaessigerquantisierer.jpg|}}
* bei Sprache ist die Verteilung der Frequenzen recht ungleich: viele kleine Signalwerte, wenig große. Daher muss die Quantisiereraussteuerung gering bleiben, was zu geringerem SNR führt
* Gegenmaßnahmen: **ungleichmäßige Quantisierung** (unterschiedliche Quantisierungsstufenhöhen) oder **adaptive Quantisierung** (Anpassung des Quantisierers an momentane Größe der Eingangswerte)
JPEG
Verfahren zur Standbildkompression (ISO-Standard)
nur Decodierprozess ist vorgeschrieben, nicht aber der Codierprozess
der Baseline-Codec hat die Eigenschaften:
Arbeitsweise auf Basis der Diskreten Cosinus-Transformation (DCT)
Quellbild hat 8 bit pro Komponente (z.B. pro Farbe)
Huffman-Codierung
-
2 verlustbehaftete Schritte: Subsampling und Quantisierung der DCT-Werte
* Farbraumtransformation
Bilder liegen meist in RGB-Darstellung mit 8 bit pro Farbe vor
Berechnung der Helligkeitsinformationen (Luminanz) und Farbdifferenzinformationen (Chrominanz) und Darstellung in Form von YUV
sinnvoll, da das menschliche Auge Helligkeitsunterschiede besser wahrnimmt als Farbunterschiede
die Auflösung der Chrominanzwerte kann nochmal um den Faktor 2 verringert werden (Subsampling)
* die Codierung erfolgt im Frequenzbereich, wozu die Werte in diesen überführt werden müssen → DCT
die DCT-Werte stellen niedrige und hohe Ortsfrequenzen dar (sich langsam bzw. schnell verändernde Werteabfolgen in Zeilen- und Spaltenrichtung) bzw. die Ähnlichkeit der Blöcke mit den Basisfunktionen
die Quantisierung der DCT-Werte bestimmt den Kompressionsfaktor
die Quantisierung erfolgt gleichförmig, jedoch für jeden der 64 Koeffizienten mit einer in einer Quantisierungsmatrix festgelegten Stufenhöhe
dabei werden die höherfrequenten Koeffizienten gröber quantisiert als die niederfrequenten, die letztere für die menschliche Wahrnehmung wichtiger sind
Codierung der quantisierten DCT-Werte mittels Huffman-Codierung
zuerst werden die Koeffizienten nach ihren Frequenzen sortiert (schlangenförmig von links oben nach rechts unten), sodass es zu längeren Nullfolgen (durch weniger hochfrequente Anteile in Bildern und zusätzlich die gröbere Quantisierung) kommt → Lauflängencodierung
die DC-Werte (Wert des Pixels 1/1) werden als Differenz zum DC-Werte des Blocks links neben dem aktuellen Block angegeben (die Differenz hat eine geringere Korrelation als die DC-Werte selbst, und kann damit effektiver Huffman-codiert werden)
MP3
bei der Audiokompression kann man Phänomene der Psychoakustik ausnutzen, um Irrelevanz (die der Empfänger nicht wahrnimmt) "abzuschneiden"
Töne mit hohem Schalldruck (laute Töne) maskieren Töne in umliegenden Frequenzen, die einen geringeren Schalldruck aufweisen (Simultanverdeckung)
auch kurz nach und interessanterweise auch vor dem Auftreten eines Maskierers verdeckt dieser Töne umliegender Frequenzen
moderne Audiocodierverfahren basieren auf dem Ausnutzen der Maskierungsschwelle und einem dadurch möglichen größeren Rauschen, als dies beim klassischen Verfahren (CD) der Fall ist (weißes Rauschen)
MP3 definiert nur codierten Bitstrom und Decoder-Algorithmus
der Standard sieht Abtastraten von 32, 44.1 oder 48 KHz vor mit Bitraten zwischen 32 und 320 kbit/s
ab ca. 160 kbit/s wird kein Unterschied mehr zwischen uncodiertem und codiertem Signal wahrgenommen
die Polyphasen-Filterbank teilt das Signal in 32 Teilbänder, die danach noch mit MDTC in jeweils 18 Unterkanäle aufgeteilt werden → 576 Spektralwerte
mittels FFT wird gleichzeitig das Perzeptionsmodell erstellt, das hauptsächlich die konkreten Verdeckungsschwellen als Ergebnis liefert
die Quantisierung (zwei Schleifen) muss dafür sorgen, dass die Verzerrung in allen Kanälen unterhalb der Maskierungsschwelle bleibt
dabei werden ungleichmäßige Quantisierer eingesetzt, die kleine Spektralwerte mit höherer Genauigkeit darstellen
die quantisierten Spektralwerte werden Huffman-codiert (die häufigen kleinen Werte bekommen kurze Codewörter)
die Bitrate wird iterativ angepasst
die Spektralwerte können durch einen globalen Verstärkungsfaktor und Skalierungsfaktoren für bestimmte Bereiche des Spektrums abgeschwächt werden
Funktionsweise: der globale Verstärkungsfaktor wird variiert und nach einer erneuten Quantisierung und Codierung überprüft, ob das Ergebnis der Ausgangsbitrate entspricht und die Maskierungsschwelle eingehalten wird (evtl. Korrektur durch Anpassung der Skalierungsfaktoren)
Kanalcodierung
die Grundidee der Kanalcodierung ist die Vermeidung von Übertragungsfehlern oder die Erkennung der solchen durch gezieltes Hinzufügen von Redundanz
FEC (Forward Error Control) und ARQ (Automatic Repeat Request)
FEC wird verwendet, wenn es keinen Rückkanal gibt oder die Übertragungszeit für den Request und die Antwort zu lang wäre (z.B. Mobilfunk)
bei PC-Netzen wird meist ARQ verwendet, da der Overhead hier keine große Rolle spielt und ARQ weniger aufwändig ist als FEC (bei gleicher Restfehlerwahrscheinlichkeit)
Auswahl eines Kanalcodes abhängig von Fehlerverhalten, Bandbreite, Sendeleistung, Delay und Art der Daten (wichtige Daten brauchen bessere Absicherung)
werden Nachrichten in geichgroße Blöcke aufgeteilt, handelt es sich um Blockcodes
Coderate: Verhältnis von Infosymbolen zu Codesymbolen
Hamminggewicht: Anzahl der von Null verschiedenen Symbole eines Codewortes
Hammingdistanz: Anzahl der verschiedenen Symbole zweier Codewörter
Kurzbezeichnung für Blockcodes: (m, n, dmin)q
der Coderaum umfasst alle m-stelligen Codewörter und dient u.a. der Darstellung von Distanzen zwischen den Codewörtern
mögliche Fehlererkennung: edet = dmin - 1
mögliche Fehlerkorrektur: ekor = (dmin - 1) / 2 (abrunden)
perfekter Code (dicht gepackter Code): alle Codeworte des Codes liegen in Korrigierkugeln mit einem Radius von ekor
Decodierung: Hard-Decision (Empfangsworte stammen aus dem Codealphabet), Soft-Decision (Empfangsworte stammen aus einem größeren Alphabet)
bei der Decodierung soll anhand des Empfangswortes das Wort gefunden werden, das mit der größten Wahrscheinlichkeit gesendet wurde
Maximierung der A-posteriori-Wahrscheinlichkeit (MAP): p(c|r) bzw. p(u|r)
wird auch Minimum Error Probability Decoding (MED) genannt, da die geringste Wortfehlerwahrscheinlichkeit erzielt wird
Hard-Decision: das Codewort, das dem Empfangswort zugewiesen wird, ist dasjenige, welches die geringste Hammingdistanz zum Empfangswort aufweist
Soft-Decision: Entscheidung aufgrund des Abstandsmaßes zwischen Codewort und Empfangswort (quadrierte euklidische Distanz im Coderaum)
um mittels Hard-Decision die gleiche Fehlerwahrscheinlichkeit zu erreichen wie mit Soft-Decision müsste man eine verdoppelte Sendeleistung aufwenden
Interleaving: Methode zum Umgang mit Bündelfehlern (mehrere Fehler gleichzeitig: Fehlerbursts)
die Codeworte werden ineinander verschachtelt, wodurch Bündelfehler sich zwar auf mehrere Worte, aber auf jedes einzeln nicht so stark auswirken
Folge ist ein erhöhter Speicherbedarf und eine Übertragungsverzögerung
Lineare Blockcodes
häufig verwendet: Modulo-2-Rechnung
Definition: ein binärer (m,n)-Code ist ein linearer Blockcode, wenn er ein n-dimensionalen Unterraum des Coderaums {0,1}m im Sinn der Modulo-2-Rechnung ist
jede beliebige Linearkombination aus Codewörtern ergibt wieder ein Codewort
damit muss in jedem linearen Blockcode auch das Nullwort enthalten sein
d(c,c') = w(c-c'), damit ergibt sich die minimale Hammingdistanz aus der Suche nach dem Codewort mit dem geringsten Hamminggewicht (außer dem Nullwort)
als Restfehler wird bei Fehlerkorrektur mittels Kanalcodes die Falschkorrektur (das ermittelte Codewort entspricht nicht dem übermittelten) bezeichnet
das empfangene Codewort wurde durch Verfälschung zu einem anderen gültigen Codewort
-
bei linearen Blockcodes treten Restfehler genau dann auf, wenn der Fehlervektor ein vom Nullwort verschiedenes Codewort ist
-
* Schranken für die erforderliche Redundanz
Singleton-Schranke: m - n >= dmin - 1
Codes, die dies mit Gleichheit erfüllen, heißen MDS-Codes (Maximum Distance Seperable)
Beispiele: (m,1,m)2-Wiederholungscodes, (n+1,n,2)2-Paritätscodes
Hamming-Schranke / Kugelpackungsschranke (Sphere-Packing Bound)
bei der Codierung werden aus den Infowörtern durch Multiplikation mit einer Generatormatrix Codewörter erzeugt
die Generatormatrix besteht aus n Codewörtern der Länge m
* ein Vertauschen der Spalten der Generatormatrix erzeugt einen äquivalenten Code mit den gleichen Parametern (aber anderen Codewörtern)
* ein Vertauschen der Zeilen oder das Ersetzen einer Zeile durch ihre Summe mit einer anderen Zeile ändert nicht den Code, sondern nur die Zuordnung von Codewörtern zu Infowörtern
* systematische Codes sind solche, bei denen die Infobits in allen Codeworten an der gleichen Stelle stehen (ergänzt um die Schutzbits), sie lassen sich also ohne Berechnung aus dem Codewort ablesen
die Generatormatrix G hat dabei n Spalten mit jeweils nur einer 1
Codewörter klar-systematischer Codes bestehen aus dem Infowort mit angehängten Schutzbits, d.h. die Infobits in Infowort und Codewort stehen an der gleichen Stelle
aus jedem linearen Blockcode kann durch Anwendung der Zeilenoperationen ein systematischer Blockcode gemacht werden
Decodierung mittels Prüfmatrix H = [PT|Em - n]
Modifikation linearer Codes
Expandieren: m' > m, n' = n, R' < R, d'min >= dmin
Punktieren: m' < m, n' = n, R' > R, d'min ⇐ dmin
Verlängern: m' > m, n' > n, m' - n' = m - n, R' > R, d'min ⇐ dmin
Verkürzen: m' < m, n' < n, m' - n' = m - n, R' < R, d'min >= dmin
wenn Codes durch Vertauschen der Generator- und Prüfmatrix ineinander übergehen (z.B. Paritäts- und Wiederholungscode), nennt man diese Codes dual oder orthogonal
Hamming-Codes sind Einzelfehler-korrigierende Blockcodes, deren Coderate mit wachsender Blocklänge gegen 1 geht
Hamming-Codes können erstellt werden, indem die 2m - n - 1 von 0 verschiedenen Paritätsbit-Kombinationen in Spaltenform angeordnet und dann so sortiert werden, dass rechts eine m-n x m-n Einheitsmatrix entsteht. Aus dieser Prüfmatrix kann nun die Generatormatrix des Hamming-Codes abgeleitet werden.
bei zyklische Blockcodes, die eine Untermenge der linearen Blockcodes sind, entstehen auch durch zyklische Verschiebung der Codeworte (z.B. um 1 nach links: 010001 → 100010) andere Codeworte
Vorteil: können einfach mittels rückgekoppelten Schieberegistern (LFSR = Linear Feedback Shift Register) realisiert werden
fehlererkennende zyklische Blockcodes (CRC = Cyclic Redundancy Check) erkennen gut Bündelfehler
-
-
wenn ein Generatorpolynom bekannt ist, kann damit durch c(x) = u(x) * g(x) der (meist nicht-systematische) Code erzeugt werden
Codeworte sind daher immer Vielfache des Generatorpolynoms
* die Syndrome bei zyklischen Blockcodes entspechen s(x) = r(x) mod g(x)
* ein Fehler ist aufgetreten, wenn der Rest dieser Division nicht 0 ist
* ein zyklischer Code ist durch die Angabe seines Generatorpolynoms und der Codewortlänge vollständig definiert
* ein zyklischer Code entsteht, wenn zu einem gegebenen Generatorpolynom eine Codewortlänge gewählt wird, die der Zykluslänge entspricht
* größere Zykluslängen führen zu einer höheren Coderate
* wenn die Zykluslänge eines Polynoms den maximalen Wert 2<sup>k</sup> - 1 annimmt, handelt es sich um ein **primitives Polynom** (es ist dann auch irreduzibel)
* (Bündel-)Fehlererkennung durch zyklische Blockcodes
von einem Bündelfehler der Länge t spricht man, wenn innerhalb eines Codeabschnitts der Länge t maximal t Fehler auftreten
zyklische Blockcodes erkennen mindestens Einzelfehler, Doppelfehler und Bündelfehler bis zur Länge k = m - n
spezielle zyklische Codes
Faltungscodes
Klausur
Wichtige Feststellungen und Definitionen
Entropie: mittlerer Informationsgehalt der Zeichen des Quellalphabets
bedingte Entropie: mittlere Entropie aller Zustände
* H(x|s) ≤ H(x)
* Verbundentropie: mittlerer Informationsgehalt von Ausgangsfolgen einer Quelle
Wahrscheinlichkeiten
A-posteriori p(x|y)
A-priori p(x)
Äquivokation/Rückschlussentropie/Verlust H(x|y)
Irrelevanz/Streuentropie/Rauschen H(y|x)
Transinformation: mittlere im Ausgangszeichen eines Kanals enthaltene Information
Kanalkapazität: Maximum der Transinformation
Zusammenfassen von Eingangssymbolen zu Eingangsfolgen erhöht die Codeeffizienz (1. Fundamentalsatz der Quellencodierung)
arithmetische Codierung geht nur für stationäre gedächtnislose Quellen
Ausnutzen von bedingten Wahrscheinlichkeiten bei Markov-Quellen erhöht die Effizienz
Codeumschaltung: bei zustandsabhängiger Codierung wird je nach Zustand eine andere Codetabelle verwendet
Lauflängencodierung ist nur sinnvoll, wenn genügend Zeichenfolgen auftreten, die in der Darstellung (Code, Lauflänge) kürzer sind als normal
Verfahren mit adaptiven Wörterbüchern eignen sich auch für nicht-stationäre Quellen
* Blockcodes teilen die Nachrichten in gleichgroße Blöcke auf
um bei einem Gausskanal mittels Hard-Decision die gleiche Wortfehlerwahrscheinlichkeit erreichen wie mit Soft-Decision braucht man die doppelte Sendeleistung
lineare Blockcodes: n < m, 2n Codeworte
Wortfehler/Restfehler: aus dem Empfangswort wird auf das falsche Codewort geschlossen oder beim Korrigieren eines Fehlers wird das falsche Codewort erzeugt
* für kleine Bitfehlerwahrscheinlichkeiten resultiert ein Wortfehler meist aus der Verfälschung zu einem Codewort mit der zum korrekten Codewort minimalen Hammingdistanz
* Modifikationen (Expandieren, Punktieren, Verlängern, Verkürzen) führen systematische Codes wieder in systematische Codes über
CRC-Codes sind fehlererkennende zyklische Blockcodes
mit größeren Zykluslängen sind höhere Coderaten möglich
primitives Polynom: die Zykluslänge entspricht dem maximalem Wert 2k - 1 und ist irreduzibel
jeder lineare Blockcode (auch zyklische Codes) enthält das Nullwort
Berechnungen
Redundanz: ρ = H0 - H(x)
Coderedundanz/Weitschweifigkeit pCode = L - H(x) (mit L = mittlere Wortlänge in Bit)
relative Coderedundanz: pCode<sub>rel</sub> = pCode / L
Codeeffizienz η = H(x) / L
Coderate R = m / n
Entropie einer Markov-Quelle ohne Berücksichtigung der statistischen Bindung
bedingte Entropie bei gegebener Markov-Quelle
p(xi|s) sind gegeben durch Zustandsdiagramm
p(s) für alle Zustände ermitteln (lineares Gleichungssystem)
H(x|s) für jeden Zustand ermitteln und mit p(s) multiplizieren und aufaddieren
Verbundentropie
zyklische Blockcodes
Generieren
vollständig definiert durch Generatorpolynom und Codewortlänge (n = Rang des Generatorpolynoms)
g(x) und n gegeben (oder aus m ermittelt) → alle Permutationen von Wörtern der Länge n mit g(x) multiplizieren
systematische Codes: Permutationen der Länge n erzeugen, d(x) = u(x) * xk mod g(x) addieren
Generatormatrix erzeugen
Fire-Codes: Erzeugen durch Produkt zweier irreduzibler Polynome
* minimale Hammingdistanz durch Prüfmatrix ermitteln: jede Auswahl von dmin - 1 Spalten ist linear unabhängig und es gibt mindestens eine Auswahl von dmin linear abhängigen Spalten
Eigenschaften
Code
optimal/kompakt: größtmögliche Effizienz bei gegebener Quelle → kleinste mittlere Wortlänge
ideal: eindeutig decodierbarer Effizienz η = 1
eindeutig decodierbar: Erfüllen der Kraft-McMillan-Ungleichung
perfekt/dicht gepackt: alle Worte eines Coderaums liegen in Korrigierkugeln mit Radius e
kor, Hamming-Schranke wird mit Gleichheit erfüllt
* äquivalent: Codes mit gleichen Parametern m, n, d<sub>min</sub> und w
* Code und Leistungsfähigkeit können abweichen, aber Distanzeigenschaften bleiben gleich
* Erzeugen durch Vertauschen von Spalten in der Generatormatrix
* systematisch: alle Eingangsbits stehen in allen Codeworten an der gleichen Stelle
* klar-systematisch: die Eingangsbits stehen der Reihe nach am Anfang der Codeworte
* Hamming-Codes: Coderate geht mit wachsender Blocklänge gegen 1
* Erzeugung: alle Permutationen von m - n Schutzbits als Spalten einer Prüfmatrix eintragen
* Hamming-Schranke mit Gleichheit erfüllt
* sind perfekt
* äquidistant: Codeworte haben paarweise jeweils gleiche Abstände d<sub>min</sub>, Plotkin-Schranke mit Gleichheit erfüllt
* identisch: Codes bestehen aus denselben Codeworten (nicht unbedingt in derselben Zuordnung zu Eingangsworten)
* zyklisch: Codeworte gehen durch Verschiebung ineinander über
* Quelle
stationär: Wahrscheinlichkeiten der Ausgabezeichen sind unabhängig von der Zeit
gedächtnislos: Wahrscheinlichkeiten der Ausgabezeichen sind unabhängig von Zeichen davor/danach
Kanal
diskret: zeit- und wertdiskret
* symmetrisch: Anzahl Eingänge = Anzahl Ausgänge, Fehlerwahrscheinlichkeit p
* verlustfrei/ungestört: nur ein von 0 verschiedener Eintrag je Spalte in der Kanalmatrix, aus Ausgangszeichen kann sicher auf das Eingangszeichen geschlossen werden
* rauschfrei: Kanalmatrix ist quadratische Einheitmatrix, in jeder Zeile nur ein von 0 verschiedener Eintrag, 1 Eingangszeichen -> 1 Ausgangszeichen
* total gestört: Ein- und Ausgangszeichen sind statistisch unabhängig, Transinformation = 0
* zyklische Blockcodes
Codewortlänge muss gleich der Zykluslänge sein
* Zykluslänge z = kleinstes i, für das gilt: x<sup>i</sup> + 1 mod g(x) = 0
* Fehlererkennung: Einzel-, Doppel- und Bündelfehler bis zum Grad von g(x) sicher, darüber hinaus mit hoher Wahrscheinlichkeit
* Fehlerkorrektur
* primitives g(x): d<sub>min</sub> = 3 -> e<sub>kor</sub> = 1
* g(x) = g<sub>prim</sub>(x) * (x + 1): d<sub>min</sub> = 4 -> e<sub>kor</sub> = 1
* g(x) = g<sub>1</sub>(x) * (x<sup>k<sub>2</sub></sup> + 1) (Fire-Codes): d<sub>min</sub> = 4, sie können aber Bündelfehler korrigieren: t<sub>max</sub> ≤ k<sub>1</sub>, t<sub>max</sub> < k<sub>2</sub> / 2 + 1
ToDo
Shannon-Grenze
Wann welche Codierung? arithmetisch bei gedächtnisbehaftet?
Gleichförmige Quantisierung
Beispiele machen
* Huffman Code
* Arithmetische Codierung
* Lempel Ziv
* Kanalkapazität berechnen
Kraft-McMillan
Gewichtsverteilung berechnen
Syndrome berechnen
Decodierung der verschiedenen Codes
Polynomdivision
Zykluslänge bestimmen
se/informationstheorie.txt · Zuletzt geändert: 2014-04-05 11:42 (Externe Bearbeitung)