From 65baed0db896a251547f71c9f1dd45c55378d3ed Mon Sep 17 00:00:00 2001 From: Anatoly Date: Sat, 1 May 2021 14:00:46 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=B8=D1=82=D0=B5=D1=80=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B4=D0=BE?= =?UTF-8?q?=20t=3D6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- coder.lua | 5 +- term_paper.pdf | Bin 155673 -> 162858 bytes term_paper.tex | 341 +++++++++++++++++++++++++++++++++++++++++++------ 3 files changed, 300 insertions(+), 46 deletions(-) diff --git a/coder.lua b/coder.lua index 682647e..79f7f51 100644 --- a/coder.lua +++ b/coder.lua @@ -9,7 +9,7 @@ function m2s(a, b) end end -function coder(input_code, verbose) +function coder(input_code) register = {0, 0, 0} result = {} states = {} @@ -17,9 +17,6 @@ function coder(input_code, verbose) for i, code_digit in ipairs(input_code) do register[#register+1] = code_digit state = register[#register-1]..register[#register-2] - if verbose then - print(i..'-ое состояние - '..state) - end states[#states + 1] = state result1 = m2s(m2s(register[#register], register[#register-1]), register[#register-2]) diff --git a/term_paper.pdf b/term_paper.pdf index 47dbde247c307671453ca0584b51c1e7037a9bf9..f1cf1b41d4dd23a8c4a2b4818d39ad83a73115fc 100644 GIT binary patch delta 29447 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 Xc4G*J56{8E#>@gsPA;w}0sFrIaB!18 delta 22219 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 rUQ,dashed] +\tikzstyle{highlight}=[circle,fill=blue,text=white,scale=0.7] \newcounter{ctra} \newcommand{\trellisEdges}[2]{ @@ -150,9 +151,7 @@ \subsection{Диаграмма декодера} -\begin{tikzpicture}[x=1.2cm, y=-1cm, - highlight/.style={circle,fill=blue,text=white,scale=0.7} - ] +\begin{tikzpicture}[x=1.2cm, y=-1cm] \node at (-0.5,0) [left] {$s_1=00$}; \node at (-0.5,1) [left] {$s_2=10$}; @@ -222,7 +221,7 @@ } % Inputs - \node at (-0.5,4) [left] {Входная пара}; + \node at (-0.5,4) [left, align=right] {Входная\\пара}; \trellisIn{0}{11} \trellisIn{1}{00} @@ -235,33 +234,43 @@ \trellisIn{8}{11} \end{tikzpicture} -\begin{tikzpicture}[x=1.2cm, y=-1cm, - highlight/.style={circle,fill=blue,text=white,scale=0.7} - ] +Сегмент решетки декодера от $t=0$, до $t=3$. + +\begin{tikzpicture}[x=2cm, y=-1cm] \node at (-0.5,0) [left] {$s_1=00$}; \node at (-0.5,1) [left] {$s_2=10$}; \node at (-0.5,2) [left] {$s_3=01$}; \node at (-0.5,3) [left] {$s_4=11$}; - % Edges - \trellisEdges{0}{0} - \trellisEdges{1}{0} - \trellisEdges{1}{1} - \foreach \x in {2,...,8} { - \foreach \y in {0,...,3} { - \trellisEdges{\x}{\y} - } - } - % Nodes - \foreach \x in {0,...,9} { + \foreach \x in {0,...,3} { \node at (\x,-.7) {$\x$}; \foreach \y in {0,...,3} { \node (s\x\y) at (\x,\y) [circle,fill=black,scale=0.7] {}; } } + % Edges + \trellisEdges{0}{0} + \trellisEdges{1}{0} + \trellisEdges{1}{1} + \foreach \x in {2,...,2} { + \foreach \y in {0,...,3} { + \trellisEdges{\x}{\y} + } + } + + \draw[activeedge] (s00) -- (s10); + \draw[activeedge] (s00) -- (s11); + \draw[activeedge] (s10) -- (s20); + \draw[activeedge] (s11) -- (s22); + \draw[activeedge] (s20) -- (s30); + \draw[activeedge] (s22) -- (s31); + \draw[activeedge] (s11) -- (s23); + \draw[activeedge] (s23) -- (s32); + \draw[activeedge] (s23) -- (s33); + \node at (0,0) [highlight] {}; \node at (1,0) [highlight,label=left:{$2$}] {}; \node at (1,1) [highlight,label=left:{$0$}] {}; @@ -282,48 +291,299 @@ \node at (2.5,2) [text=red] {$\times$}; \node at (1.5,0.5) [text=red] {$\times$}; - \draw[activeedge] (s00) -- (s10); + % Inputs and Outputs + \node at (-0.5,4) [left, align=right] {Входная\\пара}; + + \trellisIn{0}{11} + \trellisIn{1}{00} + \trellisIn{2}{00} +\end{tikzpicture} + +Сегмент решетки декодера от $t=0$, до $t=4$. + +\begin{tikzpicture}[x=2cm, y=-1cm] + + \node at (-0.5,0) [left] {$s_1=00$}; + \node at (-0.5,1) [left] {$s_2=10$}; + \node at (-0.5,2) [left] {$s_3=01$}; + \node at (-0.5,3) [left] {$s_4=11$}; + + % Nodes + \foreach \x in {0,...,4} { + \node at (\x,-.7) {$\x$}; + \foreach \y in {0,...,3} { + \node (s\x\y) at (\x,\y) [circle,fill=black,scale=0.7] {}; + } + } + + % Edges + \trellisEdges{0}{0} + \trellisEdges{1}{0} + \trellisEdges{1}{1} + \foreach \x in {2,...,3} { + \foreach \y in {0,...,3} { + \trellisEdges{\x}{\y} + } + } + + \draw[activeedge] (s00) -- (s11); - \draw[activeedge] (s10) -- (s20); \draw[activeedge] (s11) -- (s22); - \draw[activeedge] (s20) -- (s30); \draw[activeedge] (s22) -- (s31); \draw[activeedge] (s11) -- (s23); \draw[activeedge] (s23) -- (s32); \draw[activeedge] (s23) -- (s33); + \draw[activeedge] (s31) -- (s43); + \draw[activeedge] (s32) -- (s41); + \draw[activeedge] (s32) -- (s40); + \draw[activeedge] (s33) -- (s42); + + \node at (0,0) [highlight] {}; + \node at (1,0) [highlight,label=left:{$2$}] {}; + \node at (1,1) [highlight,label=left:{$0$}] {}; + + \node at (2,0) [highlight,label=left:{$0$}] {}; + \node at (2,1) [highlight,label=left:{$2$}] {}; + \node at (2,2) [highlight,label=left:{$1$}] {}; + \node at (2,3) [highlight,label=left:{$1$}] {}; + + \node at (3,0) [highlight,label=left:{$\frac{0}{2}$}] {}; + \node at (3,1) [highlight,label=left:{$\frac{2}{0}$}] {}; + \node at (3,2) [highlight,label=left:{$\frac{1}{1}$}] {}; + \node at (3,3) [highlight,label=left:{$\frac{1}{1}$}] {}; + + \node at (2.5,1) [text=red] {$\times$}; + \node at (2.5,0.5) [text=red] {$\times$}; + \node at (2.5,1.5) [text=red] {$\times$}; + \node at (2.5,2) [text=red] {$\times$}; + \node at (1.5,0.5) [text=red] {$\times$}; + \node at (1.5,0) [text=red] {$\times$}; + \node at (0.5,0) [text=red] {$\times$}; + + \node at (4,0) [highlight,label=left:{$\frac{1}{1}$}] {$\frac33$}; + \node at (4,1) [highlight,label=left:{$\frac{1}{1}$}] {$\frac33$}; + \node at (4,2) [highlight,label=left:{$\frac{2}{0}$}] {$\frac32$}; + \node at (4,3) [highlight,label=left:{$\frac{0}{2}$}] {$\frac14$}; + + \node at (3.5,0) [text=red] {$\times$}; + \node at (3.5,0.5) [text=red] {$\times$}; + \node at (3.5,1.5) [text=red] {$\times$}; + \node at (3.5,3) [text=red] {$\times$}; + \node at (2.5,0) [text=red] {$\times$}; + + % Inputs and Outputs + \node at (-0.5,4) [left, align=right] {Входная\\пара}; + + \trellisIn{0}{11} + \trellisIn{1}{00} + \trellisIn{2}{00} + \trellisIn{3}{01} +\end{tikzpicture} + +Сегмент решетки декодера от $t=0$, до $t=5$. + +\begin{tikzpicture}[x=2cm, y=-1cm] + + \node at (-0.5,0) [left] {$s_1=00$}; + \node at (-0.5,1) [left] {$s_2=10$}; + \node at (-0.5,2) [left] {$s_3=01$}; + \node at (-0.5,3) [left] {$s_4=11$}; + + % Nodes + \foreach \x in {0,...,5} { + \node at (\x,-.7) {$\x$}; + \foreach \y in {0,...,3} { + \node (s\x\y) at (\x,\y) [circle,fill=black,scale=0.7] {}; + } + } + + % Edges + \trellisEdges{0}{0} + \trellisEdges{1}{0} + \trellisEdges{1}{1} + \foreach \x in {2,...,4} { + \foreach \y in {0,...,3} { + \trellisEdges{\x}{\y} + } + } + + + \draw[activeedge] (s00) -- (s11); + \draw[activeedge] (s11) -- (s22); + \draw[activeedge] (s22) -- (s31); + \draw[activeedge] (s11) -- (s23); + \draw[activeedge] (s23) -- (s32); + \draw[activeedge] (s23) -- (s33); + + \draw[activeedge] (s31) -- (s43); + \draw[activeedge] (s32) -- (s41); + \draw[activeedge] (s33) -- (s42); + + \draw[activeedge] (s41) -- (s52); + \draw[activeedge] (s42) -- (s50); + \draw[activeedge] (s42) -- (s51); + \draw[activeedge] (s43) -- (s53); + + \node at (0,0) [highlight] {}; + \node at (1,0) [highlight,label=left:{$2$}] {}; + \node at (1,1) [highlight,label=left:{$0$}] {}; + + \node at (2,0) [highlight,label=left:{$0$}] {}; + \node at (2,1) [highlight,label=left:{$2$}] {}; + \node at (2,2) [highlight,label=left:{$1$}] {}; + \node at (2,3) [highlight,label=left:{$1$}] {}; + + \node at (3,0) [highlight,label=left:{$\frac{0}{2}$}] {}; + \node at (3,1) [highlight,label=left:{$\frac{2}{0}$}] {}; + \node at (3,2) [highlight,label=left:{$\frac{1}{1}$}] {}; + \node at (3,3) [highlight,label=left:{$\frac{1}{1}$}] {}; + + \node at (2.5,1) [text=red] {$\times$}; + \node at (2.5,0.5) [text=red] {$\times$}; + \node at (2.5,1.5) [text=red] {$\times$}; + \node at (2.5,2) [text=red] {$\times$}; + \node at (1.5,0.5) [text=red] {$\times$}; + \node at (1.5,0) [text=red] {$\times$}; + \node at (0.5,0) [text=red] {$\times$}; + \node at (4,0) [highlight,label=left:{$\frac{1}{1}$}] {}; \node at (4,1) [highlight,label=left:{$\frac{1}{1}$}] {}; \node at (4,2) [highlight,label=left:{$\frac{2}{0}$}] {}; \node at (4,3) [highlight,label=left:{$\frac{0}{2}$}] {}; + \node at (3.5,0) [text=red] {$\times$}; + \node at (3.5,0.5) [text=red] {$\times$}; + \node at (3.5,1.5) [text=red] {$\times$}; + \node at (3.5,3) [text=red] {$\times$}; + \node at (2.5,0) [text=red] {$\times$}; + + \node at (5,0) [highlight,label=left:{$\frac{1}{1}$}] {$\frac43$}; + \node at (5,1) [highlight,label=left:{$\frac{1}{1}$}] {$\frac43$}; + \node at (5,2) [highlight,label=left:{$\frac{0}{2}$}] {$\frac33$}; + \node at (5,3) [highlight,label=left:{$\frac{2}{0}$}] {$\frac51$}; + + \node at (4.5,0) [text=red] {$\times$}; + \node at (4.5,0.5) [text=red] {$\times$}; + \node at (4.5,2.5) [text=red] {$\times$}; + \node at (4.5,2) [text=red] {$\times$}; + \node at (3.5,1) [text=red] {$\times$}; + + % Inputs and Outputs + \node at (-0.5,4) [left, align=right] {Входная\\пара}; + + \trellisIn{0}{11} + \trellisIn{1}{00} + \trellisIn{2}{00} + \trellisIn{3}{01} + \trellisIn{4}{10} +\end{tikzpicture} + +Сегмент решетки декодера от $t=0$, до $t=6$. + +\begin{tikzpicture}[x=1.8cm, y=-1cm] + + \node at (-0.5,0) [left] {$s_1=00$}; + \node at (-0.5,1) [left] {$s_2=10$}; + \node at (-0.5,2) [left] {$s_3=01$}; + \node at (-0.5,3) [left] {$s_4=11$}; + + % Nodes + \foreach \x in {0,...,6} { + \node at (\x,-.7) {$\x$}; + \foreach \y in {0,...,3} { + \node (s\x\y) at (\x,\y) [circle,fill=black,scale=0.7] {}; + } + } + + % Edges + \trellisEdges{0}{0} + \trellisEdges{1}{0} + \trellisEdges{1}{1} + \foreach \x in {2,...,5} { + \foreach \y in {0,...,3} { + \trellisEdges{\x}{\y} + } + } + + + \draw[activeedge] (s00) -- (s11); + \draw[activeedge] (s11) -- (s22); + \draw[activeedge] (s22) -- (s31); + \draw[activeedge] (s11) -- (s23); + \draw[activeedge] (s23) -- (s32); + \draw[activeedge] (s23) -- (s33); + + \draw[activeedge] (s31) -- (s43); + \draw[activeedge] (s32) -- (s41); + \draw[activeedge] (s33) -- (s42); + + \draw[activeedge] (s41) -- (s52); + \draw[activeedge] (s42) -- (s51); + \draw[activeedge] (s43) -- (s53); + + \draw[activeedge] (s51) -- (s62); + \draw[activeedge] (s52) -- (s61); + \draw[activeedge] (s52) -- (s60); + \draw[activeedge] (s53) -- (s63); + + \node at (0,0) [highlight] {}; + \node at (1,0) [highlight,label=left:{$2$}] {}; + \node at (1,1) [highlight,label=left:{$0$}] {}; + + \node at (2,0) [highlight,label=left:{$0$}] {}; + \node at (2,1) [highlight,label=left:{$2$}] {}; + \node at (2,2) [highlight,label=left:{$1$}] {}; + \node at (2,3) [highlight,label=left:{$1$}] {}; + + \node at (3,0) [highlight,label=left:{$\frac{0}{2}$}] {}; + \node at (3,1) [highlight,label=left:{$\frac{2}{0}$}] {}; + \node at (3,2) [highlight,label=left:{$\frac{1}{1}$}] {}; + \node at (3,3) [highlight,label=left:{$\frac{1}{1}$}] {}; + + \node at (2.5,1) [text=red] {$\times$}; + \node at (2.5,0.5) [text=red] {$\times$}; + \node at (2.5,1.5) [text=red] {$\times$}; + \node at (2.5,2) [text=red] {$\times$}; + \node at (1.5,0.5) [text=red] {$\times$}; + \node at (1.5,0) [text=red] {$\times$}; + \node at (0.5,0) [text=red] {$\times$}; + + \node at (4,0) [highlight,label=left:{$\frac{1}{1}$}] {}; + \node at (4,1) [highlight,label=left:{$\frac{1}{1}$}] {}; + \node at (4,2) [highlight,label=left:{$\frac{2}{0}$}] {}; + \node at (4,3) [highlight,label=left:{$\frac{0}{2}$}] {}; + + \node at (3.5,0) [text=red] {$\times$}; + \node at (3.5,0.5) [text=red] {$\times$}; + \node at (3.5,1.5) [text=red] {$\times$}; + \node at (3.5,3) [text=red] {$\times$}; + \node at (2.5,0) [text=red] {$\times$}; + \node at (5,0) [highlight,label=left:{$\frac{1}{1}$}] {}; \node at (5,1) [highlight,label=left:{$\frac{1}{1}$}] {}; \node at (5,2) [highlight,label=left:{$\frac{0}{2}$}] {}; \node at (5,3) [highlight,label=left:{$\frac{2}{0}$}] {}; - \node at (6,0) [highlight,label=left:{$\frac{1}{1}$}] {}; - \node at (6,1) [highlight,label=left:{$\frac{1}{1}$}] {}; - \node at (6,2) [highlight,label=left:{$\frac{0}{2}$}] {}; - \node at (6,3) [highlight,label=left:{$\frac{2}{0}$}] {}; + \node at (4.5,0) [text=red] {$\times$}; + \node at (4.5,0.5) [text=red] {$\times$}; + \node at (4.5,2.5) [text=red] {$\times$}; + \node at (4.5,2) [text=red] {$\times$}; + \node at (3.5,1) [text=red] {$\times$}; - \node at (7,0) [highlight,label=left:{$\frac{1}{1}$}] {}; - \node at (7,1) [highlight,label=left:{$\frac{1}{1}$}] {}; - \node at (7,2) [highlight,label=left:{$\frac{2}{0}$}] {}; - \node at (7,3) [highlight,label=left:{$\frac{0}{2}$}] {}; + \node at (6,0) [highlight,label=left:{$\frac{1}{1}$}] {$\frac44$}; + \node at (6,1) [highlight,label=left:{$\frac{1}{1}$}] {$\frac44$}; + \node at (6,2) [highlight,label=left:{$\frac{0}{2}$}] {$\frac33$}; + \node at (6,3) [highlight,label=left:{$\frac{2}{0}$}] {$\frac51$}; - \node at (8,0) [highlight,label=left:{$\frac{2}{0}$}] {}; - \node at (8,1) [highlight,label=left:{$\frac{0}{2}$}] {}; - \node at (8,2) [highlight,label=left:{$\frac{1}{1}$}] {}; - \node at (8,3) [highlight,label=left:{$\frac{1}{1}$}] {}; - - \node at (9,0) [highlight,label=left:{$\frac{2}{0}$}] {}; - \node at (9,1) [highlight,label=left:{$\frac{0}{2}$}] {}; - \node at (9,2) [highlight,label=left:{$\frac{1}{1}$}] {}; - \node at (9,3) [highlight,label=left:{$\frac{1}{1}$}] {}; + \node at (5.5,0) [text=red] {$\times$}; + \node at (5.5,0.5) [text=red] {$\times$}; + \node at (5.5,2.5) [text=red] {$\times$}; + \node at (5.5,2) [text=red] {$\times$}; + \node at (4.5,1) [text=red] {$\times$}; % Inputs and Outputs - \node at (-0.5,4) [left] {Входная пара}; + \node at (-0.5,4) [left, align=right] {Входная\\пара}; \trellisIn{0}{11} \trellisIn{1}{00} @@ -331,9 +591,6 @@ \trellisIn{3}{01} \trellisIn{4}{10} \trellisIn{5}{10} - \trellisIn{6}{01} - \trellisIn{7}{11} - \trellisIn{8}{11} \end{tikzpicture} \end{document}