Block-Code graphisch visualisieren.

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Block-Code graphisch visualisieren.

von Vertigo » Mi 18. Jan 2017, 21:17

:D Großartig! Das hat mir sehr geholfen! Vielen vielen Dank! :D

von esdd » Mi 18. Jan 2017, 12:59

Bartman hat geschrieben:Ich dachte beim Lesen des Wunsches von Vertigo jedoch eher an eine Matrix. Leider gibt es bei meinem Versuch dieser Variante eine senkrechte Verschiebung der Knoten für die Prüfbits.
Die einzelnen Nodes der Matrix werden horizontal mit ihrer Grundlinie aneinander ausgerichtet. Da c und i unterschiedlich hoch sind und zentriert in innerhalb ihres Nodes, sind die Ränder der Boxen nicht auf gleicher Höhe. Du kannst das ändern, in dem Du für nodes zusätzlich anchor=center vorgibst. Alternativ kann man auch eine feste Höhe und Tiefe des Textes vorgeben. Dann sind die Grundlinien weiterhin ausgerichtet, aber auch die Ränder der Nodes auf gleicher Höhe:

\documentclass[tikz, border=5pt]{standalone}
\usepackage[utf8]{inputenc}
\usetikzlibrary{matrix}

\begin{document}
\begin{tikzpicture}
\matrix [
   matrix of math nodes,
   nodes={
      draw,
      minimum size=1cm,
      text height=\ht\strutbox,% <- ergänzt
      text depth=\dp\strutbox% <- ergänzt
   },
   row sep=-\pgflinewidth,
   column sep=-\pgflinewidth, 
   infobit/.style = {fill=lightgray}
] (m) {
   |[infobit]| i_0 & |[infobit]| i_1 & |[infobit]| i_2 & |[infobit]| i_3 & c_0 & c_1 & c_2\\
};

\draw [dash dot,dash phase=2.5pt] 
  ([yshift=5mm,xshift=-.5\pgflinewidth]m-1-4.north east)
  --
  ([yshift=-7mm,xshift=-.5\pgflinewidth]m-1-4.south east)
;
\node (infobit) at ([yshift=-2mm]m-1-2.south east) {Informationsbits};
\node (pruefbit) at ([yshift=-2mm]m-1-6.south) {Prüfbits};
\end{tikzpicture}
\end{document}

von Bartman » Mi 18. Jan 2017, 11:00

Dein Beispiel ist nach meiner Meinung durchaus elegant. Ich habe lediglich noch ein paar Änderungen vorgenommen.
\documentclass[tikz, border=5pt]{standalone}

\usetikzlibrary{positioning}

\begin{document}
\begin{tikzpicture}[
	node distance=2em,
	nodes = {draw, minimum size=2em},
   infobit/.style = {fill=gray!40}
]
   \node [infobit] (i0) {$i_0$};
   \node [infobit] (i1) [right of=i0] {$i_1$};
   \node [infobit] (i2) [right of=i1] {$i_2$};
   \node [infobit] (i3) [right of=i2] {$i_3$};
   \node (c0) [right of=i3] {$c_0$};
   \node (c1) [right of=c0] {$c_1$};
   \node (c2) [right of=c1] {$c_2$};
\end{tikzpicture}
\end{document}
Ich dachte beim Lesen des Wunsches von Vertigo jedoch eher an eine Matrix. Leider gibt es bei meinem Versuch dieser Variante eine senkrechte Verschiebung der Knoten für die Prüfbits.

Mein Versuch mit einer Matrix:
\documentclass[tikz, border=5pt]{standalone}

\usetikzlibrary{matrix, positioning}

\begin{document}
\begin{tikzpicture}
\matrix [
	matrix of math nodes,
   nodes={
		draw,
		minimum size=1cm
	},
	row sep=-\pgflinewidth,
	column sep=-\pgflinewidth, 
	infobit/.style = {fill=lightgray}
] (m) {
	|[infobit]| i_0 & |[infobit]| i_1 & |[infobit]| i_2 & |[infobit]| i_3 & c_0 & c_1 & c_2\\
};

\draw [dashed] ([yshift=5mm]m-1-4.north east) to ([yshift=-7mm]m-1-4.south east);
\node [below=2mm of m-1-2, xshift=5mm] (infobit) {Informationsbits};
\node [below=2mm of m-1-6] (pruefbit) {Prüfbits};
\end{tikzpicture}
\end{document}

von markusv » Mi 18. Jan 2017, 07:45

Sicherlich nicht die eleganteste Variante und auch nicht vollständig, aber als Ansatz kann ich folgendes anbieten:
\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}
\tikzstyle{infobit}=[draw, fill=gray!40, minimum size=2em]
\tikzstyle{pruefbit}=[draw, fill=white, minimum size=2em]

\begin{tikzpicture}[node distance=2em]
    \node [infobit] (i0) {$i_0$};
    \node [infobit] (i1) [right of=i0] {$i_1$};
    \node [infobit] (i2) [right of=i1] {$i_2$};
    \node [infobit] (i3) [right of=i2] {$i_3$};
    \node [pruefbit] (c0) [right of=i3] {$c_0$};
    \node [pruefbit] (c1) [right of=c0] {$c_1$};
    \node [pruefbit] (c2) [right of=c1] {$c_2$};
\end{tikzpicture}

\end{document}

von Vertigo » Di 17. Jan 2017, 23:32

Im Anhang ist ein Bild, wie ich es meine.
Dateianhänge
Bildschirmfoto 2017-01-17 um 23.32.06.png
Bildschirmfoto 2017-01-17 um 23.32.06.png (10.42 KiB) 1984 mal betrachtet

Block-Code graphisch visualisieren.

von Vertigo » Di 17. Jan 2017, 23:18

Hallo!

Ich möchte einen Block-Code grafisch darstellen und die einzelnen Zellen mit Buchstaben oder Zahlen befüllen können. Ich habe jetzt erst mal versucht mit Hilfslinien einen Block-Code darzustellen und mit einer roten Linie Informationsbits(links) und Prüfbits rechts getrennt. Ich würde jetzt aber gerne in die Zellen reinschreiben können. Ich denke mal mit den Hilfslinien klappt das so nicht. Hat jemand eine Idee, bzw. einen konkreten Link, wie ich das mache. In verschiedenen pdfs/Tutorials habe ich es nicht ganz gecheckt, wie ich das umsetzen kann.
\begin{tikzpicture}
\draw[help lines](0 ,0) grid (11,1);
\draw[red](7,0) -- (7 ,1) ;
\end{tikzpicture}
Dateianhänge
block.png
block.png (5.35 KiB) 1997 mal betrachtet

Nach oben