From 46fa4763d730b1312741eefb8a2981c73389ccae Mon Sep 17 00:00:00 2001 From: michael-OST <75078383+michael-OST@users.noreply.github.com> Date: Mon, 17 May 2021 19:32:32 +0200 Subject: update of codebsp started, restetabelle 1&2 created --- buch/papers/reedsolomon/codebsp.tex | 71 +++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 buch/papers/reedsolomon/codebsp.tex (limited to 'buch/papers/reedsolomon/codebsp.tex') diff --git a/buch/papers/reedsolomon/codebsp.tex b/buch/papers/reedsolomon/codebsp.tex new file mode 100644 index 0000000..e9359f9 --- /dev/null +++ b/buch/papers/reedsolomon/codebsp.tex @@ -0,0 +1,71 @@ +% +% teil3.tex -- Beispiel-File für Teil 3 +% +% (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil +% +\section{Codierung eines Beispiels +\label{reedsolomon:section:codebsp}} +\rhead{Koerper Festlegen} + +Um die Funktionsweise eines Reed-Solomon-Codes besser zu verstehen werden wir die einzelnen Probleme und ihre Lösungen anhand eines Beispiels betrachten. +Da wir in Endlichen Körpern Rechnen werden wir zuerst solch ein Körper festlegen. Dabei müssen wir die \textcolor{red}{Definition 4.6} berücksichtigen, die besagt, dass nur Primzahlen für endliche Körper in Frage kommen. +Wir legen für unser Beispiel den endlichen Körper $q = 11$ fest. +Alle folgenden Berechnungen wurden mit den beiden Restetabellen \textcolor{red}{xx} und \textcolor{red}{yy} durchgeführt. + +% die beiden Restetabellen von F_11 +%\input{papers/reedsolomon/restetabelle1} +%\input{papers/reedsolomon/restetabelle2} + + + + + +\textbf{DUMP} + +Da Körper laut der \textcolor{red}{Definition 4.6} eine Primzahl sein muss, + + +Dieser Körper sollte jedoch über eine nullteilerfreie Restetabelle verfügen. Somit kommen nur Primzahlen als Körper in frage. + + + Für das Beispiel wählen wir die Zahl $11$. + + uns zu aller erst auf ein sochen Körper festlegen. + +Um die Funktionsweise eines Reed-Solomon-Codes besser zu verstehen werden wir dies anhand eines Beispiels betrachten. + +Um die Nachfolgende Rechenwege besser zu verstehen, werden wir die einzelnen Rechenschritte anhand eines Beispiels betrachten. + + + + +Als erstes muss festgelegt werden, in welchem endlichen Körper gerechnet werden soll. +Da die Restetabelle eines Körpers nullteilerfrei sein soll, kommen so nur Primzahlen in Frage. +Für das Beispiel verwenden wir den Körper $\mathbb{F}_{11}$. So wählen wir + + +$q = 11$ + + +und beinhaltet die Zahlen + + +$Z_{11} = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]$ + +\subsection{De finibus bonorum et malorum +\label{reedsolomon:subsection:malorum}} +At vero eos et accusamus et iusto odio dignissimos ducimus qui +blanditiis praesentium voluptatum deleniti atque corrupti quos +dolores et quas molestias excepturi sint occaecati cupiditate non +provident, similique sunt in culpa qui officia deserunt mollitia +animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis +est et expedita distinctio. Nam libero tempore, cum soluta nobis +est eligendi optio cumque nihil impedit quo minus id quod maxime +placeat facere possimus, omnis voluptas assumenda est, omnis dolor +repellendus. Temporibus autem quibusdam et aut officiis debitis aut +rerum necessitatibus saepe eveniet ut et voluptates repudiandae +sint et molestiae non recusandae. Itaque earum rerum hic tenetur a +sapiente delectus, ut aut reiciendis voluptatibus maiores alias +consequatur aut perferendis doloribus asperiores repellat. + + -- cgit v1.2.1 From 55fc006b2133da4f79eb6eb5179d584c130824a2 Mon Sep 17 00:00:00 2001 From: michael-OST <75078383+michael-OST@users.noreply.github.com> Date: Tue, 18 May 2021 18:29:59 +0200 Subject: updated codebsp.tex, created decohnefehler.tex (with blindtext) --- buch/papers/reedsolomon/codebsp.tex | 174 +++++++++++++++++++++++++----------- 1 file changed, 121 insertions(+), 53 deletions(-) (limited to 'buch/papers/reedsolomon/codebsp.tex') diff --git a/buch/papers/reedsolomon/codebsp.tex b/buch/papers/reedsolomon/codebsp.tex index e9359f9..5b67c43 100644 --- a/buch/papers/reedsolomon/codebsp.tex +++ b/buch/papers/reedsolomon/codebsp.tex @@ -11,61 +11,129 @@ Um die Funktionsweise eines Reed-Solomon-Codes besser zu verstehen werden wir di Da wir in Endlichen Körpern Rechnen werden wir zuerst solch ein Körper festlegen. Dabei müssen wir die \textcolor{red}{Definition 4.6} berücksichtigen, die besagt, dass nur Primzahlen für endliche Körper in Frage kommen. Wir legen für unser Beispiel den endlichen Körper $q = 11$ fest. Alle folgenden Berechnungen wurden mit den beiden Restetabellen \textcolor{red}{xx} und \textcolor{red}{yy} durchgeführt. +Aus den Tabellen folgt auch, dass uns nur die Zahlen \[\mathbb{F}_{11} = \{0,1,2,3,4,5,6,7,8,9,10\}\] zur Verfügung stehen. % die beiden Restetabellen von F_11 %\input{papers/reedsolomon/restetabelle1} %\input{papers/reedsolomon/restetabelle2} - - - - -\textbf{DUMP} - -Da Körper laut der \textcolor{red}{Definition 4.6} eine Primzahl sein muss, - - -Dieser Körper sollte jedoch über eine nullteilerfreie Restetabelle verfügen. Somit kommen nur Primzahlen als Körper in frage. - - - Für das Beispiel wählen wir die Zahl $11$. - - uns zu aller erst auf ein sochen Körper festlegen. - -Um die Funktionsweise eines Reed-Solomon-Codes besser zu verstehen werden wir dies anhand eines Beispiels betrachten. - -Um die Nachfolgende Rechenwege besser zu verstehen, werden wir die einzelnen Rechenschritte anhand eines Beispiels betrachten. - - - - -Als erstes muss festgelegt werden, in welchem endlichen Körper gerechnet werden soll. -Da die Restetabelle eines Körpers nullteilerfrei sein soll, kommen so nur Primzahlen in Frage. -Für das Beispiel verwenden wir den Körper $\mathbb{F}_{11}$. So wählen wir - - -$q = 11$ - - -und beinhaltet die Zahlen - - -$Z_{11} = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]$ - -\subsection{De finibus bonorum et malorum -\label{reedsolomon:subsection:malorum}} -At vero eos et accusamus et iusto odio dignissimos ducimus qui -blanditiis praesentium voluptatum deleniti atque corrupti quos -dolores et quas molestias excepturi sint occaecati cupiditate non -provident, similique sunt in culpa qui officia deserunt mollitia -animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis -est et expedita distinctio. Nam libero tempore, cum soluta nobis -est eligendi optio cumque nihil impedit quo minus id quod maxime -placeat facere possimus, omnis voluptas assumenda est, omnis dolor -repellendus. Temporibus autem quibusdam et aut officiis debitis aut -rerum necessitatibus saepe eveniet ut et voluptates repudiandae -sint et molestiae non recusandae. Itaque earum rerum hic tenetur a -sapiente delectus, ut aut reiciendis voluptatibus maiores alias -consequatur aut perferendis doloribus asperiores repellat. - - +Die grösse des endlichen Körpers legt auch fest, wie gross unsere Nachricht $n$ bestehend aus Nutzdatenteil und Fehlerkorrekturteil sein kann und beträgt in unserem Beispiel +\[ +n = q - 1 = 10 \text{ Zahlen}. +\] + +Im nächsten Schritt bestimmen wir, wie viele Fehler $t$ maximal während der Übertragung auftreten dürfen, damit wir sie noch korrigieren können. +Unser Beispielcode sollte in der Lage sein +\[ +t = 2 +\] +Fehlerstellen korrigieren zu können. + +Die Grösse des Nutzdatenteils hängt von der Grösse der Nachricht sowie der Anzahl der Fehlerkorrekturstellen. Je robuster der Code sein muss, desto weniger Platz für Nutzdaten $k$ bleibt in der Nachricht übrig. +Bei maximal 2 Fehler können wir noch +\[ +k = n - 2t = 6\text{ Zahlen} +\] +übertragen. + +Zusammenfassend haben wir einen Codeblock mit der Länge von 10 Zahlen definiert, der 6 Zahlen als Nutzlast beinhaltet und in der Lage ist aus 2 fehlerhafte Stellen im Block die ursprünglichen Nutzdaten rekonstruieren kann. Zudem werden wir im weiteren feststellen, dass dieser Code maximal 4 Fehlerstellen erkennen, diese aber nicht rekonstruieren kann. + +Wir legen nun die Nachricht +\[ +m = [0,0,0,0,4,7,2,5,8,1] +\] +fest, die wir gerne an einen Empfänger übertragen möchten, wobei die vorderen vier Nullstellen für die Fehlerkorrektur zuständig sind. +Die Nachricht können wir auch als Polynom +\[ +m(X) = 4X^5 + 7X^4 + 2X^3 + 5X^2 + 8X + 1 +\] +darstellen. + +\subsection{Der Ansatz der diskreten Fouriertransformation + \label{reedsolomon:subsection:diskFT}} + +In einem vorherigen Kapitel (???) haben wir schon einmal die diskrete Fouriertransformation zum Codieren einer Nachricht verwendet. In den endlichen Körpern wird dies jedoch nicht gelingen, da die Eulerische Zahl $\mathrm{e}$ in $\mathbb{F}_{11}$ nicht existiert. +Wir suchen also eine Zahl $a^i$, die in endlichen Körpern existiert und den gesamten Zahlenbereich von $\mathbb{F}_{11}$ abdecken kann. +Dazu schreiben wir +\[ +\mathbb{F}_{11} = \{0,1,2,3,4,5,6,7,8,9,10\} +\] +um in +\[ +\mathbb{Z}_{11}\setminus\{0\} = \{a^0, a^1, a^2, a^3, a^4, a^5, a^6, a^7, a^8, a^9\}. +\] + +Wenn wir alle möglichen Werte für $a$ einsetzen, also + +%\begin{align} +%a = 0 : \qquad \mathbb{Z}_{11}\setminus\{0\} = \{0, 0, 0, 0, 0, 0, 0, 0, 0, 0\} \\ +%a = 1 : \qquad \mathbb{Z}_{11}\setminus\{0\} = \{1, 1, 1, 1, 1, 1, 1, 1, 1, 1\} \\ +%a = 2 : \qquad \mathbb{Z}_{11}\setminus\{0\} = \{1, 2, 4, 8, 5, 10, 9, 7, 3, 6\} \\ +%a = 3 : \qquad \mathbb{Z}_{11}\setminus\{0\} = \{1, 3, 9, 5, 4, 1, 3, 9, 5, 4\} \\ +%a = 4 : \qquad \mathbb{Z}_{11}\setminus\{0\} = \{1, 4, 5, 9, 3, 1, 4, 5, 9, 3\} \\ +%a = 5 : \qquad \mathbb{Z}_{11}\setminus\{0\} = \{1, 5, 3, 4, 9, 1, 5, 3, 4, 9\} \\ +%a = 6 : \qquad \mathbb{Z}_{11}\setminus\{0\} = \{1, 6, 3, 7, 9, 10, 5, 8, 4, 2\} \\ +%a = 7 : \qquad \mathbb{Z}_{11}\setminus\{0\} = \{1, 7, 5, 2, 3, 10, 4, 6, 9, 8\} \\ +%a = 8 : \qquad \mathbb{Z}_{11}\setminus\{0\} = \{1, 8, 9, 6, 4, 10, 3, 2, 5, 7\} \\ +%a = 9 : \qquad \mathbb{Z}_{11}\setminus\{0\} = \{1, 9, 4, 3, 5, 1, 9, 4, 3, 5\} \\ +%a = 10 : \qquad \mathbb{Z}_{11}\setminus\{0\} = \{1, 10, 1, 10, 1, 10, 1, 10, 1, 10\} +%\end{align} + +\begin{center} +\begin{tabular}{c r c l} +%$a = 0 :$& $\qquad \mathbb{Z}_{11}\setminus\{0\}$ &$=$& $\{0, 0, 0, 0, 0, 0, 0, 0, 0, 0\}$ \\ +$a = 1 :$& $\qquad \mathbb{Z}_{11}\setminus\{0\}$ &$=$& $\{1, 1, 1, 1, 1, 1, 1, 1, 1, 1\}$ \\ +$a = 2 :$& $\qquad \mathbb{Z}_{11}\setminus\{0\}$ &$=$& $\{1, 2, 4, 8, 5, 10, 9, 7, 3, 6\}$ \\ +$a = 3 :$& $\qquad \mathbb{Z}_{11}\setminus\{0\}$ &$=$& $\{1, 3, 9, 5, 4, 1, 3, 9, 5, 4\}$ \\ +$a = 4 :$& $\qquad \mathbb{Z}_{11}\setminus\{0\}$ &$=$& $\{1, 4, 5, 9, 3, 1, 4, 5, 9, 3\}$ \\ +$a = 5 :$& $\qquad \mathbb{Z}_{11}\setminus\{0\}$ &$=$& $\{1, 5, 3, 4, 9, 1, 5, 3, 4, 9\}$ \\ +$a = 6 :$& $\qquad \mathbb{Z}_{11}\setminus\{0\}$ &$=$& $\{1, 6, 3, 7, 9, 10, 5, 8, 4, 2\}$ \\ +$a = 7 :$& $\qquad \mathbb{Z}_{11}\setminus\{0\}$ &$=$& $\{1, 7, 5, 2, 3, 10, 4, 6, 9, 8\}$ \\ +$a = 8 :$& $\qquad \mathbb{Z}_{11}\setminus\{0\}$ &$=$& $\{1, 8, 9, 6, 4, 10, 3, 2, 5, 7\}$ \\ +$a = 9 :$& $\qquad \mathbb{Z}_{11}\setminus\{0\}$ &$=$& $\{1, 9, 4, 3, 5, 1, 9, 4, 3, 5\}$ \\ +$a = 10 :$& $\qquad \mathbb{Z}_{11}\setminus\{0\}$ &$=$& $\{1, 10, 1, 10, 1, 10, 1, 10, 1, 10\}$ +\end{tabular} +\end{center} + +so fällt uns auf, dass die Zahlen $2,6,7,8$ tatsächlich den gesamten Zahlenraum von $\mathbb{F}_{11}$ abbilden. Solche Zahlen werden \em Primitive Einheitswurzel \em genannt. +Für das Beispiel wählen wir die Zahl $a^i = 8$. +Damit wir unsere Nachricht codieren können, müssen wir $8^i$ in $m(X)$ einsetzen. + +\begin{center} + \begin{tabular}{c} + $m(8^0) = 4 \cdot 1 + 7 \cdot 1 + 2 \cdot 1 + 5 \cdot 1 + 8 \cdot 1 + 1 = 5$ \\ + $m(8^1) = 4 \cdot 8 + 7 \cdot 8 + 2 \cdot 8 + 5 \cdot 8 + 8 \cdot 8 + 1 = 3$ \\ + \vdots + \end{tabular} +\end{center} + +Für eine elegantere Formulierung stellen wir das ganze als Matrix dar, wobei $m$ unser Nachrichtenvektor, $A$ die Transformationsmatrix und $v$ unser Übertragungsvektor ist. + +\[ +v = A \cdot m \qquad \Rightarrow \qquad v = \begin{pmatrix} + 8^0& 8^0& 8^0& 8^0& 8^0& 8^0& 8^0& 8^0& 8^0& 8^0\\ + 8^0& 8^1& 8^2& 8^3& 8^4& 8^5& 8^6& 8^7& 8^8& 8^9\\ + 8^0& 8^2& 8^4& 8^6& 8^8& 8^{10}& 8^{12}& 8^{14}& 8^{16}& 8^{18}\\ + 8^0& 8^3& 8^6& 8^9& 8^{12}& 8^{15}& 8^{18}& 8^{21}& 8^{24}& 8^{27}\\ + 8^0& 8^4& 8^8& 8^{12}& 8^{16}& 8^{20}& 8^{24}& 8^{28}& 8^{32}& 8^{36}\\ + 8^0& 8^5& 8^{10}& 8^{15}& 8^{20}& 8^{25}& 8^{30}& 8^{35}& 8^{40}& 8^{45}\\ + 8^0& 8^6& 8^{12}& 8^{18}& 8^{24}& 8^{30}& 8^{36}& 8^{42}& 8^{48}& 8^{54}\\ + 8^0& 8^7& 8^{14}& 8^{21}& 8^{28}& 8^{35}& 8^{42}& 8^{49}& 8^{56}& 8^{63}\\ + 8^0& 8^8& 8^{16}& 8^{24}& 8^{32}& 8^{40}& 8^{48}& 8^{56}& 8^{64}& 8^{72}\\ + 8^0& 8^9& 8^{18}& 8^{27}& 8^{36}& 8^{45}& 8^{54}& 8^{63}& 8^{72}& 8^{81}\\ +\end{pmatrix} +\cdot +\begin{pmatrix} + 1 \\ 8 \\ 5 \\ 2 \\ 7 \\ 4 \\ 0 \\ 0 \\ 0 \\ 0 \\ +\end{pmatrix} +\] + +Somit bekommen wir für unseren Übertragungsvektor +\[ +v = [5,3,6,5,2,10,2,7,10,4], +\] +den wir jetzt über einen beliebigen Nachrichtenkanal versenden können. + +\textbf{NOTES} + +warum wird 0 weggelassen? -- cgit v1.2.1 From 72c6e0954eb2acd262a7db6701ed1d04bb8943c5 Mon Sep 17 00:00:00 2001 From: michael-OST <75078383+michael-OST@users.noreply.github.com> Date: Tue, 8 Jun 2021 15:34:22 +0200 Subject: created Hilfstabellen.tex, reworked codebsp.tex --- buch/papers/reedsolomon/codebsp.tex | 94 ++++++++++++++++++++++++++----------- 1 file changed, 66 insertions(+), 28 deletions(-) (limited to 'buch/papers/reedsolomon/codebsp.tex') diff --git a/buch/papers/reedsolomon/codebsp.tex b/buch/papers/reedsolomon/codebsp.tex index 5b67c43..818078e 100644 --- a/buch/papers/reedsolomon/codebsp.tex +++ b/buch/papers/reedsolomon/codebsp.tex @@ -8,19 +8,35 @@ \rhead{Koerper Festlegen} Um die Funktionsweise eines Reed-Solomon-Codes besser zu verstehen werden wir die einzelnen Probleme und ihre Lösungen anhand eines Beispiels betrachten. -Da wir in Endlichen Körpern Rechnen werden wir zuerst solch ein Körper festlegen. Dabei müssen wir die \textcolor{red}{Definition 4.6} berücksichtigen, die besagt, dass nur Primzahlen für endliche Körper in Frage kommen. -Wir legen für unser Beispiel den endlichen Körper $q = 11$ fest. -Alle folgenden Berechnungen wurden mit den beiden Restetabellen \textcolor{red}{xx} und \textcolor{red}{yy} durchgeführt. -Aus den Tabellen folgt auch, dass uns nur die Zahlen \[\mathbb{F}_{11} = \{0,1,2,3,4,5,6,7,8,9,10\}\] zur Verfügung stehen. +Da wir in Endlichen Körpern Rechnen werden wir zuerst solch einen Körper festlegen. Dabei müssen wir die \textcolor{red}{Definition 4.6 (wie verweist man auf eine definition?)} berücksichtigen, die besagt, dass nur Primzahlen für endliche Körper in Frage kommen. +Wir legen für unser Beispiel den endlichen Körper mit $q = 11$ fest. +Zur Hilfestellung können dazu die beiden Tabellen \ref{reedsolomon:subsection:adtab} und +\ref{reedsolomon:subsection:mptab} hinzugezogen werden. Diese Tabellen enthalten sämtliche Resultate aller gültigen Operationen \textcolor{red}{(Notiz: nach meinem Wissen gibt es ja nur addition und multiplikation als gültige operationen)}, die in diesem Körper durchgeführt werden können. +Aus der Definition der Endlichen Körper (ersichtlich auch in den Tabellen) folgt, dass uns nur die Zahlen \[\mathbb{F}_{11} = \{0,1,2,3,4,5,6,7,8,9,10\}\] zur verfügung stehen und somit $11 = 0$ gelten muss. + +% OLD TEXT +%Alle folgenden Berechnungen wurden mit den beiden Restetabellen \ref{reedsolomon:subsection:adtab} und \ref{reedsolomon:subsection:mptab} durchgeführt. +%Aus den Tabellen folgt auch, dass uns nur die Zahlen \[\mathbb{F}_{11} = \{0,1,2,3,4,5,6,7,8,9,10\}\] zur Verfügung stehen. % die beiden Restetabellen von F_11 %\input{papers/reedsolomon/restetabelle1} %\input{papers/reedsolomon/restetabelle2} -Die grösse des endlichen Körpers legt auch fest, wie gross unsere Nachricht $n$ bestehend aus Nutzdatenteil und Fehlerkorrekturteil sein kann und beträgt in unserem Beispiel +Anhand der Menge uns zur Verfügung stehenden Zahlen wird auch festgelegt, wie viele Zahlen ein Nachrichtenblock $n$, bestehend aus Nutzdatenteil und Fehlerkorrekturteil, umfassen kann. +Der Nachrichtenblock im Beispiel besteht aus \[ -n = q - 1 = 10 \text{ Zahlen}. +n = q - 1 = 10 \text{ Zahlen}, \] +wobei die null weggelassen wird. Wenn wir versuchen würden, mit der null zu codieren, so stellen wir fest, dass wir wieder null an der gleichen Stelle erhalten und somit wäre die Codierung nicht eindeutig. + +% Notes +%Da bei allen Codes, die codiert werden wird an der gleichen Stelle eine Nullstelle auftreten. + +% Old Text +%Die grösse des endlichen Körpers legt auch fest, wie gross unsere Nachricht $n$ bestehend aus Nutzdatenteil und Fehlerkorrekturteil sein kann und beträgt in unserem Beispiel +%\[ +%n = q - 1 = 10 \text{ Zahlen}. +%\] Im nächsten Schritt bestimmen wir, wie viele Fehler $t$ maximal während der Übertragung auftreten dürfen, damit wir sie noch korrigieren können. Unser Beispielcode sollte in der Lage sein @@ -29,41 +45,63 @@ t = 2 \] Fehlerstellen korrigieren zu können. -Die Grösse des Nutzdatenteils hängt von der Grösse der Nachricht sowie der Anzahl der Fehlerkorrekturstellen. Je robuster der Code sein muss, desto weniger Platz für Nutzdaten $k$ bleibt in der Nachricht übrig. +Die Grösse des Nutzdatenteils hängt von der Grösse des Nachrichtenblocks sowie der Anzahl der Fehlerkorrekturstellen ab. Je robuster der Code sein muss, desto weniger Platz für Nutzdaten $k$ bleibt in der Nachricht übrig. Bei maximal 2 Fehler können wir noch \[ k = n - 2t = 6\text{ Zahlen} \] übertragen. -Zusammenfassend haben wir einen Codeblock mit der Länge von 10 Zahlen definiert, der 6 Zahlen als Nutzlast beinhaltet und in der Lage ist aus 2 fehlerhafte Stellen im Block die ursprünglichen Nutzdaten rekonstruieren kann. Zudem werden wir im weiteren feststellen, dass dieser Code maximal 4 Fehlerstellen erkennen, diese aber nicht rekonstruieren kann. +Zusammenfassend haben wir einen Nachrichtenblock mit der Länge von 10 Zahlen definiert, der 6 Zahlen als Nutzlast beinhaltet und in der Lage ist aus 2 fehlerhafte Stellen im Block die ursprünglichen Nutzdaten zu rekonstruieren. Zudem werden wir im weiteren feststellen, dass dieser Code maximal vier Fehlerstellen erkennen, diese aber nicht rekonstruieren kann. Wir legen nun die Nachricht \[ m = [0,0,0,0,4,7,2,5,8,1] \] -fest, die wir gerne an einen Empfänger übertragen möchten, wobei die vorderen vier Nullstellen für die Fehlerkorrektur zuständig sind. -Die Nachricht können wir auch als Polynom +fest, die wir gerne an einen Empfänger übertragen möchten, wobei die vorderen vier Stellen für die Fehlerkorrektur zuständig sind. +Solange diese Stellen vor dem Codieren und nach dem Decodieren den Wert null haben, so ist die Nachricht Fehlerfrei übertragen worden. + +Da wir in den folgenden Abschnitten mit Polynomen arbeiten, stellen wir die Nachicht auch noch als Polynom \[ m(X) = 4X^5 + 7X^4 + 2X^3 + 5X^2 + 8X + 1 \] -darstellen. +dar. + +% Old Text +%Die Nachricht können wir auch als Polynom +%\[ +%m(X) = 4X^5 + 7X^4 + 2X^3 + 5X^2 + 8X + 1 +%\] +%darstellen. \subsection{Der Ansatz der diskreten Fouriertransformation \label{reedsolomon:subsection:diskFT}} -In einem vorherigen Kapitel (???) haben wir schon einmal die diskrete Fouriertransformation zum Codieren einer Nachricht verwendet. In den endlichen Körpern wird dies jedoch nicht gelingen, da die Eulerische Zahl $\mathrm{e}$ in $\mathbb{F}_{11}$ nicht existiert. -Wir suchen also eine Zahl $a^i$, die in endlichen Körpern existiert und den gesamten Zahlenbereich von $\mathbb{F}_{11}$ abdecken kann. -Dazu schreiben wir +In einem vorherigen Kapitel \textcolor{red}{(???)} haben wir schon einmal die diskrete Fouriertransformation zum Codieren einer Nachricht verwendet. In den endlichen Körpern wird dies jedoch nicht gelingen, da die Eulerische Zahl $e$ in endlichen Körpern nicht existiert. +Wir legen deshalb die Zahl $a$ fest. Diese Zahl soll die gleichen aufgaben haben, wie $e^{\frac{j}{2 \pi}}$ in der Diskreten Fouriertransformation, nur mit dem Unterschied, dass $a$ in $\mathbb{F}_{11}$ existiert. Dazu soll $a$ den gesamten Zahlenbereich von $\mathbb{F}_{11}$ abdecken, um \[ \mathbb{F}_{11} = \{0,1,2,3,4,5,6,7,8,9,10\} \] -um in +in \[ \mathbb{Z}_{11}\setminus\{0\} = \{a^0, a^1, a^2, a^3, a^4, a^5, a^6, a^7, a^8, a^9\}. \] - -Wenn wir alle möglichen Werte für $a$ einsetzen, also +umzuschreiben. + +Wenn wir jetzt sämtliche Zahlen von $\mathbb{F}_{11}$ in $a$ einsetzen + +% Old Text +%Wir suchen also eine Zahl $a$, die in endlichen Körpern existiert und den gesamten Zahlenbereich von $\mathbb{F}_{11}$ abdecken kann. +%Dazu schreiben wir +%\[ +%\mathbb{F}_{11} = \{0,1,2,3,4,5,6,7,8,9,10\} +%\] +%um in +%\[ +%\mathbb{Z}_{11}\setminus\{0\} = \{a^0, a^1, a^2, a^3, a^4, a^5, a^6, a^7, a^8, a^9\}. +%\] +% +%Wenn wir alle möglichen Werte für $a$ einsetzen, also %\begin{align} %a = 0 : \qquad \mathbb{Z}_{11}\setminus\{0\} = \{0, 0, 0, 0, 0, 0, 0, 0, 0, 0\} \\ @@ -94,21 +132,26 @@ $a = 9 :$& $\qquad \mathbb{Z}_{11}\setminus\{0\}$ &$=$& $\{1, 9, 4, 3, 5, 1, 9, $a = 10 :$& $\qquad \mathbb{Z}_{11}\setminus\{0\}$ &$=$& $\{1, 10, 1, 10, 1, 10, 1, 10, 1, 10\}$ \end{tabular} \end{center} +so fällt uns auf, dass für $a$ die Zahlen $2,6,7,8$ erhalten, die tatsächlich den gesamten Zahlenraum von $\mathbb{F}_{11}$ abbilden. Solche Zahlen werden \em Primitive Einheitswurzel \em genannt. +Wenden wir diese Vorgehensweise auch für andere Endliche Körper an, so werden wir sehen, dass wir immer mindestens zwei solcher Einheitswurzel finden werden. Somit ist es uns überlassen, eine dieser Einheitswurzeln auszuwählen, mit der wir weiter rechnen wollen. -so fällt uns auf, dass die Zahlen $2,6,7,8$ tatsächlich den gesamten Zahlenraum von $\mathbb{F}_{11}$ abbilden. Solche Zahlen werden \em Primitive Einheitswurzel \em genannt. Für das Beispiel wählen wir die Zahl $a^i = 8$. Damit wir unsere Nachricht codieren können, müssen wir $8^i$ in $m(X)$ einsetzen. \begin{center} \begin{tabular}{c} - $m(8^0) = 4 \cdot 1 + 7 \cdot 1 + 2 \cdot 1 + 5 \cdot 1 + 8 \cdot 1 + 1 = 5$ \\ - $m(8^1) = 4 \cdot 8 + 7 \cdot 8 + 2 \cdot 8 + 5 \cdot 8 + 8 \cdot 8 + 1 = 3$ \\ - \vdots + $m(8^0) = 4 \cdot 1^5 + 7 \cdot 1^4 + 2 \cdot 1^3 + 5 \cdot 1^2 + 8 \cdot 1^1 + 1 = 5$ \\ + $m(8^1) = 4 \cdot 8^5 + 7 \cdot 8^4 + 2 \cdot 8^3 + 5 \cdot 8^2 + 8 \cdot 8^1 + 1 = 3$ \\ + \vdots \\ + $m(8^9) = 4 \cdot 7^5 + 7 \cdot 7^4 + 2 \cdot 7^3 + 5 \cdot 7^2 + 8 \cdot 7^1 + 1 = 4$ \end{tabular} \end{center} -Für eine elegantere Formulierung stellen wir das ganze als Matrix dar, wobei $m$ unser Nachrichtenvektor, $A$ die Transformationsmatrix und $v$ unser Übertragungsvektor ist. - + +\subsection{Allgemeine Codierung + \label{reedsolomon:subsection:algCod}} + +Für eine elegantere Formulierung stellen wir das ganze als Matrix dar, wobei $m$ unsere Nachricht, $A$ die Transformationsmatrix und $v$ unser Übertragungsvektor ist. \[ v = A \cdot m \qquad \Rightarrow \qquad v = \begin{pmatrix} 8^0& 8^0& 8^0& 8^0& 8^0& 8^0& 8^0& 8^0& 8^0& 8^0\\ @@ -127,13 +170,8 @@ v = A \cdot m \qquad \Rightarrow \qquad v = \begin{pmatrix} 1 \\ 8 \\ 5 \\ 2 \\ 7 \\ 4 \\ 0 \\ 0 \\ 0 \\ 0 \\ \end{pmatrix} \] - Somit bekommen wir für unseren Übertragungsvektor \[ v = [5,3,6,5,2,10,2,7,10,4], \] den wir jetzt über einen beliebigen Nachrichtenkanal versenden können. - -\textbf{NOTES} - -warum wird 0 weggelassen? -- cgit v1.2.1 From d408309e04a27315a2ce8788872095334dbea183 Mon Sep 17 00:00:00 2001 From: michael-OST <75078383+michael-OST@users.noreply.github.com> Date: Tue, 8 Jun 2021 17:33:56 +0200 Subject: updated codebsp.tex and decohnefehler.tex --- buch/papers/reedsolomon/codebsp.tex | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'buch/papers/reedsolomon/codebsp.tex') diff --git a/buch/papers/reedsolomon/codebsp.tex b/buch/papers/reedsolomon/codebsp.tex index 818078e..262297e 100644 --- a/buch/papers/reedsolomon/codebsp.tex +++ b/buch/papers/reedsolomon/codebsp.tex @@ -87,9 +87,6 @@ in \mathbb{Z}_{11}\setminus\{0\} = \{a^0, a^1, a^2, a^3, a^4, a^5, a^6, a^7, a^8, a^9\}. \] umzuschreiben. - -Wenn wir jetzt sämtliche Zahlen von $\mathbb{F}_{11}$ in $a$ einsetzen - % Old Text %Wir suchen also eine Zahl $a$, die in endlichen Körpern existiert und den gesamten Zahlenbereich von $\mathbb{F}_{11}$ abdecken kann. %Dazu schreiben wir @@ -102,7 +99,6 @@ Wenn wir jetzt sämtliche Zahlen von $\mathbb{F}_{11}$ in $a$ einsetzen %\] % %Wenn wir alle möglichen Werte für $a$ einsetzen, also - %\begin{align} %a = 0 : \qquad \mathbb{Z}_{11}\setminus\{0\} = \{0, 0, 0, 0, 0, 0, 0, 0, 0, 0\} \\ %a = 1 : \qquad \mathbb{Z}_{11}\setminus\{0\} = \{1, 1, 1, 1, 1, 1, 1, 1, 1, 1\} \\ @@ -117,6 +113,10 @@ Wenn wir jetzt sämtliche Zahlen von $\mathbb{F}_{11}$ in $a$ einsetzen %a = 10 : \qquad \mathbb{Z}_{11}\setminus\{0\} = \{1, 10, 1, 10, 1, 10, 1, 10, 1, 10\} %\end{align} +\subsubsection{Die primitiven Einheitswurzeln + \label{reedsolomon:subsection:primsqrt}} + +Wenn wir jetzt sämtliche Zahlen von $\mathbb{F}_{11}$ in $a$ einsetzen \begin{center} \begin{tabular}{c r c l} %$a = 0 :$& $\qquad \mathbb{Z}_{11}\setminus\{0\}$ &$=$& $\{0, 0, 0, 0, 0, 0, 0, 0, 0, 0\}$ \\ @@ -133,11 +133,15 @@ $a = 10 :$& $\qquad \mathbb{Z}_{11}\setminus\{0\}$ &$=$& $\{1, 10, 1, 10, 1, 10, \end{tabular} \end{center} so fällt uns auf, dass für $a$ die Zahlen $2,6,7,8$ erhalten, die tatsächlich den gesamten Zahlenraum von $\mathbb{F}_{11}$ abbilden. Solche Zahlen werden \em Primitive Einheitswurzel \em genannt. -Wenden wir diese Vorgehensweise auch für andere Endliche Körper an, so werden wir sehen, dass wir immer mindestens zwei solcher Einheitswurzel finden werden. Somit ist es uns überlassen, eine dieser Einheitswurzeln auszuwählen, mit der wir weiter rechnen wollen. +Wenden wir diese Vorgehensweise auch für andere Endliche Körper an, so werden wir sehen, dass wir immer mindestens zwei solcher Einheitswurzel finden werden. Somit ist es uns überlassen, eine dieser Einheitswurzeln auszuwählen, mit der wir weiter rechnen wollen. Für das Beispiel wählen wir die Zahl $a^i = 8$. -Für das Beispiel wählen wir die Zahl $a^i = 8$. -Damit wir unsere Nachricht codieren können, müssen wir $8^i$ in $m(X)$ einsetzen. +\subsubsection{Bildung einer Transformationsmatrix + \label{reedsolomon:subsection:transMat}} +Mit der Wahl einer Einheitswurzel ist es uns jetzt möglich, unsere Nachricht zu Codieren. Daraus sollen wir dann einen Übertragungsvektor $v$ erhalten, den wir an den Empfänger schicken können. Für die Codierung müssen wir alle $a^i$ in das Polynom $m(X)$ einsetzen. Da wir $a^i = 8^i$ gewählt haben ergibt sich daraus +% +%Damit wir unsere Nachricht codieren können, müssen wir $8^i$ in $m(X)$ einsetzen. +% \begin{center} \begin{tabular}{c} $m(8^0) = 4 \cdot 1^5 + 7 \cdot 1^4 + 2 \cdot 1^3 + 5 \cdot 1^2 + 8 \cdot 1^1 + 1 = 5$ \\ @@ -146,12 +150,12 @@ Damit wir unsere Nachricht codieren können, müssen wir $8^i$ in $m(X)$ einsetz $m(8^9) = 4 \cdot 7^5 + 7 \cdot 7^4 + 2 \cdot 7^3 + 5 \cdot 7^2 + 8 \cdot 7^1 + 1 = 4$ \end{tabular} \end{center} - +unser Übertragungsvektor. Um das ganze noch ein wenig übersichtlicher zu gestalten können wir die Polynome zu einer Matrix zusammenfassen und bildet so unsere Transformationsmatrix $A$. \subsection{Allgemeine Codierung \label{reedsolomon:subsection:algCod}} -Für eine elegantere Formulierung stellen wir das ganze als Matrix dar, wobei $m$ unsere Nachricht, $A$ die Transformationsmatrix und $v$ unser Übertragungsvektor ist. +Für die Codierung benötigen wir die Nachricht $m$, die Codiert werden soll sowie die Transformationsmatrix $A$. Daraus erhalten wir den Übertragungsvektor $v$. Setzen wir die Zahlen aus dem Beispiel ein erhalten wir folgende Darstellung. \[ v = A \cdot m \qquad \Rightarrow \qquad v = \begin{pmatrix} 8^0& 8^0& 8^0& 8^0& 8^0& 8^0& 8^0& 8^0& 8^0& 8^0\\ @@ -170,7 +174,7 @@ v = A \cdot m \qquad \Rightarrow \qquad v = \begin{pmatrix} 1 \\ 8 \\ 5 \\ 2 \\ 7 \\ 4 \\ 0 \\ 0 \\ 0 \\ 0 \\ \end{pmatrix} \] -Somit bekommen wir für unseren Übertragungsvektor +Für unseren Übertragungsvektor resultiert \[ v = [5,3,6,5,2,10,2,7,10,4], \] -- cgit v1.2.1