From 5dbe90e1d407675b2c66c10fbf7e8938ffcc53e8 Mon Sep 17 00:00:00 2001 From: Andreas Tsouchlos Date: Tue, 11 Apr 2023 16:09:17 +0200 Subject: [PATCH] Added descriptive text in appendix and moved around the order of figures --- latex/thesis/chapters/appendix.tex | 497 +++++++++++--------- latex/thesis/chapters/proximal_decoding.tex | 10 +- 2 files changed, 273 insertions(+), 234 deletions(-) diff --git a/latex/thesis/chapters/appendix.tex b/latex/thesis/chapters/appendix.tex index fb84217..94a74ab 100644 --- a/latex/thesis/chapters/appendix.tex +++ b/latex/thesis/chapters/appendix.tex @@ -2,6 +2,45 @@ \chapter{A Comparison of the Behaviour of Proximal Decoding for Various Codes} +In this chapter, the results obtained with the proximal decoding algorithm, +shown in chapter \ref{chapter:proximal_decoding}, +are revisited and expanded to a number of different codes. +These codes include a BCH code with $n=31$, four \ac{LDPC} codes with +lengths $n=96, n=204, n=204$ and $n=408$, respectively, and a progressive +edge growth construction \ac{LDPC} code with $n=504$. +All \ac{LDPC} codes have been taken from \cite{mackay_enc}. +This selection of codes was chosen as it comprises a variety of codes of +different lengths, rates and construction schemes. + +Figure \ref{fig:prox:results_3d_multiple} depicts how the choice of the +parameter $\gamma$ affects the decoding performance. +The \ac{BER} curves for three values of $\gamma$ are highlighted in each case: +$\gamma = 0.01, \gamma=0.05$ and $\gamma=0.15$. +These are the same values chosen by Wadayama et al. for the presentation of +their results in \cite[Sec. 5.1]{proximal_paper} +and they seem to suitably describe the behaviour of the decoding performance +over a wide range of values for $\gamma$. +The parameter $\omega$ is chosen to be $0.05$ and the maximum number of +iterations performed $K$ is 100. +$\eta$ is set to $1.5$. + +In figure \ref{fig:prox:gamma_omega_multiple}, the relationship between +$\gamma$ and $\omega$ and how they affect the \ac{BER} is shown. +This time a constant $E_b / N_0$ of $\SI{4}{dB}$ is chosen. +Again, the maximum number of iterations is set to $K=100$ and $\eta$ +is set to $1.5$. + + +The possible gain in the decoding performance achievable using the +improved proximal decoding algorithm presented in section +\ref{sec:prox:Improved Implementation} is illustrated in figure +\ref{fig:prox:improved:comp}. +The parameters chosen are the same as for the reconstruction of the results +of Wadayama et al. in section \ref{sec:prox:Analysis and Simulation Results}, +i.e., $\omega = 0.05, K=100, \eta=1.5$ and +$\gamma \in \left\{ 0.01, 0.05, 0.15 \right\}$. + + \begin{figure}[H] \centering @@ -228,10 +267,238 @@ \end{subfigure} - \caption{BER for $\omega = 0.05, K=100$ (different codes)} + \caption{Dependence of the \ac{BER} on the value of the parameter $\gamma$ for various codes} \label{fig:prox:results_3d_multiple} \end{figure} +\begin{figure}[H] + \centering + + \begin{subfigure}[t]{0.48\textwidth} + \centering + + \begin{tikzpicture} + \begin{axis}[ + colormap/viridis, + xlabel={$\omega$}, ylabel={$\gamma$}, + at={(0,0)}, view={0}{90}, + zmode=log, + ytick={0, 0.05, 0.1, 0.15}, + yticklabels={0, 0.05, 0.1, 0.15}, + xtick={0.05, 0.1, 0.15, 0.2}, + xticklabels={0.05, 0.1, 0.15, 0.2}, + width=\textwidth, + height=0.75\textwidth, + point meta min=-5.7, + point meta max=-0.5, + ] + \addplot3[ + surf, + shader=flat, + mesh/rows=17, mesh/cols=10, + ] + table [col sep=comma, x=omega, y=gamma, z=BER] + {res/proximal/2d_ber_fer_dfr_gamma_omega_963965.csv}; + \end{axis} + \end{tikzpicture} + + \caption{$\left( 3, 6 \right)$-regular \ac{LDPC} code with $n=96, k=48$ + \cite[\text{96.3.965}]{mackay_enc}} + \end{subfigure}% + \hfill + \begin{subfigure}[t]{0.48\textwidth} + \centering + + \begin{tikzpicture} + \begin{axis}[ + colormap/viridis, + xlabel={$\omega$}, ylabel={$\gamma$}, + at={(0,0)}, view={0}{90}, + zmode=log, + ytick={0, 0.05, 0.1, 0.15}, + yticklabels={0, 0.05, 0.1, 0.15}, + xtick={0.05, 0.1, 0.15, 0.2}, + xticklabels={0.05, 0.1, 0.15, 0.2}, + width=\textwidth, + height=0.75\textwidth, + point meta min=-5.7, + point meta max=-0.5, + ] + \addplot3[ + surf, + shader=flat, + mesh/rows=17, mesh/cols=10, + ] + table [col sep=comma, x=omega, y=gamma, z=BER] + {res/proximal/2d_ber_fer_dfr_gamma_omega_bch_31_26.csv}; + \end{axis} + \end{tikzpicture} + + \caption{BCH code with $n=31, k=26$\\[2\baselineskip]} + \end{subfigure}% + + \vspace{3mm} + + \begin{subfigure}[t]{0.48\textwidth} + \centering + + \begin{tikzpicture} + \begin{axis}[ + colormap/viridis, + xlabel={$\omega$}, ylabel={$\gamma$}, + at={(0,0)}, view={0}{90}, + zmode=log, + ytick={0, 0.05, 0.1, 0.15}, + yticklabels={0, 0.05, 0.1, 0.15}, + xtick={0.05, 0.1, 0.15, 0.2}, + xticklabels={0.05, 0.1, 0.15, 0.2}, + width=\textwidth, + height=0.75\textwidth, + point meta min=-5.7, + point meta max=-0.5, + ] + \addplot3[ + surf, + shader=flat, + mesh/rows=17, mesh/cols=10, + ] + table [col sep=comma, x=omega, y=gamma, z=BER] + {res/proximal/2d_ber_fer_dfr_gamma_omega_20433484.csv}; + \end{axis} + \end{tikzpicture} + + \caption{$\left( 3, 6 \right)$-regular \ac{LDPC} code with $n=204, k=102$ + \cite[\text{204.33.484}]{mackay_enc}} + \end{subfigure}% + \hfill + \begin{subfigure}[t]{0.48\textwidth} + \centering + + \begin{tikzpicture} + \begin{axis}[ + colormap/viridis, + xlabel={$\omega$}, ylabel={$\gamma$}, + at={(0,0)}, view={0}{90}, + zmode=log, + ytick={0, 0.05, 0.1, 0.15}, + yticklabels={0, 0.05, 0.1, 0.15}, + xtick={0.05, 0.1, 0.15, 0.2}, + xticklabels={0.05, 0.1, 0.15, 0.2}, + width=\textwidth, + height=0.75\textwidth, + point meta min=-5.7, + point meta max=-0.5, + ] + \addplot3[ + surf, + shader=flat, + mesh/rows=17, mesh/cols=10, + ] + table [col sep=comma, x=omega, y=gamma, z=BER] + {res/proximal/2d_ber_fer_dfr_gamma_omega_20455187.csv}; + \end{axis} + \end{tikzpicture} + + \caption{$\left( 5, 10 \right)$-regular \ac{LDPC} code with $n=204, k=102$ + \cite[\text{204.55.187}]{mackay_enc}} + \end{subfigure}% + + \vspace{3mm} + + \begin{subfigure}[t]{0.48\textwidth} + \centering + + \begin{tikzpicture} + \begin{axis}[ + colormap/viridis, + xlabel={$\omega$}, ylabel={$\gamma$}, + at={(0,0)}, view={0}{90}, + zmode=log, + ytick={0, 0.05, 0.1, 0.15}, + yticklabels={0, 0.05, 0.1, 0.15}, + xtick={0.05, 0.1, 0.15, 0.2}, + xticklabels={0.05, 0.1, 0.15, 0.2}, + width=\textwidth, + height=0.75\textwidth, + point meta min=-5.7, + point meta max=-0.5, + ] + \addplot3[ + surf, + shader=flat, + mesh/rows=17, mesh/cols=10, + ] + table [col sep=comma, x=omega, y=gamma, z=BER] + {res/proximal/2d_ber_fer_dfr_gamma_omega_40833844.csv}; + \end{axis} + \end{tikzpicture} + + \caption{$\left( 3, 6 \right)$-regular \ac{LDPC} code with $n=408, k=204$ + \cite[\text{408.33.844}]{mackay_enc}} + \end{subfigure}% + \hfill + \begin{subfigure}[t]{0.48\textwidth} + \centering + + \begin{tikzpicture} + \begin{axis}[ + colormap/viridis, + xlabel={$\omega$}, ylabel={$\gamma$}, + at={(0,0)}, view={0}{90}, + zmode=log, + ytick={0, 0.05, 0.1, 0.15}, + yticklabels={0, 0.05, 0.1, 0.15}, + xtick={0.05, 0.1, 0.15, 0.2}, + xticklabels={0.05, 0.1, 0.15, 0.2}, + width=\textwidth, + height=0.75\textwidth, + point meta min=-5.7, + point meta max=-0.5, + ] + \addplot3[ + surf, + shader=flat, + mesh/rows=17, mesh/cols=10, + ] + table [col sep=comma, x=omega, y=gamma, z=BER] + {res/proximal/2d_ber_fer_dfr_gamma_omega_pegreg252x504.csv}; + \end{axis} + \end{tikzpicture} + + \caption{LDPC code (Progressive Edge Growth Construction) with $n=504, k=252$ + \cite[\text{PEGReg252x504}]{mackay_enc}} + \end{subfigure}% + + \vspace{5mm} + + \begin{subfigure}{\textwidth} + \centering + + \begin{tikzpicture} + \begin{axis}[ + hide axis, + scale only axis, + height=0pt, + width=0pt, + colormap/viridis, + colorbar horizontal, + point meta min=-5.7, + point meta max=-0.5, + colorbar style={ + title={BER}, + width=10cm, + xtick={-5,-4,...,-1}, + xticklabels={$10^{-5}$,$10^{-4}$,$10^{-3}$,$10^{-2}$,$10^{-1}$} + }] + \addplot [draw=none] coordinates {(0,0)}; + \end{axis} + \end{tikzpicture} + \end{subfigure}% + + \caption{The \ac{BER} as a function of $\gamma$ and $\omega$ for various codes} + \label{fig:prox:gamma_omega_multiple} +\end{figure} + \begin{figure}[H] \centering @@ -542,234 +809,6 @@ \label{fig:prox:improved:comp} \end{figure} -\begin{figure}[H] - \centering - - \begin{subfigure}[t]{0.48\textwidth} - \centering - - \begin{tikzpicture} - \begin{axis}[ - colormap/viridis, - xlabel={$\omega$}, ylabel={$\gamma$}, - at={(0,0)}, view={0}{90}, - zmode=log, - ytick={0, 0.05, 0.1, 0.15}, - yticklabels={0, 0.05, 0.1, 0.15}, - xtick={0.05, 0.1, 0.15, 0.2}, - xticklabels={0.05, 0.1, 0.15, 0.2}, - width=\textwidth, - height=0.75\textwidth, - point meta min=-5.7, - point meta max=-0.5, - ] - \addplot3[ - surf, - shader=flat, - mesh/rows=17, mesh/cols=10, - ] - table [col sep=comma, x=omega, y=gamma, z=BER] - {res/proximal/2d_ber_fer_dfr_gamma_omega_963965.csv}; - \end{axis} - \end{tikzpicture} - - \caption{$\left( 3, 6 \right)$-regular \ac{LDPC} code with $n=96, k=48$ - \cite[\text{96.3.965}]{mackay_enc}} - \end{subfigure}% - \hfill - \begin{subfigure}[t]{0.48\textwidth} - \centering - - \begin{tikzpicture} - \begin{axis}[ - colormap/viridis, - xlabel={$\omega$}, ylabel={$\gamma$}, - at={(0,0)}, view={0}{90}, - zmode=log, - ytick={0, 0.05, 0.1, 0.15}, - yticklabels={0, 0.05, 0.1, 0.15}, - xtick={0.05, 0.1, 0.15, 0.2}, - xticklabels={0.05, 0.1, 0.15, 0.2}, - width=\textwidth, - height=0.75\textwidth, - point meta min=-5.7, - point meta max=-0.5, - ] - \addplot3[ - surf, - shader=flat, - mesh/rows=17, mesh/cols=10, - ] - table [col sep=comma, x=omega, y=gamma, z=BER] - {res/proximal/2d_ber_fer_dfr_gamma_omega_bch_31_26.csv}; - \end{axis} - \end{tikzpicture} - - \caption{BCH code with $n=31, k=26$\\[2\baselineskip]} - \end{subfigure}% - - \vspace{3mm} - - \begin{subfigure}[t]{0.48\textwidth} - \centering - - \begin{tikzpicture} - \begin{axis}[ - colormap/viridis, - xlabel={$\omega$}, ylabel={$\gamma$}, - at={(0,0)}, view={0}{90}, - zmode=log, - ytick={0, 0.05, 0.1, 0.15}, - yticklabels={0, 0.05, 0.1, 0.15}, - xtick={0.05, 0.1, 0.15, 0.2}, - xticklabels={0.05, 0.1, 0.15, 0.2}, - width=\textwidth, - height=0.75\textwidth, - point meta min=-5.7, - point meta max=-0.5, - ] - \addplot3[ - surf, - shader=flat, - mesh/rows=17, mesh/cols=10, - ] - table [col sep=comma, x=omega, y=gamma, z=BER] - {res/proximal/2d_ber_fer_dfr_gamma_omega_20433484.csv}; - \end{axis} - \end{tikzpicture} - - \caption{$\left( 3, 6 \right)$-regular \ac{LDPC} code with $n=204, k=102$ - \cite[\text{204.33.484}]{mackay_enc}} - \end{subfigure}% - \hfill - \begin{subfigure}[t]{0.48\textwidth} - \centering - - \begin{tikzpicture} - \begin{axis}[ - colormap/viridis, - xlabel={$\omega$}, ylabel={$\gamma$}, - at={(0,0)}, view={0}{90}, - zmode=log, - ytick={0, 0.05, 0.1, 0.15}, - yticklabels={0, 0.05, 0.1, 0.15}, - xtick={0.05, 0.1, 0.15, 0.2}, - xticklabels={0.05, 0.1, 0.15, 0.2}, - width=\textwidth, - height=0.75\textwidth, - point meta min=-5.7, - point meta max=-0.5, - ] - \addplot3[ - surf, - shader=flat, - mesh/rows=17, mesh/cols=10, - ] - table [col sep=comma, x=omega, y=gamma, z=BER] - {res/proximal/2d_ber_fer_dfr_gamma_omega_20455187.csv}; - \end{axis} - \end{tikzpicture} - - \caption{$\left( 5, 10 \right)$-regular \ac{LDPC} code with $n=204, k=102$ - \cite[\text{204.55.187}]{mackay_enc}} - \end{subfigure}% - - \vspace{3mm} - - \begin{subfigure}[t]{0.48\textwidth} - \centering - - \begin{tikzpicture} - \begin{axis}[ - colormap/viridis, - xlabel={$\omega$}, ylabel={$\gamma$}, - at={(0,0)}, view={0}{90}, - zmode=log, - ytick={0, 0.05, 0.1, 0.15}, - yticklabels={0, 0.05, 0.1, 0.15}, - xtick={0.05, 0.1, 0.15, 0.2}, - xticklabels={0.05, 0.1, 0.15, 0.2}, - width=\textwidth, - height=0.75\textwidth, - point meta min=-5.7, - point meta max=-0.5, - ] - \addplot3[ - surf, - shader=flat, - mesh/rows=17, mesh/cols=10, - ] - table [col sep=comma, x=omega, y=gamma, z=BER] - {res/proximal/2d_ber_fer_dfr_gamma_omega_40833844.csv}; - \end{axis} - \end{tikzpicture} - - \caption{$\left( 3, 6 \right)$-regular \ac{LDPC} code with $n=408, k=204$ - \cite[\text{408.33.844}]{mackay_enc}} - \end{subfigure}% - \hfill - \begin{subfigure}[t]{0.48\textwidth} - \centering - - \begin{tikzpicture} - \begin{axis}[ - colormap/viridis, - xlabel={$\omega$}, ylabel={$\gamma$}, - at={(0,0)}, view={0}{90}, - zmode=log, - ytick={0, 0.05, 0.1, 0.15}, - yticklabels={0, 0.05, 0.1, 0.15}, - xtick={0.05, 0.1, 0.15, 0.2}, - xticklabels={0.05, 0.1, 0.15, 0.2}, - width=\textwidth, - height=0.75\textwidth, - point meta min=-5.7, - point meta max=-0.5, - ] - \addplot3[ - surf, - shader=flat, - mesh/rows=17, mesh/cols=10, - ] - table [col sep=comma, x=omega, y=gamma, z=BER] - {res/proximal/2d_ber_fer_dfr_gamma_omega_pegreg252x504.csv}; - \end{axis} - \end{tikzpicture} - - \caption{LDPC code (Progressive Edge Growth Construction) with $n=504, k=252$ - \cite[\text{PEGReg252x504}]{mackay_enc}} - \end{subfigure}% - - \vspace{5mm} - - \begin{subfigure}{\textwidth} - \centering - - \begin{tikzpicture} - \begin{axis}[ - hide axis, - scale only axis, - height=0pt, - width=0pt, - colormap/viridis, - colorbar horizontal, - point meta min=-5.7, - point meta max=-0.5, - colorbar style={ - title={BER}, - width=10cm, - xtick={-5,-4,...,-1}, - xticklabels={$10^{-5}$,$10^{-4}$,$10^{-3}$,$10^{-2}$,$10^{-1}$} - }] - \addplot [draw=none] coordinates {(0,0)}; - \end{axis} - \end{tikzpicture} - \end{subfigure}% - - \caption{} - \label{fig:prox:gamma_omega_multiple} -\end{figure} - %\chapter{\acs{LP} Decoding using \acs{ADMM} as a Proximal Algorithm}% %\label{chapter:LD Decoding using ADMM as a Proximal Algorithm} diff --git a/latex/thesis/chapters/proximal_decoding.tex b/latex/thesis/chapters/proximal_decoding.tex index 4e7681e..c14662e 100644 --- a/latex/thesis/chapters/proximal_decoding.tex +++ b/latex/thesis/chapters/proximal_decoding.tex @@ -449,8 +449,8 @@ in each case. xlabel={$E_b / N_0$ (dB)}, ylabel={$\gamma$}, zlabel={BER}, - %legend pos=outer north east, - legend style={at={(0.5,-0.7)},anchor=south}, + legend pos=outer north east, + %legend style={at={(0.5,-0.7)},anchor=south}, ytick={0, 0.05, 0.1, 0.15}, width=0.6\textwidth, height=0.45\textwidth,] @@ -528,7 +528,7 @@ depicted in figure \ref{fig:prox:gamma_omega_multiple}. point meta min=-5.7, point meta max=-0.5, colorbar style={ - title={BER}, + title={$E_b / N_0$}, ytick={-5,-4,...,-1}, yticklabels={$10^{-5}$,$10^{-4}$,$10^{-3}$,$10^{-2}$,$10^{-1}$} }] @@ -548,7 +548,7 @@ depicted in figure \ref{fig:prox:gamma_omega_multiple}. \end{figure}% % \footnotetext{(3,6) regular \ac{LDPC} code with n = 204, k = 102 - \cite[\text{204.33.484}]{mackay_enc}; $SNR=\SI{4}{dB}, K=100, \eta=1.5$ + \cite[\text{204.33.484}]{mackay_enc}; $E_b / N_0=\SI{4}{dB}, K=100, \eta=1.5$ }% % @@ -561,7 +561,7 @@ different \acp{SNR}. The plots have been generated by averaging the error over TODO decodings. As some decodings go one for more iterations than others, the number of values which are averaged for each datapoints vary. -This explains the bump observable around $k=\text{TODO}$, since after +This explains the bump visible around $k=\text{TODO}$, since after this point more and more correct decodings converge and stop iterating, leaving more and more faulty ones to be averaged. Remarkably, the \ac{SNR} seems to not have any impact on the number of