diff options
Diffstat (limited to '')
20 files changed, 219 insertions, 133 deletions
diff --git a/buch/papers/reedsolomon/Makefile b/buch/papers/reedsolomon/Makefile index 9c96e88..25fd98b 100644 --- a/buch/papers/reedsolomon/Makefile +++ b/buch/papers/reedsolomon/Makefile @@ -4,6 +4,52 @@ # (c) 2020 Prof Dr Andreas Mueller # -images: - @echo "no images to be created in reedsolomon" +SOURCES := \ + anwendungen.tex \ + codebsp.tex \ + decmitfehler.tex \ + decohnefehler.tex \ + dtf.tex \ + einleitung.tex \ + endlichekoerper.tex \ + hilfstabellen.tex \ + idee.tex \ + main.tex \ + packages.tex \ + rekonstruktion.tex \ + restetabelle1.tex \ + restetabelle2.tex \ + standalone.tex \ + zusammenfassung.tex + +TIKZFIGURES := \ + tikz/polynom2.tex \ + tikz/plotfft.tex + +FIGURES := $(patsubst tikz/%.tex, figures/%.pdf, $(TIKZFIGURES)) + + +all: images standalone + + +.PHONY: images +images: $(FIGURES) + +figures/%.pdf: tikz/%.tex + mkdir -p figures + pdflatex --output-directory=figures $< + +.PHONY: standalone +standalone: standalone.tex $(SOURCES) $(FIGURES) + mkdir -p standalone + cd ../..; \ + pdflatex \ + --halt-on-error \ + --shell-escape \ + --output-directory=papers/reedsolomon/standalone \ + papers/reedsolomon/standalone.tex; + cd standalone; \ + bibtex standalone; \ + makeindex standalone; + diff --git a/buch/papers/reedsolomon/dtf.tex b/buch/papers/reedsolomon/dtf.tex index a111527..62e44cc 100644 --- a/buch/papers/reedsolomon/dtf.tex +++ b/buch/papers/reedsolomon/dtf.tex @@ -14,20 +14,27 @@ wobei sie dann bei späteren Berchnungen ganz nützlich ist. \subsection{Diskrete Fourientransformation Zusamenhang \label{reedsolomon:subsection:dtfzusamenhang}} Die Diskrete Fourientransformation ist definiert als - \[ - \label{ft_discrete} +\begin{equation} \hat{c}_{k} = \frac{1}{N} \sum_{n=0}^{N-1} {f}_n \cdot e^{-\frac{2\pi j}{N} \cdot kn} - \] + \label{reedsolomon:DFT} +\end{equation} + , wenn man nun - \[ - w = e^{-\frac{2\pi j}{N} k} - \] +\begin{equation} + w = + e^{-\frac{2\pi j}{N} k} + \label{reedsolomon:DFT_summand} +\end{equation} + ersetzte, und $N$ konstantbleibt, erhält man - \[ - \hat{c}_{k}=\frac{1}{N}( {f}_0 w^0 + {f}_1 w^1 + {f}_2 w^2 + \dots + {f}_{N-1} w^N) - \] +\begin{equation} + \hat{c}_{k}= + \frac{1}{N}( {f}_0 w^0 + {f}_1 w^1 + {f}_2 w^2 + \dots + {f}_{N-1} w^N) + \label{reedsolomon:DFT_polynom} +\end{equation} + was überaust ähnlich zu unserem Polynomidee ist. \subsection{Übertragungsabfolge \label{reedsolomon:subsection:Übertragungsabfolge}} @@ -47,8 +54,8 @@ Das heisst alle information ist in alle Zahlenvorhanden. \begin{figure} \centering \resizebox{0.9\textwidth}{!}{ - %\includegraphics[width=0.5\textwidth]{papers/reedsolomon/images/plot.pdf} - \input{papers/reedsolomon/images/plotfft.tex} + \includegraphics[width=\textwidth]{papers/reedsolomon/figures/plotfft} + %\input{papers/reedsolomon/images/plotfft.tex} } \caption{Übertragungsabfolge \ref{reedsolomon:subsection:Übertragungsabfolge}} \label{fig:sendorder} diff --git a/buch/papers/reedsolomon/einleitung.tex b/buch/papers/reedsolomon/einleitung.tex index 2b1d878..074df05 100644 --- a/buch/papers/reedsolomon/einleitung.tex +++ b/buch/papers/reedsolomon/einleitung.tex @@ -7,13 +7,11 @@ \label{reedsolomon:section:einleitung}} \rhead{Einleitung} Der Reed-Solomon-Code ist entstanden um, -das Problem der Fehler, bei der Datenübertragung, zu lösen. -In diesem Abschnitt wird möglichst verständlich die mathematische Abfolge, Funktion oder Algorithmus erklärt. +das Problem der Fehler bei der Datenübertragung, zu lösen. +In diesem Abschnitt wird möglichst verständlich die mathematische Abfolge, +Funktion oder Algorithmus des Reed-Solomon-Code erklärt. Es wird jedoch nicht auf die technische Umsetzung oder Implementierung eingegangen. -Um beim Datenübertragen Fehler zu erkennen, könnte man die Daten jeweils doppelt senden, -und so jeweilige Fehler zu erkennen. -Doch nur schon um weinige Fehler zu erkennen werden überproportional viele Daten doppelt und dreifach gesendet. -Der Reed-Solomon-Code macht dies auf eine andere, clevere Weise. + diff --git a/buch/papers/reedsolomon/experiments/plot.tex b/buch/papers/reedsolomon/experiments/plot.tex index 2196c82..4b156bb 100644 --- a/buch/papers/reedsolomon/experiments/plot.tex +++ b/buch/papers/reedsolomon/experiments/plot.tex @@ -90,7 +90,7 @@ \draw[ultra thick, ->] (zoom) to[out=180, in=90] (syndrom.north); %item - \node[circle, draw, fill =lightgray] at (signal.north west)+(1,0) {1}; + \node[circle, draw, fill =lightgray] at (signal.north west) {1}; \node[circle, draw, fill =lightgray] at (codiert.north west) {2}; \node[circle, draw, fill =lightgray] at (fehler.north west) {3}; \node[circle, draw, fill =lightgray] at (empfangen.north west) {4}; diff --git a/buch/papers/reedsolomon/figures/plotfft.pdf b/buch/papers/reedsolomon/figures/plotfft.pdf Binary files differnew file mode 100644 index 0000000..27992c9 --- /dev/null +++ b/buch/papers/reedsolomon/figures/plotfft.pdf diff --git a/buch/papers/reedsolomon/figures/polynom2.pdf b/buch/papers/reedsolomon/figures/polynom2.pdf Binary files differnew file mode 100644 index 0000000..ae68385 --- /dev/null +++ b/buch/papers/reedsolomon/figures/polynom2.pdf diff --git a/buch/papers/reedsolomon/idee.tex b/buch/papers/reedsolomon/idee.tex index 39adbbf..e18ccd2 100644 --- a/buch/papers/reedsolomon/idee.tex +++ b/buch/papers/reedsolomon/idee.tex @@ -1,15 +1,22 @@ % -% teil1.tex -- Beispiel-File für das Paper +% idee.tex -- Beispiel-File für das Paper % % (c) 2020 Prof Dr Andreas Müller, Hochschule Rapperswil % \section{Idee \label{reedsolomon:section:idee}} \rhead{Problemstellung} +Um beim Datenübertragen Fehler zu erkennen, könnte man die Daten jeweils doppelt senden, +und so jeweilige Fehler zu erkennen. +Doch nur schon um Fehler zu erkennen werden überproportional viele Daten doppelt und dreifach gesendet. +Der Reed-Solomon-Code macht dies auf eine andere, clevere Weise. Das Problem liegt darin Informationen, Zahlen, zu Übertragen und Fehler zu erkennen. Beim Reed-Solomon-Code kann man nicht nur Fehler erkennen, man kann sogar einige Fehler korrigieren. +Der unterschied des Fehler erkennen und korrigiren, ist das beim Erkennen nur die Frage kommt hat es Fehler oder keine, +beim korrigieren muss man den Fehler erkennun und dann zusätzlich noch den original Wert rekonstruieren. +Auch eine variante wäre es die Daten nach einem Fehler einfach nochmals zu senden, was bei Reed-Solomon-Code-Anwendungen nicht immer sinnvolll ist. \ref(reedsolomon:section:anwendung) \rhead{Polynom-Ansatz} Eine Idee ist aus den Daten @@ -48,8 +55,8 @@ Dafür sind mehr übertragene Werte nötig. \begin{figure} \centering - %\includegraphics[width=0.5\textwidth]{papers/reedsolomon/images/polynom2} - \input{papers/reedsolomon/images/polynom2.tex} + \includegraphics[width=\textwidth]{papers/reedsolomon/figures/polynom2} + %\input{papers/reedsolomon/images/polynom2.tex} \caption{Polynom $p(x)$ \eqref{reedsolomon:equation1}} \label{fig:polynom} \end{figure} diff --git a/buch/papers/reedsolomon/images/plotfft.tex b/buch/papers/reedsolomon/images/plotfft.tex deleted file mode 100644 index 83a89eb..0000000 --- a/buch/papers/reedsolomon/images/plotfft.tex +++ /dev/null @@ -1,89 +0,0 @@ -% -% Plot der Übertrangungsabfolge ins FFT und zurück mit IFFT -% -\begin{tikzpicture}[] - -%--------------------------------------------------------------- - %Knote -\matrix[draw = none, column sep=25mm, row sep=2mm]{ - \node(signal) [] { - \begin{tikzpicture} - \begin{axis} - [title = {\Large {Signal}}, - xlabel={Anzahl Übertragene Zahlen}, - xtick={0,20,40,64,80,98},] - \addplot[blue] table[col sep=comma] {papers/reedsolomon/images/signal.txt}; - \end{axis} - \end{tikzpicture}}; & - - \node(codiert) [] { - \begin{tikzpicture} - \begin{axis}[title = {\Large {Codiert}}] - \addplot[] table[col sep=comma] {papers/reedsolomon/images/codiert.txt}; - \end{axis} - \end{tikzpicture}}; \\ - - &\node(fehler) [] { - \begin{tikzpicture} - \begin{axis}[scale=0.6, title = {\Large {Fehler}}, - xtick={7,21,75}] - \addplot[red] table[col sep=comma] {papers/reedsolomon/images/fehler.txt}; - \end{axis} - \end{tikzpicture}};\\ - - \node(decodiert) [] { - \begin{tikzpicture} - \begin{axis}[title = {\Large {Decodiert}}] - \addplot[blue] table[col sep=comma] {papers/reedsolomon/images/decodiert.txt}; - \end{axis} - \end{tikzpicture}}; & - - \node(empfangen) [] { - \begin{tikzpicture} - \begin{axis}[title = {\Large {Empfangen}}] - \addplot[] table[col sep=comma] {papers/reedsolomon/images/empfangen.txt}; - \end{axis} - \end{tikzpicture}};\\ - - \node(syndrom) [] { - \begin{tikzpicture} - \begin{axis}[title = {\Large {Syndrom}}] - \addplot[blue] table[col sep=comma] {papers/reedsolomon/images/syndrom.txt}; - \end{axis} - \end{tikzpicture}}; & - - \node(locator) [] { - \begin{tikzpicture} - \begin{axis}[title = {\Large {Locator}}] - \addplot[] table[col sep=comma] {papers/reedsolomon/images/locator.txt}; - \end{axis} - \end{tikzpicture}};\\ -}; -%------------------------------------------------------------- - %FFT & IFFT deskription - -\draw[thin,gray,dashed] (0,12) to (0,-12); -\node(IFFT) [scale=0.7] at (0,12.3) {IFFT}; -\draw[<-](IFFT.south west)--(IFFT.south east); -\node(FFT) [scale=0.7, above of=IFFT] {FFT}; -\draw[->](FFT.north west)--(FFT.north east); - -\draw[thick, ->,] (fehler.west)++(-1,0) +(0.05,0.5) -- +(-0.1,-0.1) -- +(0.1,0.1) -- +(0,-0.5); -%Arrows -\draw[ultra thick, ->] (signal.east) to (codiert.west); -\draw[ultra thick, ->] (codiert.south) to (fehler.north); -\draw[ultra thick, ->] (fehler.south) to (empfangen.north); -\draw[ultra thick, ->] (empfangen.west) to (decodiert.east); -\draw[ultra thick, ->] (syndrom.east) to (locator.west); -\draw(decodiert.south east)++(-1.8,1) ellipse (1.3cm and 0.8cm) ++(-1.3,0) coordinate(zoom) ; -\draw[ultra thick, ->] (zoom) to[out=180, in=90] (syndrom.north); - -%item -\node[circle, draw, fill =lightgray] at (signal.north west) {1}; -\node[circle, draw, fill =lightgray] at (codiert.north west) {2}; -\node[circle, draw, fill =lightgray] at (fehler.north west) {3}; -\node[circle, draw, fill =lightgray] at (empfangen.north west) {4}; -\node[circle, draw, fill =lightgray] at (decodiert.north west) {5}; -\node[circle, draw, fill =lightgray] at (syndrom.north west) {6}; -\node[circle, draw, fill =lightgray] at (locator.north west) {7}; -\end{tikzpicture}
\ No newline at end of file diff --git a/buch/papers/reedsolomon/main.tex b/buch/papers/reedsolomon/main.tex index e68b947..327d01a 100644 --- a/buch/papers/reedsolomon/main.tex +++ b/buch/papers/reedsolomon/main.tex @@ -8,29 +8,9 @@ \begin{refsection} \chapterauthor{Joshua Bär und Michael Steiner} -Ein paar Hinweise für die korrekte Formatierung des Textes -\begin{itemize} -\item -Absätze werden gebildet, indem man eine Leerzeile einfügt. -Die Verwendung von \verb+\\+ ist nur in Tabellen und Arrays gestattet. -\item -Die explizite Platzierung von Bildern ist nicht erlaubt, entsprechende -Optionen werden gelöscht. -Verwenden Sie Labels und Verweise, um auf Bilder hinzuweisen. -\item -Beginnen Sie jeden Satz auf einer neuen Zeile. -Damit ermöglichen Sie dem Versionsverwaltungssysteme, Änderungen -in verschiedenen Sätzen von verschiedenen Autoren ohne Konflikt -anzuwenden. -\item -Bilden Sie auch für Formeln kurze Zeilen, einerseits der besseren -Übersicht wegen, aber auch um GIT die Arbeit zu erleichtern. -\end{itemize} - % Joshua \input{papers/reedsolomon/einleitung.tex} \input{papers/reedsolomon/idee.tex} -%\input{papers/reedsolomon/teil2.tex} \input{papers/reedsolomon/dtf.tex} % Michael diff --git a/buch/papers/reedsolomon/standalone.tex b/buch/papers/reedsolomon/standalone.tex new file mode 100644 index 0000000..c850d1f --- /dev/null +++ b/buch/papers/reedsolomon/standalone.tex @@ -0,0 +1,30 @@ +\documentclass{book} + +\input{common/packages.tex} + +% additional packages used by the individual papers, add a line for +% each paper +\input{papers/common/addpackages.tex} + +% workaround for biblatex bug +\makeatletter +\def\blx@maxline{77} +\makeatother +\addbibresource{chapters/references.bib} + +% Bibresources for each article +\input{papers/common/addbibresources.tex} + +% make sure the last index starts on an odd page +\AtEndDocument{\clearpage\ifodd\value{page}\else\null\clearpage\fi} +\makeindex + +%\pgfplotsset{compat=1.12} +\setlength{\headheight}{15pt} % fix headheight warning +\DeclareGraphicsRule{*}{mps}{*}{} + +\begin{document} + \input{common/macros.tex} + \def\chapterauthor#1{{\large #1}\bigskip\bigskip} + \input{papers/reedsolomon/main.tex} +\end{document} diff --git a/buch/papers/reedsolomon/standalone/standalone.pdf b/buch/papers/reedsolomon/standalone/standalone.pdf Binary files differnew file mode 100644 index 0000000..80af280 --- /dev/null +++ b/buch/papers/reedsolomon/standalone/standalone.pdf diff --git a/buch/papers/reedsolomon/images/codiert.txt b/buch/papers/reedsolomon/tikz/codiert.txt index 4a481d8..4a481d8 100644 --- a/buch/papers/reedsolomon/images/codiert.txt +++ b/buch/papers/reedsolomon/tikz/codiert.txt diff --git a/buch/papers/reedsolomon/images/decodiert.txt b/buch/papers/reedsolomon/tikz/decodiert.txt index f6221e6..f6221e6 100644 --- a/buch/papers/reedsolomon/images/decodiert.txt +++ b/buch/papers/reedsolomon/tikz/decodiert.txt diff --git a/buch/papers/reedsolomon/images/empfangen.txt b/buch/papers/reedsolomon/tikz/empfangen.txt index 38c13b0..38c13b0 100644 --- a/buch/papers/reedsolomon/images/empfangen.txt +++ b/buch/papers/reedsolomon/tikz/empfangen.txt diff --git a/buch/papers/reedsolomon/images/fehler.txt b/buch/papers/reedsolomon/tikz/fehler.txt index 23f1a83..23f1a83 100644 --- a/buch/papers/reedsolomon/images/fehler.txt +++ b/buch/papers/reedsolomon/tikz/fehler.txt diff --git a/buch/papers/reedsolomon/images/locator.txt b/buch/papers/reedsolomon/tikz/locator.txt index b28988c..b28988c 100644 --- a/buch/papers/reedsolomon/images/locator.txt +++ b/buch/papers/reedsolomon/tikz/locator.txt diff --git a/buch/papers/reedsolomon/tikz/plotfft.tex b/buch/papers/reedsolomon/tikz/plotfft.tex new file mode 100644 index 0000000..3036e14 --- /dev/null +++ b/buch/papers/reedsolomon/tikz/plotfft.tex @@ -0,0 +1,99 @@ +% +% Plot der Übertrangungsabfolge ins FFT und zurück mit IFFT +% +\documentclass[tikz]{standalone} +\usepackage{amsmath} +\usepackage{times} +\usepackage{pgfplots} +\usepackage{pgfplotstable} +\usepackage{csvsimple} +\usepackage{filecontents} + + +\begin{document} +\begin{tikzpicture}[] + + %--------------------------------------------------------------- + %Knote + \matrix[draw = none, column sep=25mm, row sep=2mm]{ + \node(signal) [] { + \begin{tikzpicture} + \begin{axis} + [title = {\Large {Signal}}, + xtick={0,20,40,64,80,98},] + \addplot[blue] table[col sep=comma] {tikz/signal.txt}; + \end{axis} + \end{tikzpicture}}; & + + \node(codiert) [] { + \begin{tikzpicture} + \begin{axis}[title = {\Large {Codiert}}] + \addplot[] table[col sep=comma] {tikz/codiert.txt}; + \end{axis} + \end{tikzpicture}}; \\ + + &\node(fehler) [] { + \begin{tikzpicture} + \begin{axis}[scale=0.6, title = {\Large {Fehler}}, + xtick={7,21,75}] + \addplot[red] table[col sep=comma] {tikz/fehler.txt}; + \end{axis} + \end{tikzpicture}};\\ + + \node(decodiert) [] { + \begin{tikzpicture} + \begin{axis}[title = {\Large {Decodiert}}] + \addplot[blue] table[col sep=comma] {tikz/decodiert.txt}; + \end{axis} + \end{tikzpicture}}; & + + \node(empfangen) [] { + \begin{tikzpicture} + \begin{axis}[title = {\Large {Empfangen}}] + \addplot[] table[col sep=comma] {tikz/empfangen.txt}; + \end{axis} + \end{tikzpicture}};\\ + + \node(syndrom) [] { + \begin{tikzpicture} + \begin{axis}[title = {\Large {Syndrom}}] + \addplot[blue] table[col sep=comma] {tikz/syndrom.txt}; + \end{axis} + \end{tikzpicture}}; & + + \node(locator) [] { + \begin{tikzpicture} + \begin{axis}[title = {\Large {Locator}}] + \addplot[] table[col sep=comma] {tikz/locator.txt}; + \end{axis} + \end{tikzpicture}};\\ + }; + %------------------------------------------------------------- + %FFT & IFFT deskription + + \draw[thin,gray,dashed] (0,12) to (0,-12); + \node(IFFT) [scale=0.7] at (0,12.3) {IFFT}; + \draw[<-](IFFT.south west)--(IFFT.south east); + \node(FFT) [scale=0.7, above of=IFFT] {FFT}; + \draw[->](FFT.north west)--(FFT.north east); + + \draw[thick, ->,] (fehler.west)++(-1,0) +(0.05,0.5) -- +(-0.1,-0.1) -- +(0.1,0.1) -- +(0,-0.5); + %Arrows + \draw[ultra thick, ->] (signal.east) to (codiert.west); + \draw[ultra thick, ->] (codiert.south) to (fehler.north); + \draw[ultra thick, ->] (fehler.south) to (empfangen.north); + \draw[ultra thick, ->] (empfangen.west) to (decodiert.east); + \draw[ultra thick, ->] (syndrom.east) to (locator.west); + \draw(decodiert.south east)++(-1.8,1) ellipse (1.3cm and 0.8cm) ++(-1.3,0) coordinate(zoom) ; + \draw[ultra thick, ->] (zoom) to[out=180, in=90] (syndrom.north); + + %item + \node[circle, draw, fill =lightgray] at (signal.north west) {1}; + \node[circle, draw, fill =lightgray] at (codiert.north west) {2}; + \node[circle, draw, fill =lightgray] at (fehler.north west) {3}; + \node[circle, draw, fill =lightgray] at (empfangen.north west) {4}; + \node[circle, draw, fill =lightgray] at (decodiert.north west) {5}; + \node[circle, draw, fill =lightgray] at (syndrom.north west) {6}; + \node[circle, draw, fill =lightgray] at (locator.north west) {7}; +\end{tikzpicture} +\end{document}
\ No newline at end of file diff --git a/buch/papers/reedsolomon/images/polynom2.tex b/buch/papers/reedsolomon/tikz/polynom2.tex index 288b51c..456e067 100644 --- a/buch/papers/reedsolomon/images/polynom2.tex +++ b/buch/papers/reedsolomon/tikz/polynom2.tex @@ -1,5 +1,13 @@ % polynome %------------------- + +\documentclass[tikz]{standalone} +\usepackage{amsmath} +\usepackage{times} +\usepackage{pgfplots} + + +\begin{document} % Teiler für das Skalieren der Grafik /40 \newcommand{\teiler}{40} @@ -46,4 +54,4 @@ \draw(0,100/\teiler) -- (-0.1,100/\teiler) coordinate[label={left:$100$}]; \draw(1,0) -- (1,-0.1) coordinate[label={below:$1$}]; \end{tikzpicture} -%\end{document} +\end{document} diff --git a/buch/papers/reedsolomon/images/signal.txt b/buch/papers/reedsolomon/tikz/signal.txt index c4fa5f8..c4fa5f8 100644 --- a/buch/papers/reedsolomon/images/signal.txt +++ b/buch/papers/reedsolomon/tikz/signal.txt diff --git a/buch/papers/reedsolomon/images/syndrom.txt b/buch/papers/reedsolomon/tikz/syndrom.txt index 8ca9eed..8ca9eed 100644 --- a/buch/papers/reedsolomon/images/syndrom.txt +++ b/buch/papers/reedsolomon/tikz/syndrom.txt |