Compare commits
14 Commits
7d14cf6b58
...
feature/in
| Author | SHA1 | Date | |
|---|---|---|---|
| 81d8d5b36a | |||
| f408b139b7 | |||
| 28a914b127 | |||
| a1e051d980 | |||
| fdb62dae3e | |||
| bbe2ce0442 | |||
| 0366f7c2e3 | |||
| fa22effa0d | |||
| 7339b1d06f | |||
| 2e646cc2c9 | |||
| 5e735df104 | |||
| d57cc98a38 | |||
| d4dc09c93b | |||
| 402f8d4c63 |
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
[submodule "lib/latex-common"]
|
||||||
|
path = lib/latex-common
|
||||||
|
url = ssh://git@git.mercurial-manifold.eu:2224/an.tsouchlos/latex-common.git
|
||||||
@@ -1,2 +1,3 @@
|
|||||||
$pdflatex="pdflatex -shell-escape -interaction=nonstopmode -synctex=1 %O %S";
|
$pdflatex="pdflatex -shell-escape -interaction=nonstopmode -synctex=1 %O %S";
|
||||||
$out_dir = 'build';
|
$out_dir = 'build';
|
||||||
|
$pdf_mode = 1;
|
||||||
|
|||||||
11
Makefile
Normal file
11
Makefile
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
all: build_folder letter.pdf
|
||||||
|
|
||||||
|
build_folder:
|
||||||
|
mkdir -p build/build
|
||||||
|
|
||||||
|
letter.pdf: letter.tex
|
||||||
|
latexmk -pdf letter.tex
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf build
|
||||||
|
|
||||||
26
README.md
26
README.md
@@ -1,2 +1,28 @@
|
|||||||
# ba-letter
|
# ba-letter
|
||||||
|
|
||||||
|
Repository containing latex source for the Bachelor's Thesis paper.
|
||||||
|
|
||||||
|
After cloning, make sure to initialize the submodules containing the dependencies:
|
||||||
|
```bash
|
||||||
|
$ git submodule update --init
|
||||||
|
```
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
### Build on host
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ make
|
||||||
|
```
|
||||||
|
|
||||||
|
### Build using docker
|
||||||
|
|
||||||
|
1. Build docker image
|
||||||
|
```bash
|
||||||
|
$ docker build -f dockerfiles/Dockerfile.alpine . -t ba-letter
|
||||||
|
```
|
||||||
|
2. Build examples
|
||||||
|
```bash
|
||||||
|
$ docker run --rm -v $PWD:$PWD -w $PWD -u `id -u`:`id -g` ba-letter make
|
||||||
|
```
|
||||||
|
|
||||||
|
|||||||
260
common.tex
260
common.tex
@@ -1,260 +0,0 @@
|
|||||||
% Author: Andreas Tsouchlos
|
|
||||||
%
|
|
||||||
% Collection of useful commands and definitions
|
|
||||||
%
|
|
||||||
% ||====================================================================||
|
|
||||||
% || WARNING ||
|
|
||||||
% ||====================================================================||
|
|
||||||
% || ||
|
|
||||||
% || The following packages have to be included before using this file: ||
|
|
||||||
% || amsmath ||
|
|
||||||
% || pgfplots ||
|
|
||||||
% || caption ||
|
|
||||||
% || listings ||
|
|
||||||
% ||====================================================================||
|
|
||||||
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
% Math Symbols %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
|
|
||||||
|
|
||||||
\DeclareMathOperator*{\argmin}{\arg\!\min}
|
|
||||||
\DeclareMathOperator*{\argmax}{\arg\!\max}
|
|
||||||
\DeclareMathOperator\sign{sign}
|
|
||||||
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
% Graphics & Plotting %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
|
|
||||||
|
|
||||||
%
|
|
||||||
% Filters for Pgfplots
|
|
||||||
% Source: https://tex.stackexchange.com/a/58563 (modified)
|
|
||||||
%
|
|
||||||
|
|
||||||
\pgfplotsset{
|
|
||||||
discard if/.style 2 args={
|
|
||||||
x filter/.append code={
|
|
||||||
\edef\tempa{\thisrow{#1}}
|
|
||||||
\edef\tempb{#2}
|
|
||||||
\ifx\tempa\tempb
|
|
||||||
\def\pgfmathresult{inf}
|
|
||||||
\fi
|
|
||||||
}
|
|
||||||
},
|
|
||||||
discard if not/.style 2 args={
|
|
||||||
x filter/.append code={
|
|
||||||
\edef\tempa{\thisrow{#1}}
|
|
||||||
\edef\tempb{#2}
|
|
||||||
\ifx\tempa\tempb
|
|
||||||
\else
|
|
||||||
\def\pgfmathresult{inf}
|
|
||||||
\fi
|
|
||||||
}
|
|
||||||
},
|
|
||||||
discard if gt/.style 2 args={
|
|
||||||
x filter/.append code={
|
|
||||||
\edef\tempa{\thisrow{#1}}
|
|
||||||
\edef\tempb{#2}
|
|
||||||
\ifdim\tempa pt > \tempb pt
|
|
||||||
\def\pgfmathresult{inf}
|
|
||||||
\fi
|
|
||||||
}
|
|
||||||
},
|
|
||||||
discard if lt/.style 2 args={
|
|
||||||
x filter/.append code={
|
|
||||||
\edef\tempa{\thisrow{#1}}
|
|
||||||
\edef\tempb{#2}
|
|
||||||
\ifdim\tempa pt < \tempb pt
|
|
||||||
\def\pgfmathresult{inf}
|
|
||||||
\fi
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
%
|
|
||||||
% Styles
|
|
||||||
%
|
|
||||||
|
|
||||||
|
|
||||||
\pgfplotsset{
|
|
||||||
fancy marks/.style={
|
|
||||||
% TODO
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
%
|
|
||||||
% Colors
|
|
||||||
%
|
|
||||||
|
|
||||||
\definecolor{kit-green100}{rgb}{0,.59,.51}
|
|
||||||
\definecolor{kit-green70}{rgb}{.3,.71,.65}
|
|
||||||
\definecolor{kit-green50}{rgb}{.50,.79,.75}
|
|
||||||
\definecolor{kit-green30}{rgb}{.69,.87,.85}
|
|
||||||
\definecolor{kit-green15}{rgb}{.85,.93,.93}
|
|
||||||
\definecolor{KITgreen}{rgb}{0,.59,.51}
|
|
||||||
|
|
||||||
\definecolor{KITpalegreen}{RGB}{130,190,60}
|
|
||||||
\colorlet{kit-maigreen100}{KITpalegreen}
|
|
||||||
\colorlet{kit-maigreen70}{KITpalegreen!70}
|
|
||||||
\colorlet{kit-maigreen50}{KITpalegreen!50}
|
|
||||||
\colorlet{kit-maigreen30}{KITpalegreen!30}
|
|
||||||
\colorlet{kit-maigreen15}{KITpalegreen!15}
|
|
||||||
|
|
||||||
\definecolor{KITblue}{rgb}{.27,.39,.66}
|
|
||||||
\definecolor{kit-blue100}{rgb}{.27,.39,.67}
|
|
||||||
\definecolor{kit-blue70}{rgb}{.49,.57,.76}
|
|
||||||
\definecolor{kit-blue50}{rgb}{.64,.69,.83}
|
|
||||||
\definecolor{kit-blue30}{rgb}{.78,.82,.9}
|
|
||||||
\definecolor{kit-blue15}{rgb}{.89,.91,.95}
|
|
||||||
|
|
||||||
\definecolor{KITyellow}{rgb}{.98,.89,0}
|
|
||||||
\definecolor{kit-yellow100}{cmyk}{0,.05,1,0}
|
|
||||||
\definecolor{kit-yellow70}{cmyk}{0,.035,.7,0}
|
|
||||||
\definecolor{kit-yellow50}{cmyk}{0,.025,.5,0}
|
|
||||||
\definecolor{kit-yellow30}{cmyk}{0,.015,.3,0}
|
|
||||||
\definecolor{kit-yellow15}{cmyk}{0,.0075,.15,0}
|
|
||||||
|
|
||||||
\definecolor{KITorange}{rgb}{.87,.60,.10}
|
|
||||||
\definecolor{kit-orange100}{cmyk}{0,.45,1,0}
|
|
||||||
\definecolor{kit-orange70}{cmyk}{0,.315,.7,0}
|
|
||||||
\definecolor{kit-orange50}{cmyk}{0,.225,.5,0}
|
|
||||||
\definecolor{kit-orange30}{cmyk}{0,.135,.3,0}
|
|
||||||
\definecolor{kit-orange15}{cmyk}{0,.0675,.15,0}
|
|
||||||
|
|
||||||
\definecolor{KITred}{rgb}{.63,.13,.13}
|
|
||||||
\definecolor{kit-red100}{cmyk}{.25,1,1,0}
|
|
||||||
\definecolor{kit-red70}{cmyk}{.175,.7,.7,0}
|
|
||||||
\definecolor{kit-red50}{cmyk}{.125,.5,.5,0}
|
|
||||||
\definecolor{kit-red30}{cmyk}{.075,.3,.3,0}
|
|
||||||
\definecolor{kit-red15}{cmyk}{.0375,.15,.15,0}
|
|
||||||
|
|
||||||
\definecolor{KITpurple}{RGB}{160,0,120}
|
|
||||||
\colorlet{kit-purple100}{KITpurple}
|
|
||||||
\colorlet{kit-purple70}{KITpurple!70}
|
|
||||||
\colorlet{kit-purple50}{KITpurple!50}
|
|
||||||
\colorlet{kit-purple30}{KITpurple!30}
|
|
||||||
\colorlet{kit-purple15}{KITpurple!15}
|
|
||||||
|
|
||||||
\definecolor{KITcyanblue}{RGB}{80,170,230}
|
|
||||||
\colorlet{kit-cyanblue100}{KITcyanblue}
|
|
||||||
\colorlet{kit-cyanblue70}{KITcyanblue!70}
|
|
||||||
\colorlet{kit-cyanblue50}{KITcyanblue!50}
|
|
||||||
\colorlet{kit-cyanblue30}{KITcyanblue!30}
|
|
||||||
\colorlet{kit-cyanblue15}{KITcyanblue!15}
|
|
||||||
|
|
||||||
%
|
|
||||||
% Color Schemes
|
|
||||||
%
|
|
||||||
|
|
||||||
% Define colormaps
|
|
||||||
|
|
||||||
\pgfplotsset{
|
|
||||||
colormap={mako}{
|
|
||||||
rgb=(0.18195582, 0.11955283, 0.23136943)
|
|
||||||
rgb=(0.25307401, 0.23772973, 0.48316271)
|
|
||||||
rgb=(0.21607792, 0.39736958, 0.61948028)
|
|
||||||
rgb=(0.20344718, 0.56074869, 0.65649508)
|
|
||||||
rgb=(0.25187832, 0.71827158, 0.67872193)
|
|
||||||
rgb=(0.54578602, 0.8544913, 0.69848331)
|
|
||||||
},
|
|
||||||
colormap={rocket}{
|
|
||||||
rgb=(0.20973515, 0.09747934, 0.24238489)
|
|
||||||
rgb=(0.43860848, 0.12177004, 0.34119475)
|
|
||||||
rgb=(0.67824099, 0.09192342, 0.3504148)
|
|
||||||
rgb=(0.8833417, 0.19830556, 0.26014181)
|
|
||||||
rgb=(0.95381595, 0.46373781, 0.31769923)
|
|
||||||
rgb=(0.96516917, 0.70776351, 0.5606593)
|
|
||||||
},
|
|
||||||
colormap={cividis}{
|
|
||||||
rgb=(0.130669, 0.231458, 0.43284)
|
|
||||||
rgb=(0.298421, 0.332247, 0.423973)
|
|
||||||
rgb=(0.42512, 0.431334, 0.447692)
|
|
||||||
rgb=(0.555393, 0.537807, 0.471147)
|
|
||||||
rgb=(0.695985, 0.648334, 0.440072)
|
|
||||||
rgb=(0.849223, 0.771947, 0.359729)
|
|
||||||
},
|
|
||||||
colormap={cel}{
|
|
||||||
color=(KITred!90!black);
|
|
||||||
color=(kit-blue100);
|
|
||||||
color=(kit-green70);
|
|
||||||
color=(kit-yellow70!80!kit-orange70);
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
% Define cycle lists
|
|
||||||
|
|
||||||
\pgfplotscreateplotcyclelist{mako}{%
|
|
||||||
[samples of colormap={4} of mako]%
|
|
||||||
}
|
|
||||||
\pgfplotscreateplotcyclelist{rocket}{%
|
|
||||||
[samples of colormap={4} of rocket]%
|
|
||||||
}
|
|
||||||
\pgfplotscreateplotcyclelist{cividis}{%
|
|
||||||
[samples of colormap={4} of cividis]%
|
|
||||||
}
|
|
||||||
\pgfplotscreateplotcyclelist{viridis}{%
|
|
||||||
[samples of colormap={4} of viridis]%
|
|
||||||
}
|
|
||||||
\pgfplotscreateplotcyclelist{cel}{%
|
|
||||||
[samples of colormap={4} of cel]%
|
|
||||||
}
|
|
||||||
|
|
||||||
% Define individual colors
|
|
||||||
|
|
||||||
\makeatletter
|
|
||||||
|
|
||||||
\def\extractcolormapcolor#1#2{%
|
|
||||||
\expandafter\pgfplotscolormapaccess\expandafter[\pgfplotspointmetatransformedrange]%
|
|
||||||
[1.0]%
|
|
||||||
{#2}%
|
|
||||||
{\pgfkeysvalueof{/pgfplots/colormap name}}%
|
|
||||||
\def\pgfplots@loc@TMPb{\pgfutil@definecolor{#1}{\csname pgfpl@cm@\pgfkeysvalueof{/pgfplots/colormap name}@colspace\endcsname}}%
|
|
||||||
\expandafter\pgfplots@loc@TMPb\expandafter{\pgfmathresult}%
|
|
||||||
}%
|
|
||||||
|
|
||||||
\def\getcolorbyvalue#1{
|
|
||||||
\csname pgfpl@cm@\pgfkeysvalueof{/pgfplots/colormap name}@colspace\endcsname
|
|
||||||
}
|
|
||||||
|
|
||||||
\makeatother
|
|
||||||
|
|
||||||
\def\setschemecolors{
|
|
||||||
\extractcolormapcolor{scol0}{0}
|
|
||||||
\extractcolormapcolor{scol1}{333}
|
|
||||||
\extractcolormapcolor{scol2}{666}
|
|
||||||
\extractcolormapcolor{scol3}{1000}
|
|
||||||
}
|
|
||||||
|
|
||||||
% Define color schemes
|
|
||||||
|
|
||||||
\pgfplotsset{
|
|
||||||
/pgfplots/colorscheme/mako/.style={
|
|
||||||
colormap name={mako},
|
|
||||||
cycle list name={mako},
|
|
||||||
/utils/exec={\setschemecolors},
|
|
||||||
},
|
|
||||||
/pgfplots/colorscheme/rocket/.style={
|
|
||||||
colormap name={rocket},
|
|
||||||
cycle list name={rocket},
|
|
||||||
/utils/exec={\setschemecolors},
|
|
||||||
},
|
|
||||||
/pgfplots/colorscheme/cividis/.style={
|
|
||||||
colormap name={cividis},
|
|
||||||
cycle list name={cividis},
|
|
||||||
/utils/exec={\setschemecolors},
|
|
||||||
},
|
|
||||||
/pgfplots/colorscheme/viridis/.style={
|
|
||||||
colormap name={viridis},
|
|
||||||
cycle list name={viridis},
|
|
||||||
/utils/exec={\setschemecolors},
|
|
||||||
},
|
|
||||||
/pgfplots/colorscheme/cel/.style={
|
|
||||||
colormap name={cel},
|
|
||||||
cycle list name={cel},
|
|
||||||
/utils/exec={\setschemecolors},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
7
dockerfiles/Dockerfile.alpine
Normal file
7
dockerfiles/Dockerfile.alpine
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
FROM alpine:3.19
|
||||||
|
|
||||||
|
RUN apk update && apk upgrade
|
||||||
|
RUN apk add make texlive texmf-dist-pictures
|
||||||
|
RUN apk add texmf-dist-publishers
|
||||||
|
RUN apk add texmf-dist-science
|
||||||
|
RUN apk add texmf-dist-fontsextra
|
||||||
9
dockerfiles/Dockerfile.archlinux
Normal file
9
dockerfiles/Dockerfile.archlinux
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
FROM archlinux:latest
|
||||||
|
|
||||||
|
RUN pacman-key --init
|
||||||
|
RUN pacman-key --populate archlinux
|
||||||
|
RUN pacman -Sy archlinux-keyring --noconfirm && pacman -Su --noconfirm
|
||||||
|
|
||||||
|
RUN pacman -Syu --noconfirm
|
||||||
|
RUN pacman -S make perl texlive texlive-binextra texlive-pictures --noconfirm
|
||||||
|
RUN pacman -S texlive-publishers texlive-mathscience texlive-fontsextra --noconfirm
|
||||||
7
dockerfiles/Dockerfile.ubuntu
Normal file
7
dockerfiles/Dockerfile.ubuntu
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
FROM ubuntu:22.04
|
||||||
|
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
RUN apt update -y && apt upgrade -y
|
||||||
|
RUN apt install make texlive latexmk texlive-pictures -y
|
||||||
|
RUN apt install make texlive-publishers texlive-science texlive-fonts-extra -y
|
||||||
182
letter.tex
182
letter.tex
@@ -1,32 +1,27 @@
|
|||||||
\documentclass[journal]{IEEEtran}
|
\documentclass[journal]{IEEEtran}
|
||||||
|
|
||||||
|
|
||||||
\usepackage{amsmath,amsfonts}
|
\usepackage{amsmath,amsfonts}
|
||||||
|
\usepackage{float}
|
||||||
\usepackage{algorithmic}
|
\usepackage{algorithmic}
|
||||||
\usepackage{algorithm}
|
\usepackage{algorithm}
|
||||||
\usepackage{array}
|
|
||||||
\usepackage[caption=false,font=normalsize,labelfont=sf,textfont=sf]{subfig}
|
|
||||||
\usepackage{textcomp}
|
|
||||||
\usepackage{stfloats}
|
|
||||||
\usepackage{url}
|
|
||||||
\usepackage{verbatim}
|
|
||||||
\usepackage{graphicx}
|
|
||||||
\usepackage{cite}
|
|
||||||
\usepackage[dvipsnames]{xcolor}
|
|
||||||
\usepackage{float}
|
|
||||||
\usepackage{tikz}
|
|
||||||
\usepackage{pgfplots}
|
|
||||||
\usetikzlibrary{spy, arrows.meta,arrows}
|
|
||||||
\pgfplotsset{compat=newest}
|
|
||||||
\usepgfplotslibrary{colormaps}
|
|
||||||
\usepackage{listings}
|
|
||||||
\usepackage{lipsum}
|
|
||||||
\usepackage{dsfont}
|
|
||||||
\usepackage{ulem}
|
|
||||||
\usepackage{siunitx}
|
\usepackage{siunitx}
|
||||||
|
\usepackage{dsfont}
|
||||||
|
|
||||||
|
\usepackage{tikz}
|
||||||
|
\usetikzlibrary{spy, arrows.meta,arrows}
|
||||||
|
|
||||||
|
\usepackage{pgfplots}
|
||||||
|
\pgfplotsset{compat=newest}
|
||||||
|
|
||||||
|
|
||||||
\hyphenation{op-tical net-works semi-conduc-tor IEEE-Xplore}
|
\hyphenation{op-tical net-works semi-conduc-tor IEEE-Xplore}
|
||||||
|
|
||||||
|
|
||||||
|
\newif\ifoverleaf
|
||||||
|
%\overleaftrue
|
||||||
|
|
||||||
|
|
||||||
%
|
%
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
% Inputs & Global Options
|
% Inputs & Global Options
|
||||||
@@ -34,10 +29,23 @@
|
|||||||
%
|
%
|
||||||
|
|
||||||
|
|
||||||
\input{common.tex}
|
\ifoverleaf
|
||||||
|
\input{common.tex}
|
||||||
|
\else
|
||||||
|
\usetikzlibrary{external}
|
||||||
|
\tikzexternalize[prefix=build/]
|
||||||
|
\input{lib/latex-common/common.tex}
|
||||||
|
\fi
|
||||||
|
|
||||||
|
|
||||||
\pgfplotsset{colorscheme/cel}
|
\pgfplotsset{colorscheme/cel}
|
||||||
|
|
||||||
|
% TODO
|
||||||
|
\pgfplotsset{fancy marks/.style={}}
|
||||||
|
|
||||||
|
\newcommand{\figwidth}{\columnwidth}
|
||||||
|
\newcommand{\figheight}{0.75\columnwidth}
|
||||||
|
|
||||||
|
|
||||||
%
|
%
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
@@ -257,8 +265,8 @@ function \cite{proximal_paper}
|
|||||||
The objective function is minimized using the proximal gradient method, which
|
The objective function is minimized using the proximal gradient method, which
|
||||||
amounts to iteratively performing two gradient-descent steps \cite{proximal_paper}
|
amounts to iteratively performing two gradient-descent steps \cite{proximal_paper}
|
||||||
with the given objective function and considering AWGN channels.
|
with the given objective function and considering AWGN channels.
|
||||||
To this end, two helper variables, $\boldsymbol{r}$ and $\boldsymbol{s}$, are introduced,
|
To this end, two helper variables, $\boldsymbol{r}$ and $\boldsymbol{s}$, are
|
||||||
describing the result of each of the two steps:
|
introduced, describing the result of each of the two steps:
|
||||||
%
|
%
|
||||||
\begin{alignat}{3}
|
\begin{alignat}{3}
|
||||||
\boldsymbol{r} &\leftarrow \boldsymbol{s}
|
\boldsymbol{r} &\leftarrow \boldsymbol{s}
|
||||||
@@ -277,7 +285,8 @@ stages of the decoding process.
|
|||||||
|
|
||||||
As the gradient of the code-constraint polynomial can attain very large values
|
As the gradient of the code-constraint polynomial can attain very large values
|
||||||
in some cases, an additional step is introduced to ensure numerical stability:
|
in some cases, an additional step is introduced to ensure numerical stability:
|
||||||
every current estimate $\boldsymbol{s}$ is projected onto $\left[-\eta, \eta\right]^n$ by a projection
|
every current estimate $\boldsymbol{s}$ is projected onto
|
||||||
|
$\left[-\eta, \eta\right]^n$ by a projection
|
||||||
$\Pi_\eta : \mathbb{R}^n \rightarrow \left[-\eta, \eta\right]^n$, where $\eta$
|
$\Pi_\eta : \mathbb{R}^n \rightarrow \left[-\eta, \eta\right]^n$, where $\eta$
|
||||||
is a positive constant slightly larger than one, e.g., $\eta = 1.5$.
|
is a positive constant slightly larger than one, e.g., $\eta = 1.5$.
|
||||||
The resulting decoding process as described in \cite{proximal_paper} is
|
The resulting decoding process as described in \cite{proximal_paper} is
|
||||||
@@ -329,52 +338,54 @@ explanation for this effect might be that during the decoding process convergenc
|
|||||||
on the final codeword is often not achieved, although the estimate is moving in
|
on the final codeword is often not achieved, although the estimate is moving in
|
||||||
the right general direction.
|
the right general direction.
|
||||||
This would suggest that most frame errors occur due to only a few incorrectly
|
This would suggest that most frame errors occur due to only a few incorrectly
|
||||||
decoded bits.
|
decoded bits.%
|
||||||
|
%
|
||||||
\pgfplotsset{
|
\begin{figure}[ht]
|
||||||
FERPlot/.style={
|
|
||||||
line width=1pt,
|
|
||||||
densely dashed,
|
|
||||||
mark=triangle,
|
|
||||||
fancy marks
|
|
||||||
},
|
|
||||||
BERPlot/.style={
|
|
||||||
line width=1pt,
|
|
||||||
mark=*,
|
|
||||||
fancy marks,
|
|
||||||
},
|
|
||||||
DFRPlot/.style={
|
|
||||||
only marks,
|
|
||||||
mark=square*,
|
|
||||||
fancy marks,
|
|
||||||
}}
|
|
||||||
|
|
||||||
\begin{figure}[h]
|
|
||||||
\centering
|
\centering
|
||||||
|
|
||||||
|
\pgfplotsset{
|
||||||
|
FERPlot/.style={
|
||||||
|
line width=1pt,
|
||||||
|
densely dashed,
|
||||||
|
mark=triangle,
|
||||||
|
fancy marks
|
||||||
|
},
|
||||||
|
BERPlot/.style={
|
||||||
|
line width=1pt,
|
||||||
|
mark=*,
|
||||||
|
fancy marks,
|
||||||
|
},
|
||||||
|
DFRPlot/.style={
|
||||||
|
only marks,
|
||||||
|
mark=square*,
|
||||||
|
fancy marks,
|
||||||
|
}}
|
||||||
|
|
||||||
\begin{tikzpicture}
|
\begin{tikzpicture}
|
||||||
\begin{axis}[
|
\begin{axis}[
|
||||||
grid=both,
|
grid=both,
|
||||||
xlabel={$E_\text{b} / N_0$ (dB)}, ylabel={},
|
xlabel={$E_\text{b} / N_0$ (dB)}, ylabel={},
|
||||||
ymode=log,
|
ymode=log,
|
||||||
ymax=1.5, ymin=2e-7,
|
xmin=1, xmax=8,
|
||||||
width=0.45\textwidth,
|
ymax=1, ymin=1e-6,
|
||||||
height=0.3375\textwidth,
|
% ytick={1e-0, 1e-2, 1e-4, 1e-6},
|
||||||
|
width=\figwidth,
|
||||||
|
height=\figheight,
|
||||||
legend pos = south west,
|
legend pos = south west,
|
||||||
]
|
]
|
||||||
\addplot+[FERPlot]
|
\addplot+[FERPlot, scol0]
|
||||||
table [x=SNR, y=FER, col sep=comma,
|
table [x=SNR, y=FER, col sep=comma,
|
||||||
discard if not={gamma}{0.05},
|
discard if not={gamma}{0.05},
|
||||||
discard if gt={SNR}{9}]
|
discard if gt={SNR}{9}]
|
||||||
{res/proximal_ber_fer_dfr_20433484.csv};
|
{res/proximal_ber_fer_dfr_20433484.csv};
|
||||||
\addlegendentry{FER}
|
\addlegendentry{FER}
|
||||||
\addplot+[DFRPlot]
|
\addplot+[DFRPlot, scol2]
|
||||||
table [x=SNR, y=DFR, col sep=comma,
|
table [x=SNR, y=DFR, col sep=comma,
|
||||||
discard if not={gamma}{0.05},
|
discard if not={gamma}{0.05},
|
||||||
discard if gt={SNR}{9}]
|
discard if gt={SNR}{9}]
|
||||||
{res/proximal_ber_fer_dfr_20433484.csv};
|
{res/proximal_ber_fer_dfr_20433484.csv};
|
||||||
\addlegendentry{DFR}
|
\addlegendentry{DFR}
|
||||||
\addplot+[BERPlot]
|
\addplot+[BERPlot, scol1]
|
||||||
table [x=SNR, y=BER, col sep=comma,
|
table [x=SNR, y=BER, col sep=comma,
|
||||||
discard if not={gamma}{0.05},
|
discard if not={gamma}{0.05},
|
||||||
discard if gt={SNR}{7.5}]
|
discard if gt={SNR}{7.5}]
|
||||||
@@ -420,8 +431,8 @@ optimization process.%
|
|||||||
xlabel={$\tilde{x}_1$},
|
xlabel={$\tilde{x}_1$},
|
||||||
ylabel={$\tilde{x}_2$},
|
ylabel={$\tilde{x}_2$},
|
||||||
y label style={at={(axis description cs:-0.06,0.5)},anchor=south},
|
y label style={at={(axis description cs:-0.06,0.5)},anchor=south},
|
||||||
width=0.45\textwidth,
|
width=\figwidth,
|
||||||
height=0.3375\textwidth,
|
height=\figheight,
|
||||||
grid=major, grid style={dotted},
|
grid=major, grid style={dotted},
|
||||||
view={0}{90}]
|
view={0}{90}]
|
||||||
\addplot3[point meta=\thisrow{grad_norm},
|
\addplot3[point meta=\thisrow{grad_norm},
|
||||||
@@ -442,8 +453,8 @@ optimization process.%
|
|||||||
table[col sep=comma] {res/2d_grad_L.csv};
|
table[col sep=comma] {res/2d_grad_L.csv};
|
||||||
\end{axis}
|
\end{axis}
|
||||||
\begin{axis}[hide axis,
|
\begin{axis}[hide axis,
|
||||||
width=0.45\textwidth,
|
width=\figwidth,
|
||||||
height=0.3375\textwidth,
|
height=\figheight,
|
||||||
xmin=10, xmax=50,
|
xmin=10, xmax=50,
|
||||||
ymin=0, ymax=0.4,
|
ymin=0, ymax=0.4,
|
||||||
legend style={draw=white!15!black,
|
legend style={draw=white!15!black,
|
||||||
@@ -463,8 +474,8 @@ optimization process.%
|
|||||||
\begin{tikzpicture}
|
\begin{tikzpicture}
|
||||||
\begin{axis}[xmin = -1.25, xmax=1.25,
|
\begin{axis}[xmin = -1.25, xmax=1.25,
|
||||||
ymin = -1.25, ymax=1.25,
|
ymin = -1.25, ymax=1.25,
|
||||||
width=0.45\textwidth,
|
width=\figwidth,
|
||||||
height=0.3375\textwidth,
|
height=\figheight,
|
||||||
xlabel={$\tilde{x}_1$},
|
xlabel={$\tilde{x}_1$},
|
||||||
ylabel={$\tilde{x}_2$},
|
ylabel={$\tilde{x}_2$},
|
||||||
y label style={at={(axis description cs:-0.06,0.5)},anchor=south},
|
y label style={at={(axis description cs:-0.06,0.5)},anchor=south},
|
||||||
@@ -488,8 +499,8 @@ optimization process.%
|
|||||||
table[col sep=comma] {res/2d_grad_h.csv};
|
table[col sep=comma] {res/2d_grad_h.csv};
|
||||||
\end{axis}
|
\end{axis}
|
||||||
\begin{axis}[hide axis,
|
\begin{axis}[hide axis,
|
||||||
width=0.45\textwidth,
|
width=\figwidth,
|
||||||
height=0.3375\textwidth,
|
height=\figheight,
|
||||||
xmin=10, xmax=50,
|
xmin=10, xmax=50,
|
||||||
ymin=0, ymax=0.4,
|
ymin=0, ymax=0.4,
|
||||||
legend style={draw=white!15!black,
|
legend style={draw=white!15!black,
|
||||||
@@ -517,8 +528,8 @@ Two qualities may be observed.
|
|||||||
First, the average values of the two gradients are equal, except for their sign,
|
First, the average values of the two gradients are equal, except for their sign,
|
||||||
leading to the aforementioned oscillation.
|
leading to the aforementioned oscillation.
|
||||||
Second, the gradient of the code constraint polynomial itself starts to
|
Second, the gradient of the code constraint polynomial itself starts to
|
||||||
oscillate after a certain number of iterations.
|
oscillate after a certain number of iterations.%
|
||||||
|
%
|
||||||
\begin{figure}[ht]
|
\begin{figure}[ht]
|
||||||
\centering
|
\centering
|
||||||
|
|
||||||
@@ -526,10 +537,13 @@ oscillate after a certain number of iterations.
|
|||||||
\begin{axis}[
|
\begin{axis}[
|
||||||
grid=both,
|
grid=both,
|
||||||
xlabel={Iterations},
|
xlabel={Iterations},
|
||||||
width=0.45\textwidth,
|
width=\figwidth,
|
||||||
height=0.3375\textwidth,
|
height=\figheight,
|
||||||
xtick={0, 100, ..., 400},
|
xtick={0, 100, ..., 400},
|
||||||
xticklabels={0, 50, ..., 200},
|
xticklabels={0, 50, ..., 200},
|
||||||
|
xmin=0, xmax=300,
|
||||||
|
ymin=-4, ymax=2,
|
||||||
|
ytick={-4,-3,...,2},
|
||||||
legend pos = south east,
|
legend pos = south east,
|
||||||
]
|
]
|
||||||
\addplot+ [mark=none, line width=1]
|
\addplot+ [mark=none, line width=1]
|
||||||
@@ -565,7 +579,8 @@ oscillate after a certain number of iterations.
|
|||||||
Considering the magnitude of oscillation of the gradient of the code constraint
|
Considering the magnitude of oscillation of the gradient of the code constraint
|
||||||
polynomial, some interesting behavior may be observed.
|
polynomial, some interesting behavior may be observed.
|
||||||
Figure \ref{fig:p_error} shows the probability that a component of the estimate
|
Figure \ref{fig:p_error} shows the probability that a component of the estimate
|
||||||
is wrong, determined through a Monte Carlo simulation, when the components of $\boldsymbol{c}$ are ordered from smallest to largest oscillation of
|
is wrong, determined through a Monte Carlo simulation, when the components of
|
||||||
|
$\boldsymbol{c}$ are ordered from smallest to largest oscillation of
|
||||||
$\left(\nabla h\right)_i$.
|
$\left(\nabla h\right)_i$.
|
||||||
|
|
||||||
The lower the magnitude of the oscillation, the higher the probability that the
|
The lower the magnitude of the oscillation, the higher the probability that the
|
||||||
@@ -582,8 +597,10 @@ the probability that a given component was decoded incorrectly.%
|
|||||||
ylabel=$P(\hat{c}_{i'} \ne c_{i'})$,
|
ylabel=$P(\hat{c}_{i'} \ne c_{i'})$,
|
||||||
xlabel=$i'$,
|
xlabel=$i'$,
|
||||||
ymode=log,
|
ymode=log,
|
||||||
width=0.45\textwidth,
|
ymin=1e-9,ymax=1e-5,
|
||||||
height=0.3375\textwidth,
|
xmin=0,xmax=200,
|
||||||
|
width=\figwidth,
|
||||||
|
height=\figheight,
|
||||||
]
|
]
|
||||||
\addplot+ [scol1, mark=none, line width=1]
|
\addplot+ [scol1, mark=none, line width=1]
|
||||||
table [col sep=comma, y=p_error]{res/p_error.csv};
|
table [col sep=comma, y=p_error]{res/p_error.csv};
|
||||||
@@ -651,15 +668,15 @@ generated and an ``ML-in-the-list'' step is performed.
|
|||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\section{Simulation Results \& Discussion}
|
\section{Simulation Results \& Discussion}
|
||||||
|
|
||||||
Figure \ref{fig:results} shows the FER and BER resulting from applying proximal
|
Figure \ref{fig:results} shows the FER and BER resulting from applying
|
||||||
decoding as presented in \cite{proximal_paper} and the improved algorithm
|
proximal decoding as presented in \cite{proximal_paper} and the improved
|
||||||
presented here when applied to a $\left( 3,6 \right)$-regular LDPC code with $n=204$ and
|
algorithm presented here when applied to a $\left( 3,6 \right)$-regular LDPC
|
||||||
$k=102$ \cite[204.33.484]{mackay}.
|
code with $n=204$ and $k=102$ \cite[204.33.484]{mackay}.
|
||||||
The parameters chosen for the simulation are
|
The parameters chosen for the simulation are
|
||||||
$\gamma = 0.05, \omega=0.05, \eta=1.5, K=200$.
|
$\gamma = 0.05, \omega=0.05, \eta=1.5, K=200$.
|
||||||
Again, these parameters were chosen,%
|
Again, these parameters were chosen,%
|
||||||
%
|
%
|
||||||
\begin{figure}[H]
|
\begin{figure}[ht]
|
||||||
\centering
|
\centering
|
||||||
|
|
||||||
\begin{tikzpicture}
|
\begin{tikzpicture}
|
||||||
@@ -681,13 +698,14 @@ Again, these parameters were chosen,%
|
|||||||
grid=both,
|
grid=both,
|
||||||
xlabel={$E_\text{b} / N_0$ (dB)},
|
xlabel={$E_\text{b} / N_0$ (dB)},
|
||||||
ymode=log,
|
ymode=log,
|
||||||
ymax=1.5, ymin=2e-7,
|
xmin=1, xmax=8,
|
||||||
width=0.45\textwidth,
|
ymax=1, ymin=1e-6,
|
||||||
height=0.3375\textwidth,
|
width=\figwidth,
|
||||||
|
height=\figheight,
|
||||||
legend columns=2,
|
legend columns=2,
|
||||||
legend style={draw=white!15!black,
|
legend style={draw=white!15!black,
|
||||||
legend cell align=left,
|
legend cell align=left,
|
||||||
at={(0.5,-0.5)},anchor=south}
|
at={(0.5,-0.44)},anchor=south}
|
||||||
]
|
]
|
||||||
|
|
||||||
\addplot+[ProxPlot, scol1]
|
\addplot+[ProxPlot, scol1]
|
||||||
@@ -756,15 +774,19 @@ Wadayama et al. \cite{proximal_paper} is introduced for AWGN channels.
|
|||||||
It relies on the fact that most errors observed in proximal decoding stem
|
It relies on the fact that most errors observed in proximal decoding stem
|
||||||
from only a few components of the estimate being wrong.
|
from only a few components of the estimate being wrong.
|
||||||
These few erroneous components can mostly be corrected by appending an
|
These few erroneous components can mostly be corrected by appending an
|
||||||
additional step to the original algorithm that is only executed if the algorithm has not converged.
|
additional step to the original algorithm that is only executed if the
|
||||||
|
algorithm has not converged.
|
||||||
A gain of up to $\sim\SI{1}{dB}$ can be observed, depending on the code,
|
A gain of up to $\sim\SI{1}{dB}$ can be observed, depending on the code,
|
||||||
the parameters considered, and the SNR.
|
the parameters considered, and the SNR.
|
||||||
|
|
||||||
While this work serves to introduce an approach to improve proximal decoding
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
by appending an ``ML-in-the-list'' step, the method used to detect the most
|
\section{Acknowledgements}
|
||||||
probably wrong components of the estimate is based mainly on empirical
|
|
||||||
observation and a more mathematically rigorous foundation for determining these
|
This work has received funding in part from the European Research Council
|
||||||
components could be beneficial.
|
(ERC) under the European Union’s Horizon 2020 research and innovation
|
||||||
|
programme (grant agreement No. 101001899) and in part from the German Federal
|
||||||
|
Ministry of Education and Research (BMBF) within the project Open6GHub
|
||||||
|
(grant agreement 16KISK010).
|
||||||
|
|
||||||
|
|
||||||
%
|
%
|
||||||
|
|||||||
1
lib/latex-common
Submodule
1
lib/latex-common
Submodule
Submodule lib/latex-common added at bded242752
29
localSettings.yaml
Normal file
29
localSettings.yaml
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
indentPreamble: 1
|
||||||
|
defaultIndent: ' '
|
||||||
|
maxNumberOfBackUps: 9
|
||||||
|
modifyLineBreaks:
|
||||||
|
preserveBlankLines: 1
|
||||||
|
condenseMultipleBlankLinesInto: 0
|
||||||
|
oneSentencePerLine:
|
||||||
|
manipulateSentences: 1
|
||||||
|
removeSentenceLineBreaks: 0
|
||||||
|
sentencesFollow:
|
||||||
|
par: 1
|
||||||
|
blankLine: 1
|
||||||
|
fullStop: 1
|
||||||
|
exclamationMark: 1
|
||||||
|
questionMark: 1
|
||||||
|
rightBrace: 1
|
||||||
|
commentOnPreviousLine: 1
|
||||||
|
other: 0
|
||||||
|
sentencesBeginWith:
|
||||||
|
A-Z: 1
|
||||||
|
a-z: 0
|
||||||
|
other: 0
|
||||||
|
sentencesEndWith:
|
||||||
|
basicFullStop: 0
|
||||||
|
betterFullStop: 1
|
||||||
|
exclamationMark: 1
|
||||||
|
questionMark: 1
|
||||||
|
other: '(?:\.\)(?!\h*[a-z]))|(?:(?<!(?:(?:e\.g)|(?:i\.e)|(?:etc))))\.(?!(?:[a-z]|[A-Z]|\-|\,|\.|[0-9]))'
|
||||||
|
|
||||||
Reference in New Issue
Block a user