diff --git a/.gitignore b/.gitignore
index 30753e7d..3590c162 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,6 +33,7 @@ tests/build/
utils/regression_test.js
node_modules/
+venv/
.doctrees/
figure-generating-scripts/fm_rds_250k_1Msamples.iq?raw=true
@@ -41,4 +42,4 @@ figure-generating-scripts/fm_rds_250k_1Msamples.iq
figure-generating-scripts/fm.wav
_templates/patrons.html
_spelling/
-Radar-2025-Labs/
\ No newline at end of file
+Radar-2025-Labs/
diff --git a/Makefile b/Makefile
index cb639aa2..482163f2 100644
--- a/Makefile
+++ b/Makefile
@@ -74,6 +74,13 @@ html:
sed -i 's/value="Go"/value="Search"/g' $(BUILDDIR)/*/*.html
@echo file://wsl.localhost/Ubuntu-22.04-New/home/marc/PySDR/_build/index.html
+.PHONY: html-de
+html-de:
+ $(SPHINXBUILD) -b html -D project="Ein Guide zu SDR und DSV mit Python" -D exclude_patterns=_build,index.rst,content/*,index-nl.rst,content-nl/*,index-fr.rst,content-fr/*,index-ukraine.rst,content-ukraine/*,index-zh.rst,content-zh/*,index-ja.rst,content-ja/* -D master_doc=index-de $(EXTENSIONS) . $(BUILDDIR)/de/
+ @echo
+ @echo "German Build finished. The HTML pages are in $(BUILDDIR)/de/html."
+
+
.PHONY: html-es
html-es:
$(SPHINXBUILD) -b html -D project="PySDR: Guia de uso para SDR/DSP con Python" -D exclude_patterns=_build,index.rst,content/*,index-nl.rst,content-nl/*,index-fr.rst,content-fr/*,index-ukraine.rst,content-ukraine/*,index-zh.rst,content-zh/*,index-ja.rst,content-ja/* -D master_doc=index-es $(EXTENSIONS) . $(BUILDDIR)/es/
diff --git a/README.md b/README.md
index a7130685..9e43f341 100644
--- a/README.md
+++ b/README.md
@@ -4,19 +4,19 @@
-[PySDR: A Guide to SDR and DSP using Python](https://pysdr.org) is a guide to software-defined radio (SDR) and RF signal processing using Python code examples, live at https://pysdr.org. It is a free online textbook that provides a gentle introduction to wireless communications and SDR using an abundance of diagrams, animations, and code examples. From FFTs to filters to digital modulation to receiving and transmitting from SDRs in Python, PySDR has you covered! This repo specifically contains the source content used to generate the textbook, including the body text and Python scripts to generate the figures. For questions/comments/suggestions feel free to submit an issue at the top of this page, or if you want to propose a change to the textbook (e.g. fix or improvement), you can use a Pull Request. Those who submit valuable feedback/fixes be permanently added to the acknowledgments section. Not good at Git but have changes to suggest? Feel free to email Marc at marc@pysdr.org.
+[PySDR: Ein Leitfaden zu SDR und DSP mit Python](https://pysdr.org) ist ein Leitfaden zur softwaredefinierten Funktechnik (SDR) und HF-Signalverarbeitung mit Python-Codebeispielen, verfügbar unter https://pysdr.org. Es handelt sich um ein kostenloses Online-Lehrbuch, das eine sanfte Einführung in drahtlose Kommunikation und SDR bietet – mit zahlreichen Diagrammen, Animationen und Codebeispielen. Von FFTs über Filter bis hin zu digitaler Modulation sowie dem Empfangen und Senden über SDRs in Python – PySDR hat alles abgedeckt! Dieses Repository enthält speziell den Quellinhalt zur Generierung des Lehrbuchs, einschließlich des Haupttexts und der Python-Skripte zur Erzeugung der Abbildungen. Bei Fragen, Anmerkungen oder Vorschlägen können Sie oben auf dieser Seite ein Issue einreichen. Wenn Sie eine Änderung am Lehrbuch vorschlagen möchten (z. B. eine Korrektur oder Verbesserung), können Sie einen Pull Request verwenden. Wer wertvolles Feedback oder Korrekturen einreicht, wird dauerhaft im Danksagungsabschnitt aufgeführt. Nicht vertraut mit Git, aber Änderungen vorschlagen? Schreiben Sie Marc gerne eine E-Mail an marc@pysdr.org.
-You can also support PySDR through the [PySDR Patreon page](https://www.patreon.com/c/PySDR) or a [one-time donation](https://www.paypal.com/donate/?hosted_button_id=FH3LQCJRUVPWL).
+Sie können PySDR auch über die [PySDR Patreon-Seite](https://www.patreon.com/c/PySDR) oder eine [Einmalspende](https://www.paypal.com/donate/?hosted_button_id=FH3LQCJRUVPWL) unterstützen.
-## Building
+## Erstellen
-Note that the website is now automatically built and deployed with each push/merge into master branch, using the GitHub action [build-and-deploy.yml](https://github.com/777arc/PySDR/blob/master/.github/workflows/build-and-deploy.yml) and the GitHub pages system for hosting the actual textbook.
+Die Website wird nun bei jedem Push/Merge in den Master-Branch automatisch erstellt und bereitgestellt, mithilfe der GitHub-Aktion [build-and-deploy.yml](https://github.com/777arc/PySDR/blob/master/.github/workflows/build-and-deploy.yml) und dem GitHub Pages-System zum Hosten des eigentlichen Lehrbuchs.
-For testing changes to the textbook locally, you can build using the following steps:
+Um Änderungen am Lehrbuch lokal zu testen, kann mit folgenden Schritten gebaut werden:
### Ubuntu/Debian
-Look at `.github/workflows/build-and-deploy.yml` and run the apt/pip installs, then:
+Schauen Sie sich `.github/workflows/build-and-deploy.yml` an und führen Sie die apt/pip-Installationen aus, dann:
```bash
make html
@@ -27,35 +27,36 @@ make html-zh
make html-ja
```
-In _build there should be an index.html that represents the main page of the English site
+In `_build` sollte eine `index.html` vorhanden sein, die die Hauptseite der englischen Website darstellt.
-Note: on one machine I had to add `~/.local/bin` to PATH
+Hinweis: Auf einem Rechner musste ich `~/.local/bin` zum PATH hinzufügen.
### Windows
-Install pre-requisite software with:
+Installieren Sie die erforderliche Software wie folgt:
-1. From the Microsoft Store install Python 3.10 (3.8-3.12 is fine too if you already have it installed).
-1. In a PowerShell terminal (click start menu then type powershell, or open a terminal in VSCode) run `pip install sphinx sphinxcontrib-tikz patreon setuptools`
-1. `cd` to the directory you cloned PySDR
+1. Installieren Sie Python 3.10 aus dem Microsoft Store (3.8–3.12 ist ebenfalls in Ordnung, falls bereits installiert).
+1. Führen Sie in einem PowerShell-Terminal (Startmenü öffnen, dann „powershell" eingeben, oder ein Terminal in VSCode öffnen) den Befehl `pip install sphinx sphinxcontrib-tikz patreon setuptools` aus.
+1. Wechseln Sie mit `cd` in das Verzeichnis, in das Sie PySDR geklont haben.
-Build the English version only using:
+Erstellen Sie nur die englische Version mit:
```
python -m sphinx.cmd.build -b html . _build
```
-The first time running this it might take a while because it has to download LaTeX packages.
+Beim ersten Ausführen kann dies etwas länger dauern, da LaTeX-Pakete heruntergeladen werden müssen.
+
+Testen Sie den JavaScript-Teil mit folgendem Befehl, um CORS-Fehler zu vermeiden:
-Test the javascript part with the following to avoid CORS errors:
```
cd _build
python -m http.server
```
-## Creating a PDF Export
+## PDF-Export erstellen
-Not fully working yet due to animated gifs, they all need to be removed for this to not error out:
+Noch nicht vollständig funktionsfähig aufgrund animierter GIFs – diese müssen alle entfernt werden, damit kein Fehler auftritt:
```
sudo apt-get install -y latexmk
@@ -63,15 +64,15 @@ sphinx-build -b latex . _build/latex
make latexpdf
```
-## Misc
+## Sonstiges
-Ideas for future chapters:
+Ideen für zukünftige Kapitel:
-* Equalization, would be the last step needed to finish the end-to-end communications link
-* OFDM, simulating OFDM and CP, show via Python how it turns freq selective fading into flat fading
-* How to create real-time SDR apps with GUIs in Python using pyqt and pyqtgraph, or even just matplotlib with updating
-* Python code that lets the Pluto (or RTL-SDR) act as an FM receiver, like with sound output
-* End-to-end example that shows how to detect start of packet and other concepts not covered in RDS chapter
-* Intro to radar
+* Entzerrung – wäre der letzte fehlende Schritt zum Abschluss der Ende-zu-Ende-Kommunikationsstrecke
+* OFDM – Simulation von OFDM und CP, Darstellung per Python, wie frequenzselektives Fading in flaches Fading umgewandelt wird
+* Erstellung von Echtzeit-SDR-Anwendungen mit GUIs in Python mithilfe von pyqt und pyqtgraph oder sogar mit aktualisierendem matplotlib
+* Python-Code, der den Pluto (oder RTL-SDR) als UKW-Empfänger mit Audioausgabe betreibt
+* End-to-End-Beispiel, das zeigt, wie der Paketanfang erkannt wird und andere Konzepte, die im RDS-Kapitel nicht behandelt werden
+* Einführung in Radar
- This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 Unported License .
+ Dieses Werk ist lizenziert unter einer Creative Commons Namensnennung-NichtKommerziell-WeitergebeUnterGleichenBedingungen 4.0 International Lizenz .
diff --git a/_images_de/2d_array_2d_doa_plot.svg b/_images_de/2d_array_2d_doa_plot.svg
new file mode 100644
index 00000000..55a72744
--- /dev/null
+++ b/_images_de/2d_array_2d_doa_plot.svg
@@ -0,0 +1,1005 @@
+
+
+
+
+
+
+
+ 2025-06-20T02:09:40.562096
+ image/svg+xml
+
+
+ Matplotlib v3.10.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Theta (Azimut, Grad)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Phi (Elevation, Grad)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leistung [linear]
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/2d_array_3d_doa_plot.png b/_images_de/2d_array_3d_doa_plot.png
new file mode 100644
index 00000000..b964c6f6
Binary files /dev/null and b/_images_de/2d_array_3d_doa_plot.png differ
diff --git a/_images_de/2d_array_eigenvalues.svg b/_images_de/2d_array_eigenvalues.svg
new file mode 100644
index 00000000..b5d092e0
--- /dev/null
+++ b/_images_de/2d_array_eigenvalues.svg
@@ -0,0 +1,766 @@
+
+
+
+
+
+
+
+ 2025-06-20T02:09:33.187766
+ image/svg+xml
+
+
+ Matplotlib v3.10.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Eigenwert [dB]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/2d_array_element_positions.svg b/_images_de/2d_array_element_positions.svg
new file mode 100644
index 00000000..d2c8f6c1
--- /dev/null
+++ b/_images_de/2d_array_element_positions.svg
@@ -0,0 +1,1187 @@
+
+
+
+
+
+
+
+ 2025-06-20T02:09:31.822119
+ image/svg+xml
+
+
+ Matplotlib v3.10.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ X-Position [m]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Y-Position [m]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Z-Position [m]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/2d_beamforming_2dplot.svg b/_images_de/2d_beamforming_2dplot.svg
new file mode 100644
index 00000000..55f94964
--- /dev/null
+++ b/_images_de/2d_beamforming_2dplot.svg
@@ -0,0 +1,688 @@
+
+
+
+
+
+
+
+ 2025-09-29T11:46:51.866441
+ image/svg+xml
+
+
+ Matplotlib v3.10.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Azimutwinkel [Grad]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Elevationswinkel [Grad]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leistung [linear]
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/2d_beamforming_element_pos.svg b/_images_de/2d_beamforming_element_pos.svg
new file mode 100644
index 00000000..a6533b64
--- /dev/null
+++ b/_images_de/2d_beamforming_element_pos.svg
@@ -0,0 +1,534 @@
+
+
+
+
+
+
+
+ 2025-06-20T03:29:09.142490
+ image/svg+xml
+
+
+ Matplotlib v3.10.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ X-Position [m]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Z-Position [m]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/2d_beamforming_ula.svg b/_images_de/2d_beamforming_ula.svg
new file mode 100644
index 00000000..0eee40dc
--- /dev/null
+++ b/_images_de/2d_beamforming_ula.svg
@@ -0,0 +1,520 @@
+
+
+
+
+
+
+
+ 2025-06-20T03:22:53.742152
+ image/svg+xml
+
+
+ Matplotlib v3.10.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ X-Position [m]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Y-Position [m]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Theta (20 Grad)
+
+
+
+
+
+
+
+
diff --git a/_images_de/64qam.png b/_images_de/64qam.png
new file mode 100644
index 00000000..f731ba55
Binary files /dev/null and b/_images_de/64qam.png differ
diff --git a/_images_de/ASK.svg b/_images_de/ASK.svg
new file mode 100644
index 00000000..ba9b9c06
--- /dev/null
+++ b/_images_de/ASK.svg
@@ -0,0 +1,2007 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Unsere Daten
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zeit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Drahtloses Signal
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/AntSDR.png b/_images_de/AntSDR.png
new file mode 100644
index 00000000..8bbaa6f6
Binary files /dev/null and b/_images_de/AntSDR.png differ
diff --git a/_images_de/AntSDR_Comparison.jpg b/_images_de/AntSDR_Comparison.jpg
new file mode 100644
index 00000000..54a2b9c6
Binary files /dev/null and b/_images_de/AntSDR_Comparison.jpg differ
diff --git a/_images_de/AntSDR_E200_block_diagram.png b/_images_de/AntSDR_E200_block_diagram.png
new file mode 100644
index 00000000..9c79bfa7
Binary files /dev/null and b/_images_de/AntSDR_E200_block_diagram.png differ
diff --git a/_images_de/AntSDR_E310.png b/_images_de/AntSDR_E310.png
new file mode 100644
index 00000000..1f0fc1a8
Binary files /dev/null and b/_images_de/AntSDR_E310.png differ
diff --git a/_images_de/Costas_loop_model.svg b/_images_de/Costas_loop_model.svg
new file mode 100644
index 00000000..d1e986f6
--- /dev/null
+++ b/_images_de/Costas_loop_model.svg
@@ -0,0 +1,425 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ φ(t)
+
+
+u(t) = m(t)sin(ωt)
+data m(t)
+
+
+
+
+
+
+
+
+
+
+
+
+cos( ωt)
+sin( ωt)
+g(t)
+m
+(t)
+2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/_images_de/DOA_with_training.svg b/_images_de/DOA_with_training.svg
new file mode 100644
index 00000000..b3f8fa08
--- /dev/null
+++ b/_images_de/DOA_with_training.svg
@@ -0,0 +1,1013 @@
+
+
+
+
+
+
+
+ 2024-05-03T21:52:08.046720
+ image/svg+xml
+
+
+ Matplotlib v3.8.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Winkel [Grad]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Betrag [dB]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Strahlmuster und DOA-Ergebnisse, mit Training
+
+
+
+
+
+
+
+
diff --git a/_images_de/DOA_without_training.svg b/_images_de/DOA_without_training.svg
new file mode 100644
index 00000000..3251a4bd
--- /dev/null
+++ b/_images_de/DOA_without_training.svg
@@ -0,0 +1,724 @@
+
+
+
+
+
+
+
+ 2024-05-03T21:33:04.215987
+ image/svg+xml
+
+
+ Matplotlib v3.8.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Winkel [Grad]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Betrag [dB]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A
+ B
+ C
+
diff --git a/_images_de/DOA_without_training_pattern.svg b/_images_de/DOA_without_training_pattern.svg
new file mode 100644
index 00000000..9727dfc7
--- /dev/null
+++ b/_images_de/DOA_without_training_pattern.svg
@@ -0,0 +1,1022 @@
+
+
+
+
+
+
+
+ 2024-05-03T21:41:46.411092
+ image/svg+xml
+
+
+ Matplotlib v3.8.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Winkel [Grad]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Betrag [dB]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Strahlmuster und DOA-Ergebnisse, ohne Training
+
+
+
+
+
+
+
+
diff --git a/_images_de/FIR_IIR.png b/_images_de/FIR_IIR.png
new file mode 100644
index 00000000..a4060ac3
Binary files /dev/null and b/_images_de/FIR_IIR.png differ
diff --git a/_images_de/IQ3.gif b/_images_de/IQ3.gif
new file mode 100644
index 00000000..ca44078f
Binary files /dev/null and b/_images_de/IQ3.gif differ
diff --git a/_images_de/IQEngine_from_Maia.png b/_images_de/IQEngine_from_Maia.png
new file mode 100644
index 00000000..0afa1057
Binary files /dev/null and b/_images_de/IQEngine_from_Maia.png differ
diff --git a/_images_de/IQ_diagram.png b/_images_de/IQ_diagram.png
new file mode 100644
index 00000000..378fb551
Binary files /dev/null and b/_images_de/IQ_diagram.png differ
diff --git a/_images_de/IQ_diagram_rx.png b/_images_de/IQ_diagram_rx.png
new file mode 100644
index 00000000..1fbc15cc
Binary files /dev/null and b/_images_de/IQ_diagram_rx.png differ
diff --git a/_images_de/IQ_wave.png b/_images_de/IQ_wave.png
new file mode 100644
index 00000000..9db7eb19
Binary files /dev/null and b/_images_de/IQ_wave.png differ
diff --git a/_images_de/Maia.png b/_images_de/Maia.png
new file mode 100644
index 00000000..7602f359
Binary files /dev/null and b/_images_de/Maia.png differ
diff --git a/_images_de/SNR.png b/_images_de/SNR.png
new file mode 100644
index 00000000..a18ca638
Binary files /dev/null and b/_images_de/SNR.png differ
diff --git a/_images_de/SNR2.png b/_images_de/SNR2.png
new file mode 100644
index 00000000..2ce11535
Binary files /dev/null and b/_images_de/SNR2.png differ
diff --git a/_images_de/Spherical_Coordinates.svg b/_images_de/Spherical_Coordinates.svg
new file mode 100644
index 00000000..870f4295
--- /dev/null
+++ b/_images_de/Spherical_Coordinates.svg
@@ -0,0 +1,421 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ θ
+ (Azimut)
+ ϕ
+ (Elevation)
+
+ x
+
+
+ x
+
+
+ y
+
+ -
+ +
+ 0°
+ -90°
+ +
+ -
+ +
+ +
+ +90°
+ 0°
+ +90°
+
+ z
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/ad9361.svg b/_images_de/ad9361.svg
new file mode 100644
index 00000000..ebdc7f53
--- /dev/null
+++ b/_images_de/ad9361.svg
@@ -0,0 +1,5138 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RxA
+ RxB
+ RxC
+
+
+
+
+
+
+
+ Basisband
+
+ GPO
+ Empfangskanal 1
+ Empfangskanal 2
+
+ 12-bit
+
+
+
+
+
+
+
+
+
+ Sendekanal 1
+ Sendekanal 2
+
+ SPI
+
+ Reset
+
+ CTRL
+
+
+
+ DIV
+
+
+
+
+
+ Tx Mon
+
+
+
+ Sheet.256
+
+
+
+
+
+
+
+
+
+ Kalibrierung und Korrektur
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 70MHz - 6GHz
+
+ Tx
+ Rx
+
+
+
+
+ Ch1 I/Q
+ Ch2 I/Q
+ Ch1 I/Q
+ Ch2 I/Q
+
+
+ Temperatur Sensor
+
+
+ Sheet.256
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sheet.256
+
+
+
+
+
+
+ 70MHz - 6GHz
+ Rx
+ Tx
+
+ DIV
+
+ DIV
+
+
+
+
+
+
+
+
+
+
+ Rx 61.44 MSPS
+
+ Zustandsmaschine
+
+
+
+
+
+
+
+ TxA
+
+
+
+
+ TxB
+
+
+
+
+
+
+
+ AD9361
+
+
+ DIV
+
+
+
+
+ GND
+
+
+
+
+
+
+
+
+
+
+
+ Dual 10-bit
+
+
+
+
+
+ Automatische Verstärkung Control
+ □ Manual □ Slow □ Fast
+
+
+
+
+
+
+
+
+
+ 25 - 640 MSPS
+
+
+ FIR
+
+ HB2
+
+ HB1
+
+
+ GAIN
+
+ HB3
+ I
+
+
+
+
+
+
+
+
+
+
+
+
+ ADC
+
+
+
+
+
+
+ HF-Kanalbandbreite
+ 200kHz - 56MHz (I/Q)
+ ÷1 ÷2 ÷3
+ ÷1 ÷2
+ ÷1 ÷2
+ ÷1 ÷2 ÷4
+
+
+
+
+
+
+
+
+
+
+
+
+ FIR
+
+ HB2
+
+ HB1
+
+
+ GAIN
+
+ HB3
+ Q
+
+
+
+
+
+
+
+
+
+
+ ADC
+
+
+ Phase Teiler
+
+ Sheet.256
+
+
+
+
+
+
+ Rx
+ Tx
+
+
+
+
+ Empfänger-Dezimation Digitale Filterung und Entzerrung
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HF-Kanalbandbreite
+ Sender-Interpolation Digitale Filterung und Entzerrung
+ 200kHz - 56MHz (I/Q)
+ 1x 2x 3x
+ 1x 2x
+ 1x 2x
+ 1x 2x 4 x
+ I
+ Q
+
+
+ FIR
+
+ HB1
+
+ HB2
+
+ HB3
+
+ DAC
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Phase Teiler
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 320 MSPS
+
+
+ FIR
+
+ HB1
+
+ HB2
+
+ HB3
+
+ DAC
+
+
+
+ Sheet.256
+
+
+
+
+
+
+
+ Eingangs-Mux
+
+ AUX DAC
+
+ AUX ADC
+
+ LNA
+ TIA
+ TIA
+ ATTN
+
+ Sheet.256
+
+
+
+
+
+
+ Ausgangs-Mux
+
+
+
+
+
+
+
+
+
+ Sheet.256
+
+
+
+
+
+
+
+
+ CMOS / LVDS INTERFACE
+
+
+
+
+
+ Tx 61.44 MSPS
+
+
+ LOOP BACK
+
+ PN & BIST
+
+ Sheet.256
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 715 MHz - 1430 MHz
+
+ DCXO
+
+
+ VDD_GPO
+ VDD_INTERFACE
+ VDD_MAIN
+ RX2A_P, RX2A_N RX1A_P, RX1A_N
+ RX2B_P, RX2B_N RX1B_P, RX1B_N
+ RX2C_P, RX2C_N RX1C_P, RX1C_N
+ TXMON2
+ TXMON1
+ RXLO
+ TXLO
+ SPI
+ CTRL
+ AUXDAC1 AUXDAC2
+ TX2A_P, TX2A_N TX1A_P, TX1A_N
+ TX2B_P, TX2B_N TX1B_P, TX1B_N
+ AUXADC
+ XTALP
+ XTALN
+ RADIO SWITCHING
+ RESETB
+ P0_[D11:D0]/ TX_[D5:D0] P1_[D11:D0]/ RX_[D5:D0]
+ GND
+ 1.8 - 3.3V
+ 1.2V - 2.5V
+ 1.3 V
+
+
diff --git a/_images_de/adaptive_mcs.svg b/_images_de/adaptive_mcs.svg
new file mode 100644
index 00000000..d34f44f7
--- /dev/null
+++ b/_images_de/adaptive_mcs.svg
@@ -0,0 +1 @@
+64QAM16QAM QPSK
\ No newline at end of file
diff --git a/_images_de/adaptive_mcs2.svg b/_images_de/adaptive_mcs2.svg
new file mode 100644
index 00000000..4a6457c1
--- /dev/null
+++ b/_images_de/adaptive_mcs2.svg
@@ -0,0 +1,219 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Durchsatt
+
+
+ SNRQPSK
+8PSK
+16QAM
+64QAM
+
+
+
+
+
+ Verwendetes Modulationsschema
+
+
+
+
+
+
+
+
+ 64QAM16QAM
+8PSK
+QPSK
+
+
+
+
diff --git a/_images_de/adi-adalm-pluto-diagram-large.jpg b/_images_de/adi-adalm-pluto-diagram-large.jpg
new file mode 100644
index 00000000..77bdf94d
Binary files /dev/null and b/_images_de/adi-adalm-pluto-diagram-large.jpg differ
diff --git a/_images_de/adsb.jpg b/_images_de/adsb.jpg
new file mode 100644
index 00000000..22e107a1
Binary files /dev/null and b/_images_de/adsb.jpg differ
diff --git a/_images_de/am_fm_animation.gif b/_images_de/am_fm_animation.gif
new file mode 100644
index 00000000..f97e07e5
Binary files /dev/null and b/_images_de/am_fm_animation.gif differ
diff --git a/_images_de/amplitude_phase_period.svg b/_images_de/amplitude_phase_period.svg
new file mode 100644
index 00000000..b901b6de
--- /dev/null
+++ b/_images_de/amplitude_phase_period.svg
@@ -0,0 +1,596 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Periode (1/Frequenz)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/analog_digital_filter.png b/_images_de/analog_digital_filter.png
new file mode 100644
index 00000000..a93616df
Binary files /dev/null and b/_images_de/analog_digital_filter.png differ
diff --git a/_images_de/analog_digital_filter_nolabel.png b/_images_de/analog_digital_filter_nolabel.png
new file mode 100644
index 00000000..684e34c9
Binary files /dev/null and b/_images_de/analog_digital_filter_nolabel.png differ
diff --git a/_images_de/antenna_gain_patterns.png b/_images_de/antenna_gain_patterns.png
new file mode 100644
index 00000000..22cda829
Binary files /dev/null and b/_images_de/antenna_gain_patterns.png differ
diff --git a/_images_de/antenna_steering.png b/_images_de/antenna_steering.png
new file mode 100644
index 00000000..a1fa085b
Binary files /dev/null and b/_images_de/antenna_steering.png differ
diff --git a/_images_de/ask2.svg b/_images_de/ask2.svg
new file mode 100644
index 00000000..d5ea534e
--- /dev/null
+++ b/_images_de/ask2.svg
@@ -0,0 +1,1416 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zeit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/ask3.svg b/_images_de/ask3.svg
new file mode 100644
index 00000000..aaaefb16
--- /dev/null
+++ b/_images_de/ask3.svg
@@ -0,0 +1,1616 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Unsere Daten
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zeit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Drahtloses Signal
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/ask_set.png b/_images_de/ask_set.png
new file mode 100644
index 00000000..322baef8
Binary files /dev/null and b/_images_de/ask_set.png differ
diff --git a/_images_de/atmospheric_attenuation.svg b/_images_de/atmospheric_attenuation.svg
new file mode 100644
index 00000000..6761ebf1
--- /dev/null
+++ b/_images_de/atmospheric_attenuation.svg
@@ -0,0 +1,1498 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+ 10
+
+
+ 100
+
+
+ Frequenz [GHz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.001
+
+
+ 0.01
+
+
+ 0.1
+
+
+ 1
+
+
+ 10
+
+
+ 100
+
+
+ 1000
+
+
+ Dämpfung [dB / km]
+
+
+
+
+ H
+
+
+ 2
+
+
+ O
+
+
+
+
+
+
+
+
+
+
+
+
+ O
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+ O
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+ H
+
+
+ 2
+
+
+ O
+
+
+
+
+
+
+
+
+
+
+
+
+ H
+
+
+ 2
+
+
+ O
+
+
+
+
+
+
+
+
+
+ 2
+
+
+ 3
+
+
+ 4
+
+
+ 5
+
+
+ 6
+
+
+ 7
+
+ 20
+ 30
+ 40
+ 50
+ 200
+ 300
+
diff --git a/_images_de/audio_equalizer.webp b/_images_de/audio_equalizer.webp
new file mode 100644
index 00000000..7a30df01
Binary files /dev/null and b/_images_de/audio_equalizer.webp differ
diff --git a/_images_de/bandpass_filter_freq.svg b/_images_de/bandpass_filter_freq.svg
new file mode 100644
index 00000000..df4bdc6d
--- /dev/null
+++ b/_images_de/bandpass_filter_freq.svg
@@ -0,0 +1,522 @@
+
+
+
+
+
+
+
+ 2022-02-22T01:21:16.475065
+ image/svg+xml
+
+
+ Matplotlib v3.5.1, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [kHz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenzgang des Filters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/bandpass_filter_taps.svg b/_images_de/bandpass_filter_taps.svg
new file mode 100644
index 00000000..4cf6c410
--- /dev/null
+++ b/_images_de/bandpass_filter_taps.svg
@@ -0,0 +1,4536 @@
+
+
+
+
+
+
+
+ 2022-02-22T01:20:57.728303
+ image/svg+xml
+
+
+ Matplotlib v3.5.1, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sample
+ Koeffizienten
+
diff --git a/_images_de/barker-code.svg b/_images_de/barker-code.svg
new file mode 100644
index 00000000..99061d29
--- /dev/null
+++ b/_images_de/barker-code.svg
@@ -0,0 +1,521 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/baseband_bandpass.png b/_images_de/baseband_bandpass.png
new file mode 100644
index 00000000..9c3354b9
Binary files /dev/null and b/_images_de/baseband_bandpass.png differ
diff --git a/_images_de/beamforming_examples.svg b/_images_de/beamforming_examples.svg
new file mode 100644
index 00000000..8070eb72
--- /dev/null
+++ b/_images_de/beamforming_examples.svg
@@ -0,0 +1 @@
+ELM - 2084 Israeli Multi - Mission Radar (AESA/ Fully Digital Array) ~2005 Raytheon’s MIM - 104 Patriot Radar (PESA/Analog/Traditional Array) ~1969 Starlink User Terminal, aka “Dishy” (Hybrid Array) ~2022 Subarray
\ No newline at end of file
diff --git a/_images_de/beamforming_taxonomy.svg b/_images_de/beamforming_taxonomy.svg
new file mode 100644
index 00000000..d9c6fadf
--- /dev/null
+++ b/_images_de/beamforming_taxonomy.svg
@@ -0,0 +1 @@
+Konventioneller Strahlformer (auch: Delay-and-Sum) MVDR Capon DMI/SMI Frost RLS LMS OLS BSS Techniques ICA based Constant Modulus Geschaltete Strahlung (aka Blass/Butler Matrix, primarily for analog arrays) Nebenkeulen- Unterdrücker (Howell Array) Mehrfach-Nebenkeulen- Unterdrücker (Applebaum Array) LCMV DILFAST SCORE Roanoke Doppler MUSIC ESPIRIT Piserenko Zerlegung aka Nullsteuerung Max SNR Max SINR Dynamischer Mehrfach- Nebenkeule-Unterdrücker (Applebaum Array) Mustersynth. Woodward-Lawson Technik Max Likelihood Strahl- former Räumliches Multiplexing Einfallsrichtung (DOA) Unterraum - basiert Blind Traditionell (Datenunabhängig/Deterministisch) Adaptiv Block - basiert (Snapshot/Update-basiert) (Snapshot/Update-basiert) Fensterfunktionen (Optionale Erweiterung) Chebychev Hamming Taylor Binomial Eingang beinhaltet (erwarteten) Winkel der Nutzquelle Braucht Pilots/exaktes Signal Strahlformungs-Taxonomie Raum- - Raum-Zeit-adaptive Verarbeitung (STAP) Die meisten Techniken unter Strahlformung können direkt zur DOA-Bestimmung verwendet werden DOA
\ No newline at end of file
diff --git a/_images_de/binary_file.png b/_images_de/binary_file.png
new file mode 100644
index 00000000..f56b79e0
Binary files /dev/null and b/_images_de/binary_file.png differ
diff --git a/_images_de/bladeRF-2.0-micro-Block-Diagram-4-oscillator.png b/_images_de/bladeRF-2.0-micro-Block-Diagram-4-oscillator.png
new file mode 100644
index 00000000..7b41e74f
Binary files /dev/null and b/_images_de/bladeRF-2.0-micro-Block-Diagram-4-oscillator.png differ
diff --git a/_images_de/bladeRF-2.0-micro-Block-Diagram-4.png b/_images_de/bladeRF-2.0-micro-Block-Diagram-4.png
new file mode 100644
index 00000000..b6426139
Binary files /dev/null and b/_images_de/bladeRF-2.0-micro-Block-Diagram-4.png differ
diff --git a/_images_de/bladeRF_micro.png b/_images_de/bladeRF_micro.png
new file mode 100644
index 00000000..263cd328
Binary files /dev/null and b/_images_de/bladeRF_micro.png differ
diff --git a/_images_de/bladerf-waterfall.svg b/_images_de/bladerf-waterfall.svg
new file mode 100644
index 00000000..afc77f6c
--- /dev/null
+++ b/_images_de/bladerf-waterfall.svg
@@ -0,0 +1,452 @@
+
+
+
+
+
+
+
+ 2024-03-14T05:36:44.113286
+ image/svg+xml
+
+
+ Matplotlib v3.8.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [MHz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zeit [s]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/bpsk.svg b/_images_de/bpsk.svg
new file mode 100644
index 00000000..de187127
--- /dev/null
+++ b/_images_de/bpsk.svg
@@ -0,0 +1,251 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ZeitZeit Eingang Bits BPSK moduliert Ausgang
+
+
+
diff --git a/_images_de/bpsk2.svg b/_images_de/bpsk2.svg
new file mode 100644
index 00000000..dc5f0338
--- /dev/null
+++ b/_images_de/bpsk2.svg
@@ -0,0 +1 @@
+Zeit
\ No newline at end of file
diff --git a/_images_de/bpsk3.png b/_images_de/bpsk3.png
new file mode 100644
index 00000000..55a6bbbd
Binary files /dev/null and b/_images_de/bpsk3.png differ
diff --git a/_images_de/bpsk_iq.png b/_images_de/bpsk_iq.png
new file mode 100644
index 00000000..c6f2e33b
Binary files /dev/null and b/_images_de/bpsk_iq.png differ
diff --git a/_images_de/butterfly.svg b/_images_de/butterfly.svg
new file mode 100644
index 00000000..db9a5ed2
--- /dev/null
+++ b/_images_de/butterfly.svg
@@ -0,0 +1 @@
+𝑥 0 𝑥 1 𝑦 0 𝑦 1 𝑤 𝑛 𝑘 - 1
\ No newline at end of file
diff --git a/_images_de/butterfly2.svg b/_images_de/butterfly2.svg
new file mode 100644
index 00000000..2da2923b
--- /dev/null
+++ b/_images_de/butterfly2.svg
@@ -0,0 +1 @@
+𝑥 0 𝑥 1 𝑥 2 𝑥 3 𝑥 4 𝑥 5 𝑥 6 𝑥 7 𝑦 0 𝑦 4 𝑦 2 𝑦 6 𝑦 1 𝑦 5 𝑦 3 𝑦 7 𝑤 4 0 𝑤 4 1 𝑤 4 2 𝑤 4 3 𝑤 2 0 𝑤 2 1 𝑤 2 0 𝑤 2 1
\ No newline at end of file
diff --git a/_images_de/caf_at_correct_alpha.svg b/_images_de/caf_at_correct_alpha.svg
new file mode 100644
index 00000000..5c954307
--- /dev/null
+++ b/_images_de/caf_at_correct_alpha.svg
@@ -0,0 +1,576 @@
+
+
+
+
+
+
+
+ 2025-06-09T12:57:56.492157
+ image/svg+xml
+
+
+ Matplotlib v3.6.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CAF (Realteil)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/caf_at_incorrect_alpha.svg b/_images_de/caf_at_incorrect_alpha.svg
new file mode 100644
index 00000000..67c1531a
--- /dev/null
+++ b/_images_de/caf_at_incorrect_alpha.svg
@@ -0,0 +1,483 @@
+
+
+
+
+
+
+
+ 2025-06-09T12:58:07.447113
+ image/svg+xml
+
+
+ Matplotlib v3.6.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CAF (Realteil)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/caf_avg_over_alpha.svg b/_images_de/caf_avg_over_alpha.svg
new file mode 100644
index 00000000..9bb7dae2
--- /dev/null
+++ b/_images_de/caf_avg_over_alpha.svg
@@ -0,0 +1,700 @@
+
+
+
+
+
+
+
+ 2025-06-09T13:08:10.415110
+ image/svg+xml
+
+
+ Matplotlib v3.6.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CAF-Leistung
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/carrier-offset.png b/_images_de/carrier-offset.png
new file mode 100644
index 00000000..5a50d4d8
Binary files /dev/null and b/_images_de/carrier-offset.png differ
diff --git a/_images_de/carrier.png b/_images_de/carrier.png
new file mode 100644
index 00000000..08b05934
Binary files /dev/null and b/_images_de/carrier.png differ
diff --git a/_images_de/cdma.png b/_images_de/cdma.png
new file mode 100644
index 00000000..ba4c07e0
Binary files /dev/null and b/_images_de/cdma.png differ
diff --git a/_images_de/central_limit_theorem.svg b/_images_de/central_limit_theorem.svg
new file mode 100644
index 00000000..b1e4f4be
--- /dev/null
+++ b/_images_de/central_limit_theorem.svg
@@ -0,0 +1,9670 @@
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
diff --git a/_images_de/coarse-freq-sync-before.svg b/_images_de/coarse-freq-sync-before.svg
new file mode 100644
index 00000000..c69f007b
--- /dev/null
+++ b/_images_de/coarse-freq-sync-before.svg
@@ -0,0 +1,1420 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/coarse-freq-sync.svg b/_images_de/coarse-freq-sync.svg
new file mode 100644
index 00000000..0a2aca98
--- /dev/null
+++ b/_images_de/coarse-freq-sync.svg
@@ -0,0 +1,1514 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vergrößert unten
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/complex_plane_1.png b/_images_de/complex_plane_1.png
new file mode 100644
index 00000000..734e59a8
Binary files /dev/null and b/_images_de/complex_plane_1.png differ
diff --git a/_images_de/complex_plane_2.png b/_images_de/complex_plane_2.png
new file mode 100644
index 00000000..2b6df453
Binary files /dev/null and b/_images_de/complex_plane_2.png differ
diff --git a/_images_de/complex_plane_3.png b/_images_de/complex_plane_3.png
new file mode 100644
index 00000000..dfa3c3ee
Binary files /dev/null and b/_images_de/complex_plane_3.png differ
diff --git a/_images_de/complex_taps.png b/_images_de/complex_taps.png
new file mode 100644
index 00000000..7e846749
Binary files /dev/null and b/_images_de/complex_taps.png differ
diff --git a/_images_de/constellation-animated-postcostas.gif b/_images_de/constellation-animated-postcostas.gif
new file mode 100644
index 00000000..72624085
Binary files /dev/null and b/_images_de/constellation-animated-postcostas.gif differ
diff --git a/_images_de/constellation-animated.gif b/_images_de/constellation-animated.gif
new file mode 100644
index 00000000..b1bc4afa
Binary files /dev/null and b/_images_de/constellation-animated.gif differ
diff --git a/_images_de/convolution.gif b/_images_de/convolution.gif
new file mode 100644
index 00000000..b1c47bb8
Binary files /dev/null and b/_images_de/convolution.gif differ
diff --git a/_images_de/convolve_comparison_1000.svg b/_images_de/convolve_comparison_1000.svg
new file mode 100644
index 00000000..53a1efb6
--- /dev/null
+++ b/_images_de/convolve_comparison_1000.svg
@@ -0,0 +1,1563 @@
+
+
+
+
+
+
+
+ 2024-04-19T18:11:37.382213
+ image/svg+xml
+
+
+ Matplotlib v3.8.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Anzahl der Koeffizienten
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zeit pro Aufruf (ms)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Eingangssignallänge: 1000 Samples
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/convolve_comparison_100000.svg b/_images_de/convolve_comparison_100000.svg
new file mode 100644
index 00000000..9a86fcbd
--- /dev/null
+++ b/_images_de/convolve_comparison_100000.svg
@@ -0,0 +1,1572 @@
+
+
+
+
+
+
+
+ 2024-04-19T18:12:55.749063
+ image/svg+xml
+
+
+ Matplotlib v3.8.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Anzahl der Koeffizienten
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zeit pro Aufruf (ms)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Eingangssignallänge: 100000 Samples
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/costas-loop-freq-tracking.svg b/_images_de/costas-loop-freq-tracking.svg
new file mode 100644
index 00000000..aa6d68b9
--- /dev/null
+++ b/_images_de/costas-loop-freq-tracking.svg
@@ -0,0 +1,1434 @@
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenzversatz
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [Hz]
+
diff --git a/_images_de/costas-loop-output.svg b/_images_de/costas-loop-output.svg
new file mode 100644
index 00000000..36df513d
--- /dev/null
+++ b/_images_de/costas-loop-output.svg
@@ -0,0 +1,1631 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vor Costas-Schleife
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Nach Costas-Schleife
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/costas-loop.svg b/_images_de/costas-loop.svg
new file mode 100644
index 00000000..b0161d2e
--- /dev/null
+++ b/_images_de/costas-loop.svg
@@ -0,0 +1,1865 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/costas_animation.gif b/_images_de/costas_animation.gif
new file mode 100644
index 00000000..0212035b
Binary files /dev/null and b/_images_de/costas_animation.gif differ
diff --git a/_images_de/db.png b/_images_de/db.png
new file mode 100644
index 00000000..5d09adfb
Binary files /dev/null and b/_images_de/db.png differ
diff --git a/_images_de/dc-signal.png b/_images_de/dc-signal.png
new file mode 100644
index 00000000..40071294
Binary files /dev/null and b/_images_de/dc-signal.png differ
diff --git a/_images_de/dc-signal1.png b/_images_de/dc-signal1.png
new file mode 100644
index 00000000..40071294
Binary files /dev/null and b/_images_de/dc-signal1.png differ
diff --git a/_images_de/dc_spike.png b/_images_de/dc_spike.png
new file mode 100644
index 00000000..b6a950e5
Binary files /dev/null and b/_images_de/dc_spike.png differ
diff --git a/_images_de/delay_and_sum.gif b/_images_de/delay_and_sum.gif
new file mode 100644
index 00000000..f263640e
Binary files /dev/null and b/_images_de/delay_and_sum.gif differ
diff --git a/_images_de/destructive_interference.svg b/_images_de/destructive_interference.svg
new file mode 100644
index 00000000..8befb2ed
--- /dev/null
+++ b/_images_de/destructive_interference.svg
@@ -0,0 +1,206 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +=
+
+
+
diff --git a/_images_de/detection_basic_1.svg b/_images_de/detection_basic_1.svg
new file mode 100644
index 00000000..5e1cf585
--- /dev/null
+++ b/_images_de/detection_basic_1.svg
@@ -0,0 +1,6266 @@
+
+
+
+
+
+
+
+ 2026-02-03T19:39:10.038436
+ image/svg+xml
+
+
+ Matplotlib v3.6.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sample-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Signalbetrag [linear]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wahrer Versatz
+
+
+
+
+
+
+
+
diff --git a/_images_de/detection_basic_2.svg b/_images_de/detection_basic_2.svg
new file mode 100644
index 00000000..fc1ad617
--- /dev/null
+++ b/_images_de/detection_basic_2.svg
@@ -0,0 +1,6112 @@
+
+
+
+
+
+
+
+ 2026-02-03T19:39:10.127980
+ image/svg+xml
+
+
+ Matplotlib v3.6.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sample-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Korrelationsbetrag [linear]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wahrer Versatz
+
+
+
+
+
+
+
+
diff --git a/_images_de/detection_cfar.svg b/_images_de/detection_cfar.svg
new file mode 100644
index 00000000..86a81b23
--- /dev/null
+++ b/_images_de/detection_cfar.svg
@@ -0,0 +1,13442 @@
+
+
+
+
+
+
+
+ 2026-01-25T21:46:24.426568
+ image/svg+xml
+
+
+ Matplotlib v3.6.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leistung
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Empfangssignalleistung
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sample-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Korrelationsleistung
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Präambel-Korrelationsausgang mit adaptiver CFAR-Schwelle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CFAR-Adaptivschwell
+
+
+
+
+
+ Erkennungen (Präambel gefunden)
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/detection_cfar2.svg b/_images_de/detection_cfar2.svg
new file mode 100644
index 00000000..6a05522e
--- /dev/null
+++ b/_images_de/detection_cfar2.svg
@@ -0,0 +1,13644 @@
+
+
+
+
+
+
+
+ 2026-01-25T21:14:25.065560
+ image/svg+xml
+
+
+ Matplotlib v3.6.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leistung
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Empfangssignalleistung
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sample-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Korrelationsleistung
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Präambel-Korrelationsausgang mit adaptiver CFAR-Schwelle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CFAR-Adaptivschwell
+
+
+
+
+
+ Erkennungen (Präambel gefunden)
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/detection_dsss.svg b/_images_de/detection_dsss.svg
new file mode 100644
index 00000000..5e868647
--- /dev/null
+++ b/_images_de/detection_dsss.svg
@@ -0,0 +1,979 @@
+
+
+
+
+
+
+
+ 2026-01-25T21:18:47.096850
+ image/svg+xml
+
+
+ Matplotlib v3.6.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Versatz (Chip-Bruchteil)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Normierter Korrelations-Spitzenwert
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DSSS-Korrelationspeak vs. fraktionaler Chip-Timing-Versatz
+
+
+
+
+
+
+
+ Normierte Korrelation
+
+
+
+ Perfekte Ausrichtung
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/detection_freq_offset.svg b/_images_de/detection_freq_offset.svg
new file mode 100644
index 00000000..f1c4c7bc
--- /dev/null
+++ b/_images_de/detection_freq_offset.svg
@@ -0,0 +1,605 @@
+
+
+
+
+
+
+
+ 2026-01-25T21:16:20.059400
+ image/svg+xml
+
+
+ Matplotlib v3.6.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenzversatz (kHz)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Normierter Korrelationspeak [dB]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Korrelationsdegradation vs. Frequenzversatz
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/detection_freq_offset2.svg b/_images_de/detection_freq_offset2.svg
new file mode 100644
index 00000000..0c7566c0
--- /dev/null
+++ b/_images_de/detection_freq_offset2.svg
@@ -0,0 +1,777 @@
+
+
+
+
+
+
+
+ 2026-01-25T21:16:26.171610
+ image/svg+xml
+
+
+ Matplotlib v3.6.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Erkennungswahrscheinlichkeit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Erkennungswahrscheinlichkeit vs. SNR für verschiedene Frequenzversätze
+
+
+
+
+
+
+
+ Versatz=0,0 kHz
+
+
+
+ Versatz=2,0 kHz
+
+
+
+ Versatz=5,0 kHz
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/detection_gps_2d_map.png b/_images_de/detection_gps_2d_map.png
new file mode 100644
index 00000000..ad9ef9d8
Binary files /dev/null and b/_images_de/detection_gps_2d_map.png differ
diff --git a/_images_de/detection_gps_code_phase_slice.svg b/_images_de/detection_gps_code_phase_slice.svg
new file mode 100644
index 00000000..39028698
--- /dev/null
+++ b/_images_de/detection_gps_code_phase_slice.svg
@@ -0,0 +1,3351 @@
+
+
+
+
+
+
+
+ 2026-03-21T02:47:59.745089
+ image/svg+xml
+
+
+ Matplotlib v3.10.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Codephase (Chips)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Korrelationsleistung
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/detection_gps_spectrogram.svg b/_images_de/detection_gps_spectrogram.svg
new file mode 100644
index 00000000..661dbbdb
--- /dev/null
+++ b/_images_de/detection_gps_spectrogram.svg
@@ -0,0 +1,524 @@
+
+
+
+
+
+
+
+ 2026-03-21T02:24:00.638974
+ image/svg+xml
+
+
+ Matplotlib v3.10.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [MHz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zeit [s]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/detection_pd_vs_snr.svg b/_images_de/detection_pd_vs_snr.svg
new file mode 100644
index 00000000..06fc160a
--- /dev/null
+++ b/_images_de/detection_pd_vs_snr.svg
@@ -0,0 +1,1706 @@
+
+
+
+
+
+
+
+ 2026-02-03T21:08:16.073111
+ image/svg+xml
+
+
+ Matplotlib v3.6.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ROC-Kurven
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pd vs. SNR (Pfa=0,01)
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/detection_realtime.png b/_images_de/detection_realtime.png
new file mode 100644
index 00000000..fd8541a5
Binary files /dev/null and b/_images_de/detection_realtime.png differ
diff --git a/_images_de/differential_coding.svg b/_images_de/differential_coding.svg
new file mode 100644
index 00000000..83474afc
--- /dev/null
+++ b/_images_de/differential_coding.svg
@@ -0,0 +1,1292 @@
+
+
+
+
+
+
+
+ 2022-08-24T10:26:15.651172
+ image/svg+xml
+
+
+ Matplotlib v3.5.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Symbole
+ Kodiert
+ Dekodiert
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Beginnend mit 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Symbole
+ Kodiert
+ Dekodiert
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Beginnend mit 0
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/differential_coding2.svg b/_images_de/differential_coding2.svg
new file mode 100644
index 00000000..4005f5ec
--- /dev/null
+++ b/_images_de/differential_coding2.svg
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+ Verzögerung
+ Eingang
+ Ausgang
+
+
+
+
+
+
+
+ Ausgang
+
+
+ Eingang 2
+
+
+ Eingang 1
+
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 1
+ 0
+ 1
+ 0
+ 1
+ 1
+
+
+
+ XOR
+
+
+
diff --git a/_images_de/discrete_convolution.png b/_images_de/discrete_convolution.png
new file mode 100644
index 00000000..902a9651
Binary files /dev/null and b/_images_de/discrete_convolution.png differ
diff --git a/_images_de/doa.svg b/_images_de/doa.svg
new file mode 100644
index 00000000..244bbd6a
--- /dev/null
+++ b/_images_de/doa.svg
@@ -0,0 +1 @@
+d Einfallsrichtung θ Hauptstrahlrichtung
\ No newline at end of file
diff --git a/_images_de/doa_capons.svg b/_images_de/doa_capons.svg
new file mode 100644
index 00000000..0dbcfbed
--- /dev/null
+++ b/_images_de/doa_capons.svg
@@ -0,0 +1,554 @@
+
+
+
+
+
+
+
+ 2024-04-17T16:45:05.947654
+ image/svg+xml
+
+
+ Matplotlib v3.8.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/doa_capons2.svg b/_images_de/doa_capons2.svg
new file mode 100644
index 00000000..253490f2
--- /dev/null
+++ b/_images_de/doa_capons2.svg
@@ -0,0 +1,589 @@
+
+
+
+
+
+
+
+ 2024-04-17T16:53:00.949548
+ image/svg+xml
+
+
+ Matplotlib v3.8.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/doa_complex_scenario.svg b/_images_de/doa_complex_scenario.svg
new file mode 100644
index 00000000..7b2bc031
--- /dev/null
+++ b/_images_de/doa_complex_scenario.svg
@@ -0,0 +1,526 @@
+
+
+
+
+
+
+
+ 2024-04-17T16:57:46.215398
+ image/svg+xml
+
+
+ Matplotlib v3.8.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/doa_conventional_beamformer.svg b/_images_de/doa_conventional_beamformer.svg
new file mode 100644
index 00000000..0c3b768a
--- /dev/null
+++ b/_images_de/doa_conventional_beamformer.svg
@@ -0,0 +1,722 @@
+
+
+
+
+
+
+
+ 2024-01-22T23:20:00.151337
+ image/svg+xml
+
+
+ Matplotlib v3.8.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Theta [Grad]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DOA-Metrik
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 20 Grad
+
+
+
+
+
+
+
+
diff --git a/_images_de/doa_conventional_beamformer_polar.svg b/_images_de/doa_conventional_beamformer_polar.svg
new file mode 100644
index 00000000..9f324277
--- /dev/null
+++ b/_images_de/doa_conventional_beamformer_polar.svg
@@ -0,0 +1,1029 @@
+
+
+
+
+
+
+
+ 2024-01-22T23:20:04.154182
+ image/svg+xml
+
+
+ Matplotlib v3.8.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/doa_covariance_method_1.svg b/_images_de/doa_covariance_method_1.svg
new file mode 100644
index 00000000..1b72d043
--- /dev/null
+++ b/_images_de/doa_covariance_method_1.svg
@@ -0,0 +1,1569 @@
+
+
+
+
+
+
+
+ 2025-04-12T01:01:17.276957
+ image/svg+xml
+
+
+ Matplotlib v3.10.1, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Azimutwinkel (Grad)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leistung [dB]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Konventionelles Muster
+
+
+
+ MVDR-Muster
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/doa_covariance_method_2.svg b/_images_de/doa_covariance_method_2.svg
new file mode 100644
index 00000000..bc10dfe3
--- /dev/null
+++ b/_images_de/doa_covariance_method_2.svg
@@ -0,0 +1,1538 @@
+
+
+
+
+
+
+
+ 2025-04-12T01:01:08.512119
+ image/svg+xml
+
+
+ Matplotlib v3.10.1, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Azimutwinkel (Grad)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leistung [dB]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Konventionelles Muster
+
+
+
+ MVDR-Muster
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/doa_d_is_large_animation.gif b/_images_de/doa_d_is_large_animation.gif
new file mode 100644
index 00000000..416f5537
Binary files /dev/null and b/_images_de/doa_d_is_large_animation.gif differ
diff --git a/_images_de/doa_d_is_small_animation.gif b/_images_de/doa_d_is_small_animation.gif
new file mode 100644
index 00000000..1ef62987
Binary files /dev/null and b/_images_de/doa_d_is_small_animation.gif differ
diff --git a/_images_de/doa_d_is_small_animation2.gif b/_images_de/doa_d_is_small_animation2.gif
new file mode 100644
index 00000000..a63ea027
Binary files /dev/null and b/_images_de/doa_d_is_small_animation2.gif differ
diff --git a/_images_de/doa_eigenvalues.svg b/_images_de/doa_eigenvalues.svg
new file mode 100644
index 00000000..93ee52e9
--- /dev/null
+++ b/_images_de/doa_eigenvalues.svg
@@ -0,0 +1,571 @@
+
+
+
+
+
+
+
+ 2023-04-05T01:42:47.826139
+ image/svg+xml
+
+
+ Matplotlib v3.5.1, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Eigenwert [dB]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/doa_from_behind.svg b/_images_de/doa_from_behind.svg
new file mode 100644
index 00000000..1fe3390f
--- /dev/null
+++ b/_images_de/doa_from_behind.svg
@@ -0,0 +1,585 @@
+
+
+
+
+
+
+
+ 2023-04-03T01:26:02.032378
+ image/svg+xml
+
+
+ Matplotlib v3.5.1, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/doa_lms_animation.gif b/_images_de/doa_lms_animation.gif
new file mode 100644
index 00000000..60b9aaa7
Binary files /dev/null and b/_images_de/doa_lms_animation.gif differ
diff --git a/_images_de/doa_music.svg b/_images_de/doa_music.svg
new file mode 100644
index 00000000..4678b24e
--- /dev/null
+++ b/_images_de/doa_music.svg
@@ -0,0 +1,637 @@
+
+
+
+
+
+
+
+ 2024-04-17T17:14:02.762415
+ image/svg+xml
+
+
+ Matplotlib v3.8.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/doa_music_animation.gif b/_images_de/doa_music_animation.gif
new file mode 100644
index 00000000..6e69a017
Binary files /dev/null and b/_images_de/doa_music_animation.gif differ
diff --git a/_images_de/doa_quiescent.svg b/_images_de/doa_quiescent.svg
new file mode 100644
index 00000000..cd3cbd2f
--- /dev/null
+++ b/_images_de/doa_quiescent.svg
@@ -0,0 +1,639 @@
+
+
+
+
+
+
+
+ 2024-01-27T03:01:17.896605
+ image/svg+xml
+
+
+ Matplotlib v3.8.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/doa_quiescent_beamwidth.svg b/_images_de/doa_quiescent_beamwidth.svg
new file mode 100644
index 00000000..f4401516
--- /dev/null
+++ b/_images_de/doa_quiescent_beamwidth.svg
@@ -0,0 +1,1078 @@
+
+
+
+
+
+
+
+ 2024-05-10T23:13:07.577953
+ image/svg+xml
+
+
+ Matplotlib v3.8.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Theta [Grad]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Strahlmuster [dB]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/doa_radar_scenario.svg b/_images_de/doa_radar_scenario.svg
new file mode 100644
index 00000000..b938ed77
--- /dev/null
+++ b/_images_de/doa_radar_scenario.svg
@@ -0,0 +1,916 @@
+
+
+
+
+
+
+
+ 2024-01-27T03:22:24.303597
+ image/svg+xml
+
+
+ Matplotlib v3.8.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/doa_sweeping_angle_animation.gif b/_images_de/doa_sweeping_angle_animation.gif
new file mode 100644
index 00000000..7b9904db
Binary files /dev/null and b/_images_de/doa_sweeping_angle_animation.gif differ
diff --git a/_images_de/doa_time_domain.svg b/_images_de/doa_time_domain.svg
new file mode 100644
index 00000000..9d429d7a
--- /dev/null
+++ b/_images_de/doa_time_domain.svg
@@ -0,0 +1,1163 @@
+
+
+
+
+
+
+
+ 2026-01-06T17:18:14.811243
+ image/svg+xml
+
+
+ Matplotlib v3.6.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zeit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/doa_time_domain_with_noise.svg b/_images_de/doa_time_domain_with_noise.svg
new file mode 100644
index 00000000..af049ecd
--- /dev/null
+++ b/_images_de/doa_time_domain_with_noise.svg
@@ -0,0 +1,1274 @@
+
+
+
+
+
+
+
+ 2026-01-06T17:18:16.561340
+ image/svg+xml
+
+
+ Matplotlib v3.6.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zeit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/doa_trig.svg b/_images_de/doa_trig.svg
new file mode 100644
index 00000000..67910ff0
--- /dev/null
+++ b/_images_de/doa_trig.svg
@@ -0,0 +1 @@
+90 o - θ θ d θ ?
\ No newline at end of file
diff --git a/_images_de/downconversion.png b/_images_de/downconversion.png
new file mode 100644
index 00000000..6043e902
Binary files /dev/null and b/_images_de/downconversion.png differ
diff --git a/_images_de/ethernet.svg b/_images_de/ethernet.svg
new file mode 100644
index 00000000..2066d61a
--- /dev/null
+++ b/_images_de/ethernet.svg
@@ -0,0 +1,321 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zeit
+
+
+
+
+
+ +1V = 008 ns +0.5V = 01 - 0.5V = 10- 1V = 11
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/face_template.png b/_images_de/face_template.png
new file mode 100644
index 00000000..17136c11
Binary files /dev/null and b/_images_de/face_template.png differ
diff --git a/_images_de/fading_example.jpg b/_images_de/fading_example.jpg
new file mode 100644
index 00000000..d023c47a
Binary files /dev/null and b/_images_de/fading_example.jpg differ
diff --git a/_images_de/fft-block-diagram.svg b/_images_de/fft-block-diagram.svg
new file mode 100644
index 00000000..b8ed1ba8
--- /dev/null
+++ b/_images_de/fft-block-diagram.svg
@@ -0,0 +1 @@
+SignalZeitbereich Signal im Frequenzbereich FFT
diff --git a/_images_de/fft-io.svg b/_images_de/fft-io.svg
new file mode 100644
index 00000000..61d8bf90
--- /dev/null
+++ b/_images_de/fft-io.svg
@@ -0,0 +1 @@
+Sample:N -10 1 2 … 3 Eingangsvektor FFT Index:N - 10 1 2 … 3 Ausgang T Sekunden ∆t B Bandbreite [Hz](B = f s )
\ No newline at end of file
diff --git a/_images_de/fft-python1.png b/_images_de/fft-python1.png
new file mode 100644
index 00000000..e6a27c8c
Binary files /dev/null and b/_images_de/fft-python1.png differ
diff --git a/_images_de/fft-python1.svg b/_images_de/fft-python1.svg
new file mode 100644
index 00000000..f782cea6
--- /dev/null
+++ b/_images_de/fft-python1.svg
@@ -0,0 +1,719 @@
+
+
+
+
+
+
+
+ 2024-11-26T00:57:45.461941
+ image/svg+xml
+
+
+ Matplotlib v3.9.2, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sample-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Signalamplitude
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/fft-python2.png b/_images_de/fft-python2.png
new file mode 100644
index 00000000..d53f15be
Binary files /dev/null and b/_images_de/fft-python2.png differ
diff --git a/_images_de/fft-python2.svg b/_images_de/fft-python2.svg
new file mode 100644
index 00000000..adce3cbe
--- /dev/null
+++ b/_images_de/fft-python2.svg
@@ -0,0 +1,1169 @@
+
+
+
+
+
+
+
+ 2024-11-26T00:57:45.571054
+ image/svg+xml
+
+
+ Matplotlib v3.9.2, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FFT-Betrag
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FFT-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FFT-Phase [Radianten]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/fft-python3.svg b/_images_de/fft-python3.svg
new file mode 100644
index 00000000..49cd8778
--- /dev/null
+++ b/_images_de/fft-python3.svg
@@ -0,0 +1,238 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0(DC) N - 1N/2 + frequencies - frequencies
+
+
diff --git a/_images_de/fft-python4.svg b/_images_de/fft-python4.svg
new file mode 100644
index 00000000..4e6db0db
--- /dev/null
+++ b/_images_de/fft-python4.svg
@@ -0,0 +1 @@
+0(DC) N - 1N/2 + frequencies - frequencies FFT-Verschiebung 0(DC) + frequencies - frequencies
\ No newline at end of file
diff --git a/_images_de/fft-python5.png b/_images_de/fft-python5.png
new file mode 100644
index 00000000..2f20c610
Binary files /dev/null and b/_images_de/fft-python5.png differ
diff --git a/_images_de/fft-python5.svg b/_images_de/fft-python5.svg
new file mode 100644
index 00000000..279c9d53
--- /dev/null
+++ b/_images_de/fft-python5.svg
@@ -0,0 +1,1091 @@
+
+
+
+
+
+
+
+ 2024-11-26T00:57:45.692211
+ image/svg+xml
+
+
+ Matplotlib v3.9.2, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FFT-Betrag
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0,15 Hz
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FFT-Phase [Radianten]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/fft_example1.svg b/_images_de/fft_example1.svg
new file mode 100644
index 00000000..b2492331
--- /dev/null
+++ b/_images_de/fft_example1.svg
@@ -0,0 +1,2308 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Betrag [dB]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/fft_in_python.svg b/_images_de/fft_in_python.svg
new file mode 100644
index 00000000..c93fcec7
--- /dev/null
+++ b/_images_de/fft_in_python.svg
@@ -0,0 +1,1469 @@
+
+
+
+
+
+
+
+ 2023-03-03T22:20:29.654162
+ image/svg+xml
+
+
+ Matplotlib v3.5.1, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [MHz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Betrag [dB]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/fft_logo_wide.gif b/_images_de/fft_logo_wide.gif
new file mode 100644
index 00000000..b72cf9c3
Binary files /dev/null and b/_images_de/fft_logo_wide.gif differ
diff --git a/_images_de/fft_of_caf.svg b/_images_de/fft_of_caf.svg
new file mode 100644
index 00000000..863a068f
--- /dev/null
+++ b/_images_de/fft_of_caf.svg
@@ -0,0 +1,899 @@
+
+
+
+
+
+
+
+ 2025-06-09T12:57:56.572566
+ image/svg+xml
+
+
+ Matplotlib v3.6.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SCF-Betrag
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/fft_signal_order.png b/_images_de/fft_signal_order.png
new file mode 100644
index 00000000..4909d607
Binary files /dev/null and b/_images_de/fft_signal_order.png differ
diff --git a/_images_de/fftconvolve.svg b/_images_de/fftconvolve.svg
new file mode 100644
index 00000000..dfee2322
--- /dev/null
+++ b/_images_de/fftconvolve.svg
@@ -0,0 +1,21145 @@
+
+
+
+
+
+
+
+ 2024-04-19T18:35:51.527801
+ image/svg+xml
+
+
+ Matplotlib v3.8.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [MHz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LDS [dB]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Eingang
+
+
+
+ Ausgang
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/filter.png b/_images_de/filter.png
new file mode 100644
index 00000000..75902727
Binary files /dev/null and b/_images_de/filter.png differ
diff --git a/_images_de/filter_convolve.png b/_images_de/filter_convolve.png
new file mode 100644
index 00000000..415f45ca
Binary files /dev/null and b/_images_de/filter_convolve.png differ
diff --git a/_images_de/filter_design1.png b/_images_de/filter_design1.png
new file mode 100644
index 00000000..d8106c99
Binary files /dev/null and b/_images_de/filter_design1.png differ
diff --git a/_images_de/filter_design2.png b/_images_de/filter_design2.png
new file mode 100644
index 00000000..95749a8f
Binary files /dev/null and b/_images_de/filter_design2.png differ
diff --git a/_images_de/filter_design3.png b/_images_de/filter_design3.png
new file mode 100644
index 00000000..64ab1a51
Binary files /dev/null and b/_images_de/filter_design3.png differ
diff --git a/_images_de/filter_design4.png b/_images_de/filter_design4.png
new file mode 100644
index 00000000..dfe65de9
Binary files /dev/null and b/_images_de/filter_design4.png differ
diff --git a/_images_de/filter_design5.png b/_images_de/filter_design5.png
new file mode 100644
index 00000000..e1439914
Binary files /dev/null and b/_images_de/filter_design5.png differ
diff --git a/_images_de/filter_design6.png b/_images_de/filter_design6.png
new file mode 100644
index 00000000..f31ff86c
Binary files /dev/null and b/_images_de/filter_design6.png differ
diff --git a/_images_de/filter_design7.png b/_images_de/filter_design7.png
new file mode 100644
index 00000000..b569bc3c
Binary files /dev/null and b/_images_de/filter_design7.png differ
diff --git a/_images_de/filter_designer1.png b/_images_de/filter_designer1.png
new file mode 100644
index 00000000..f06e5053
Binary files /dev/null and b/_images_de/filter_designer1.png differ
diff --git a/_images_de/filter_designer2.png b/_images_de/filter_designer2.png
new file mode 100644
index 00000000..99c0dabe
Binary files /dev/null and b/_images_de/filter_designer2.png differ
diff --git a/_images_de/filter_designer3.png b/_images_de/filter_designer3.png
new file mode 100644
index 00000000..1b1b2034
Binary files /dev/null and b/_images_de/filter_designer3.png differ
diff --git a/_images_de/filter_types.png b/_images_de/filter_types.png
new file mode 100644
index 00000000..40141554
Binary files /dev/null and b/_images_de/filter_types.png differ
diff --git a/_images_de/filter_use_case.png b/_images_de/filter_use_case.png
new file mode 100644
index 00000000..922f1a0a
Binary files /dev/null and b/_images_de/filter_use_case.png differ
diff --git a/_images_de/filter_use_case2.png b/_images_de/filter_use_case2.png
new file mode 100644
index 00000000..c586f746
Binary files /dev/null and b/_images_de/filter_use_case2.png differ
diff --git a/_images_de/filter_use_case3.png b/_images_de/filter_use_case3.png
new file mode 100644
index 00000000..dbc3a874
Binary files /dev/null and b/_images_de/filter_use_case3.png differ
diff --git a/_images_de/filter_use_case4.png b/_images_de/filter_use_case4.png
new file mode 100644
index 00000000..53be80bb
Binary files /dev/null and b/_images_de/filter_use_case4.png differ
diff --git a/_images_de/filter_use_case5.png b/_images_de/filter_use_case5.png
new file mode 100644
index 00000000..b28d05c6
Binary files /dev/null and b/_images_de/filter_use_case5.png differ
diff --git a/_images_de/filter_use_case6.png b/_images_de/filter_use_case6.png
new file mode 100644
index 00000000..5b5c130c
Binary files /dev/null and b/_images_de/filter_use_case6.png differ
diff --git a/_images_de/filter_use_case_nolabel.png b/_images_de/filter_use_case_nolabel.png
new file mode 100644
index 00000000..f69518e4
Binary files /dev/null and b/_images_de/filter_use_case_nolabel.png differ
diff --git a/_images_de/flat_vs_freq_selective.png b/_images_de/flat_vs_freq_selective.png
new file mode 100644
index 00000000..2459cdea
Binary files /dev/null and b/_images_de/flat_vs_freq_selective.png differ
diff --git a/_images_de/flux.png b/_images_de/flux.png
new file mode 100644
index 00000000..e7728262
Binary files /dev/null and b/_images_de/flux.png differ
diff --git a/_images_de/fm_band_psd.png b/_images_de/fm_band_psd.png
new file mode 100644
index 00000000..e7834be9
Binary files /dev/null and b/_images_de/fm_band_psd.png differ
diff --git a/_images_de/fm_before_demod.svg b/_images_de/fm_before_demod.svg
new file mode 100644
index 00000000..c1c54be0
--- /dev/null
+++ b/_images_de/fm_before_demod.svg
@@ -0,0 +1,825 @@
+
+
+
+
+
+
+
+ 2022-02-21T23:11:22.598625
+ image/svg+xml
+
+
+ Matplotlib v3.5.1, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [kHz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LDS vor FM-Demod [dB]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/fm_demph_filter_freq_response.svg b/_images_de/fm_demph_filter_freq_response.svg
new file mode 100644
index 00000000..7b499fa0
--- /dev/null
+++ b/_images_de/fm_demph_filter_freq_response.svg
@@ -0,0 +1,892 @@
+
+
+
+
+
+
+
+ 2022-02-25T23:39:31.191744
+ image/svg+xml
+
+
+ Matplotlib v3.5.1, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [kHz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LDS [dB]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/fm_psd.svg b/_images_de/fm_psd.svg
new file mode 100644
index 00000000..c1eb4809
--- /dev/null
+++ b/_images_de/fm_psd.svg
@@ -0,0 +1,1264 @@
+
+
+
+
+
+
+
+ 2022-02-21T22:46:16.320092
+ image/svg+xml
+
+
+ Matplotlib v3.5.1, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [kHz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 67 kHz
+ 57 kHz
+ 19 kHz
+ 38 kHz
+
diff --git a/_images_de/fm_psd_labeled.svg b/_images_de/fm_psd_labeled.svg
new file mode 100644
index 00000000..bdfccf73
--- /dev/null
+++ b/_images_de/fm_psd_labeled.svg
@@ -0,0 +1,1032 @@
+
+
+
+
+
+
+
+ 2022-02-21T22:46:16.320092
+ image/svg+xml
+
+
+ Matplotlib v3.5.1, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [kHz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 67
+ 57
+ 19
+ 0
+ Pilot
+ RDS
+ DirectBand
+ Mono
+ Audio
+ (L+R)
+ Stereo-Audio (L-R)
+ Ton
+ 38
+
diff --git a/_images_de/fourier_series_arbitrary_function.gif b/_images_de/fourier_series_arbitrary_function.gif
new file mode 100644
index 00000000..de479f38
Binary files /dev/null and b/_images_de/fourier_series_arbitrary_function.gif differ
diff --git a/_images_de/fourier_series_triangle.gif b/_images_de/fourier_series_triangle.gif
new file mode 100644
index 00000000..ca6f0381
Binary files /dev/null and b/_images_de/fourier_series_triangle.gif differ
diff --git a/_images_de/fractional-delay-filter.svg b/_images_de/fractional-delay-filter.svg
new file mode 100644
index 00000000..bdd2f7ce
--- /dev/null
+++ b/_images_de/fractional-delay-filter.svg
@@ -0,0 +1,818 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Realteil des Signals
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/freq-shift-diagram.svg b/_images_de/freq-shift-diagram.svg
new file mode 100644
index 00000000..332008b9
--- /dev/null
+++ b/_images_de/freq-shift-diagram.svg
@@ -0,0 +1,154 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Signalfreq verschobenes Signal
+
+ Sinusschwingung
+
+
diff --git a/_images_de/freq-shift.svg b/_images_de/freq-shift.svg
new file mode 100644
index 00000000..16857a2e
--- /dev/null
+++ b/_images_de/freq-shift.svg
@@ -0,0 +1 @@
+fFrequenz f + f 0
\ No newline at end of file
diff --git a/_images_de/freq-sync-after-square.png b/_images_de/freq-sync-after-square.png
new file mode 100644
index 00000000..325e248e
Binary files /dev/null and b/_images_de/freq-sync-after-square.png differ
diff --git a/_images_de/freq_error.png b/_images_de/freq_error.png
new file mode 100644
index 00000000..565ed083
Binary files /dev/null and b/_images_de/freq_error.png differ
diff --git a/_images_de/fsk.svg b/_images_de/fsk.svg
new file mode 100644
index 00000000..ca3d416b
--- /dev/null
+++ b/_images_de/fsk.svg
@@ -0,0 +1,8879 @@
+
+
+
+
+
+
+
+ 2025-03-28T22:33:03.108677
+ image/svg+xml
+
+
+ Matplotlib v3.10.1, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [MHz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Leistungsdichtespektrum [dB]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/fsk2.svg b/_images_de/fsk2.svg
new file mode 100644
index 00000000..c27750f8
--- /dev/null
+++ b/_images_de/fsk2.svg
@@ -0,0 +1 @@
+10 Zeit 1 - 10 0 0 0 1 1 1 f0 f 1
\ No newline at end of file
diff --git a/_images_de/gaussian_IQ.png b/_images_de/gaussian_IQ.png
new file mode 100644
index 00000000..74147280
Binary files /dev/null and b/_images_de/gaussian_IQ.png differ
diff --git a/_images_de/gaussian_gaussian_conv.gif b/_images_de/gaussian_gaussian_conv.gif
new file mode 100644
index 00000000..21dfe31b
Binary files /dev/null and b/_images_de/gaussian_gaussian_conv.gif differ
diff --git a/_images_de/gaussian_histogram.png b/_images_de/gaussian_histogram.png
new file mode 100644
index 00000000..9544a26f
Binary files /dev/null and b/_images_de/gaussian_histogram.png differ
diff --git a/_images_de/gaussian_transformed.png b/_images_de/gaussian_transformed.png
new file mode 100644
index 00000000..3b56ceb4
Binary files /dev/null and b/_images_de/gaussian_transformed.png differ
diff --git a/_images_de/hackrf1.jpeg b/_images_de/hackrf1.jpeg
new file mode 100644
index 00000000..6c71965d
Binary files /dev/null and b/_images_de/hackrf1.jpeg differ
diff --git a/_images_de/hackrf2.jpeg b/_images_de/hackrf2.jpeg
new file mode 100644
index 00000000..b1968e94
Binary files /dev/null and b/_images_de/hackrf2.jpeg differ
diff --git a/_images_de/hackrf_block_diagram.webp b/_images_de/hackrf_block_diagram.webp
new file mode 100644
index 00000000..fd14936e
Binary files /dev/null and b/_images_de/hackrf_block_diagram.webp differ
diff --git a/_images_de/hackrf_freq_screenshot.png b/_images_de/hackrf_freq_screenshot.png
new file mode 100644
index 00000000..34dcd5e1
Binary files /dev/null and b/_images_de/hackrf_freq_screenshot.png differ
diff --git a/_images_de/hackrf_time_screenshot.png b/_images_de/hackrf_time_screenshot.png
new file mode 100644
index 00000000..aaaec4a3
Binary files /dev/null and b/_images_de/hackrf_time_screenshot.png differ
diff --git a/_images_de/hamming.svg b/_images_de/hamming.svg
new file mode 100644
index 00000000..5184a677
--- /dev/null
+++ b/_images_de/hamming.svg
@@ -0,0 +1 @@
+Bitposition1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Kodierte Bits p1 p2 d1 p4 d2 d3 d4 p8 d5 d6 d7 d8 d9 d10 d11 p16 d12 d13 d14 d15 ParitätBit Abdeckung p1 x x x x x x x x x x p2 x x x x x x x x x x p4 x x x x x x x x x p8 x x x x x x x x p16 x x x x x … … …
\ No newline at end of file
diff --git a/_images_de/hamming2.svg b/_images_de/hamming2.svg
new file mode 100644
index 00000000..dfd2b73e
--- /dev/null
+++ b/_images_de/hamming2.svg
@@ -0,0 +1 @@
+Bitposition1 2 3 4 5 6 7 Kodierte Bits p1 p2 d1 p4 d2 d3 d4 ParitätBit Abdeckung p1 x x x x p2 x x x x p4 x x x x
\ No newline at end of file
diff --git a/_images_de/hamming3.png b/_images_de/hamming3.png
new file mode 100644
index 00000000..828d930a
Binary files /dev/null and b/_images_de/hamming3.png differ
diff --git a/_images_de/impulse.png b/_images_de/impulse.png
new file mode 100644
index 00000000..f0c62c8d
Binary files /dev/null and b/_images_de/impulse.png differ
diff --git a/_images_de/impulse1.png b/_images_de/impulse1.png
new file mode 100644
index 00000000..3f34d90d
Binary files /dev/null and b/_images_de/impulse1.png differ
diff --git a/_images_de/impulse_response.png b/_images_de/impulse_response.png
new file mode 100644
index 00000000..2ea1d4df
Binary files /dev/null and b/_images_de/impulse_response.png differ
diff --git a/_images_de/inspectrum.jpg b/_images_de/inspectrum.jpg
new file mode 100644
index 00000000..06bfd304
Binary files /dev/null and b/_images_de/inspectrum.jpg differ
diff --git a/_images_de/krakensdr.jpg b/_images_de/krakensdr.jpg
new file mode 100644
index 00000000..b1727cb1
Binary files /dev/null and b/_images_de/krakensdr.jpg differ
diff --git a/_images_de/lcmv_beam_pattern.svg b/_images_de/lcmv_beam_pattern.svg
new file mode 100644
index 00000000..fecddf24
--- /dev/null
+++ b/_images_de/lcmv_beam_pattern.svg
@@ -0,0 +1,887 @@
+
+
+
+
+
+
+
+ 2024-04-24T14:08:27.351989
+ image/svg+xml
+
+
+ Matplotlib v3.8.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/lcmv_beam_pattern_spread.svg b/_images_de/lcmv_beam_pattern_spread.svg
new file mode 100644
index 00000000..67ea703c
--- /dev/null
+++ b/_images_de/lcmv_beam_pattern_spread.svg
@@ -0,0 +1,795 @@
+
+
+
+
+
+
+
+ 2024-05-10T23:43:18.651127
+ image/svg+xml
+
+
+ Matplotlib v3.8.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/linear_vs_log.png b/_images_de/linear_vs_log.png
new file mode 100644
index 00000000..fed6d0dd
Binary files /dev/null and b/_images_de/linear_vs_log.png differ
diff --git a/_images_de/manchester_freq_response.svg b/_images_de/manchester_freq_response.svg
new file mode 100644
index 00000000..040d84fa
--- /dev/null
+++ b/_images_de/manchester_freq_response.svg
@@ -0,0 +1,793 @@
+
+
+
+
+
+
+
+ 2022-02-21T23:55:42.655859
+ image/svg+xml
+
+
+ Matplotlib v3.5.1, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [kHz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenzgang des Filters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/manchester_taps.svg b/_images_de/manchester_taps.svg
new file mode 100644
index 00000000..4015e666
--- /dev/null
+++ b/_images_de/manchester_taps.svg
@@ -0,0 +1,2233 @@
+
+
+
+
+
+
+
+ 2022-02-21T23:56:27.971744
+ image/svg+xml
+
+
+ Matplotlib v3.5.1, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/masking-equation.png b/_images_de/masking-equation.png
new file mode 100644
index 00000000..acbcc1bc
Binary files /dev/null and b/_images_de/masking-equation.png differ
diff --git a/_images_de/masking.svg b/_images_de/masking.svg
new file mode 100644
index 00000000..fa937754
--- /dev/null
+++ b/_images_de/masking.svg
@@ -0,0 +1 @@
+Frequenz 10
\ No newline at end of file
diff --git a/_images_de/max_freq.svg b/_images_de/max_freq.svg
new file mode 100644
index 00000000..eea6ba27
--- /dev/null
+++ b/_images_de/max_freq.svg
@@ -0,0 +1,411 @@
+
+
+
+
+
+
+
+ 2022-02-25T23:07:07.691107
+ image/svg+xml
+
+
+ Matplotlib v3.5.1, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ fmax
+ Rauschpegel
+ Signal(e)
+
diff --git a/_images_de/monopulse.svg b/_images_de/monopulse.svg
new file mode 100644
index 00000000..0ce6395a
--- /dev/null
+++ b/_images_de/monopulse.svg
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+
+ Ziel
+ Sender
+ Array
+ Strahl 1
+ Strahl 2
+
+
+ “Sum”
+ Strahl
+
diff --git a/_images_de/monopulse_tracking.svg b/_images_de/monopulse_tracking.svg
new file mode 100644
index 00000000..0bdb7c6b
--- /dev/null
+++ b/_images_de/monopulse_tracking.svg
@@ -0,0 +1,1326 @@
+
+
+
+
+
+
+
+
+ 2023-12-25T09:03:58.835927
+ image/svg+xml
+
+
+ Matplotlib v3.3.4, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zeit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Phasenschätzung [Grad]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zeit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fehler
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/monopulse_waving.svg b/_images_de/monopulse_waving.svg
new file mode 100644
index 00000000..9d1fa310
--- /dev/null
+++ b/_images_de/monopulse_waving.svg
@@ -0,0 +1,1018 @@
+
+
+
+
+
+
+
+
+ 2023-12-25T08:50:41.547308
+ image/svg+xml
+
+
+ Matplotlib v3.3.4, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zeit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fehler
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/multipath.svg b/_images_de/multipath.svg
new file mode 100644
index 00000000..78b446dd
--- /dev/null
+++ b/_images_de/multipath.svg
@@ -0,0 +1,143 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SendeantenneReceive Antenna
+Direktweg
+
+
+
+
+ Mehrwegausbreitung
+
+
diff --git a/_images_de/multipath2.svg b/_images_de/multipath2.svg
new file mode 100644
index 00000000..7c7035fe
--- /dev/null
+++ b/_images_de/multipath2.svg
@@ -0,0 +1 @@
+Sender Empfänger Direktweg Mehrwegausbreitung h(t) τ0 τ N - 1 τ 1 t
\ No newline at end of file
diff --git a/_images_de/multipath_fading.png b/_images_de/multipath_fading.png
new file mode 100644
index 00000000..88c801ff
Binary files /dev/null and b/_images_de/multipath_fading.png differ
diff --git a/_images_de/negative-frequencies.svg b/_images_de/negative-frequencies.svg
new file mode 100644
index 00000000..6a55adbc
--- /dev/null
+++ b/_images_de/negative-frequencies.svg
@@ -0,0 +1,332 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Index:N
+-
+10
+1
+2
+…
+3
+0
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/negative-frequencies2.svg b/_images_de/negative-frequencies2.svg
new file mode 100644
index 00000000..8e7053c3
--- /dev/null
+++ b/_images_de/negative-frequencies2.svg
@@ -0,0 +1 @@
+Frequenz 100 MHz105 MHz 95 MHz
\ No newline at end of file
diff --git a/_images_de/negative-frequencies3.svg b/_images_de/negative-frequencies3.svg
new file mode 100644
index 00000000..0edd51b8
--- /dev/null
+++ b/_images_de/negative-frequencies3.svg
@@ -0,0 +1 @@
+Frequenz 05 MHz- 5 MHzAbtastrate 2
\ No newline at end of file
diff --git a/_images_de/negative_freq_animation.gif b/_images_de/negative_freq_animation.gif
new file mode 100644
index 00000000..f46afb37
Binary files /dev/null and b/_images_de/negative_freq_animation.gif differ
diff --git a/_images_de/noise.png b/_images_de/noise.png
new file mode 100644
index 00000000..3ad7f60e
Binary files /dev/null and b/_images_de/noise.png differ
diff --git a/_images_de/noise3.png b/_images_de/noise3.png
new file mode 100644
index 00000000..813416d6
Binary files /dev/null and b/_images_de/noise3.png differ
diff --git a/_images_de/noise_freq.png b/_images_de/noise_freq.png
new file mode 100644
index 00000000..ff8a49c9
Binary files /dev/null and b/_images_de/noise_freq.png differ
diff --git a/_images_de/noise_iq.png b/_images_de/noise_iq.png
new file mode 100644
index 00000000..aecf2365
Binary files /dev/null and b/_images_de/noise_iq.png differ
diff --git a/_images_de/noise_python.png b/_images_de/noise_python.png
new file mode 100644
index 00000000..0f8f01c6
Binary files /dev/null and b/_images_de/noise_python.png differ
diff --git a/_images_de/noisey_qpsk.png b/_images_de/noisey_qpsk.png
new file mode 100644
index 00000000..4daba981
Binary files /dev/null and b/_images_de/noisey_qpsk.png differ
diff --git a/_images_de/noisey_qpsk2.png b/_images_de/noisey_qpsk2.png
new file mode 100644
index 00000000..0c94fc47
Binary files /dev/null and b/_images_de/noisey_qpsk2.png differ
diff --git a/_images_de/non_csp_metric.svg b/_images_de/non_csp_metric.svg
new file mode 100644
index 00000000..b00428e0
--- /dev/null
+++ b/_images_de/non_csp_metric.svg
@@ -0,0 +1,28985 @@
+
+
+
+
+
+
+
+ 2024-06-24T00:29:16.700216
+ image/svg+xml
+
+
+ Matplotlib v3.9.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Kombiniert
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/null_steering.svg b/_images_de/null_steering.svg
new file mode 100644
index 00000000..2063d397
--- /dev/null
+++ b/_images_de/null_steering.svg
@@ -0,0 +1,832 @@
+
+
+
+
+
+
+
+ 2024-05-03T20:15:26.369633
+ image/svg+xml
+
+
+ Matplotlib v3.8.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/nyquist_rate.png b/_images_de/nyquist_rate.png
new file mode 100644
index 00000000..495b4dfa
Binary files /dev/null and b/_images_de/nyquist_rate.png differ
diff --git a/_images_de/offtuning.png b/_images_de/offtuning.png
new file mode 100644
index 00000000..92d3affb
Binary files /dev/null and b/_images_de/offtuning.png differ
diff --git a/_images_de/phase_jitter.svg b/_images_de/phase_jitter.svg
new file mode 100644
index 00000000..7a5f6a1e
--- /dev/null
+++ b/_images_de/phase_jitter.svg
@@ -0,0 +1,1541 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/phase_jitter_awgn.svg b/_images_de/phase_jitter_awgn.svg
new file mode 100644
index 00000000..baa1c7ab
--- /dev/null
+++ b/_images_de/phase_jitter_awgn.svg
@@ -0,0 +1,1413 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/phaser_animation_hamming.gif b/_images_de/phaser_animation_hamming.gif
new file mode 100644
index 00000000..9aea74dc
Binary files /dev/null and b/_images_de/phaser_animation_hamming.gif differ
diff --git a/_images_de/phaser_animation_rect.gif b/_images_de/phaser_animation_rect.gif
new file mode 100644
index 00000000..8a999156
Binary files /dev/null and b/_images_de/phaser_animation_rect.gif differ
diff --git a/_images_de/phaser_components.png b/_images_de/phaser_components.png
new file mode 100644
index 00000000..fcae9a25
Binary files /dev/null and b/_images_de/phaser_components.png differ
diff --git a/_images_de/phaser_detailed_block_diagram.png b/_images_de/phaser_detailed_block_diagram.png
new file mode 100644
index 00000000..f7500d29
Binary files /dev/null and b/_images_de/phaser_detailed_block_diagram.png differ
diff --git a/_images_de/phaser_front_and_back.png b/_images_de/phaser_front_and_back.png
new file mode 100644
index 00000000..1c5fcc48
Binary files /dev/null and b/_images_de/phaser_front_and_back.png differ
diff --git a/_images_de/phaser_gui.png b/_images_de/phaser_gui.png
new file mode 100644
index 00000000..f6dd3bfa
Binary files /dev/null and b/_images_de/phaser_gui.png differ
diff --git a/_images_de/phaser_hb100.png b/_images_de/phaser_hb100.png
new file mode 100644
index 00000000..5bb624df
Binary files /dev/null and b/_images_de/phaser_hb100.png differ
diff --git a/_images_de/phaser_on_tripod.png b/_images_de/phaser_on_tripod.png
new file mode 100644
index 00000000..42604287
Binary files /dev/null and b/_images_de/phaser_on_tripod.png differ
diff --git a/_images_de/phaser_rx_psd.png b/_images_de/phaser_rx_psd.png
new file mode 100644
index 00000000..53accb6f
Binary files /dev/null and b/_images_de/phaser_rx_psd.png differ
diff --git a/_images_de/phaser_sweep.png b/_images_de/phaser_sweep.png
new file mode 100644
index 00000000..3b71d5b6
Binary files /dev/null and b/_images_de/phaser_sweep.png differ
diff --git a/_images_de/phaser_sweep_polar.png b/_images_de/phaser_sweep_polar.png
new file mode 100644
index 00000000..addc0a86
Binary files /dev/null and b/_images_de/phaser_sweep_polar.png differ
diff --git a/_images_de/pluto.png b/_images_de/pluto.png
new file mode 100644
index 00000000..e806cb4b
Binary files /dev/null and b/_images_de/pluto.png differ
diff --git a/_images_de/pluto_plus.png b/_images_de/pluto_plus.png
new file mode 100644
index 00000000..662ca0ed
Binary files /dev/null and b/_images_de/pluto_plus.png differ
diff --git a/_images_de/pluto_plus_pcb.jpg b/_images_de/pluto_plus_pcb.jpg
new file mode 100644
index 00000000..675b0601
Binary files /dev/null and b/_images_de/pluto_plus_pcb.jpg differ
diff --git a/_images_de/pluto_tx_rx.svg b/_images_de/pluto_tx_rx.svg
new file mode 100644
index 00000000..ce786431
--- /dev/null
+++ b/_images_de/pluto_tx_rx.svg
@@ -0,0 +1,777 @@
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [MHz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LDS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/psd_of_bpsk_used_for_caf.svg b/_images_de/psd_of_bpsk_used_for_caf.svg
new file mode 100644
index 00000000..1354dac4
--- /dev/null
+++ b/_images_de/psd_of_bpsk_used_for_caf.svg
@@ -0,0 +1,9288 @@
+
+
+
+
+
+
+
+ 2024-05-30T00:29:24.525765
+ image/svg+xml
+
+
+ Matplotlib v3.8.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LDS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/psd_of_multiple_signals.svg b/_images_de/psd_of_multiple_signals.svg
new file mode 100644
index 00000000..6649648d
--- /dev/null
+++ b/_images_de/psd_of_multiple_signals.svg
@@ -0,0 +1,858 @@
+
+
+
+
+
+
+
+ 2024-06-23T16:51:42.928832
+ image/svg+xml
+
+
+ Matplotlib v3.9.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LDS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/psk_set.png b/_images_de/psk_set.png
new file mode 100644
index 00000000..a0ab49f2
Binary files /dev/null and b/_images_de/psk_set.png differ
diff --git a/_images_de/pulse_shaped_BSPK.svg b/_images_de/pulse_shaped_BSPK.svg
new file mode 100644
index 00000000..8cf095bf
--- /dev/null
+++ b/_images_de/pulse_shaped_BSPK.svg
@@ -0,0 +1,791 @@
+
+
+
+
+
+
+
+ 2024-06-23T15:54:55.949298
+ image/svg+xml
+
+
+ Matplotlib v3.9.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sample-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Samplewert (I)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/pulse_shaping.png b/_images_de/pulse_shaping.png
new file mode 100644
index 00000000..8586070d
Binary files /dev/null and b/_images_de/pulse_shaping.png differ
diff --git a/_images_de/pulse_shaping_freq.png b/_images_de/pulse_shaping_freq.png
new file mode 100644
index 00000000..e4985029
Binary files /dev/null and b/_images_de/pulse_shaping_freq.png differ
diff --git a/_images_de/pulse_shaping_python1.png b/_images_de/pulse_shaping_python1.png
new file mode 100644
index 00000000..1b662715
Binary files /dev/null and b/_images_de/pulse_shaping_python1.png differ
diff --git a/_images_de/pulse_shaping_python2.png b/_images_de/pulse_shaping_python2.png
new file mode 100644
index 00000000..1a2015ab
Binary files /dev/null and b/_images_de/pulse_shaping_python2.png differ
diff --git a/_images_de/pulse_shaping_python3.png b/_images_de/pulse_shaping_python3.png
new file mode 100644
index 00000000..8fa30043
Binary files /dev/null and b/_images_de/pulse_shaping_python3.png differ
diff --git a/_images_de/pulse_shaping_python3.svg b/_images_de/pulse_shaping_python3.svg
new file mode 100644
index 00000000..7ea1cb73
--- /dev/null
+++ b/_images_de/pulse_shaping_python3.svg
@@ -0,0 +1,853 @@
+
+
+
+
+
+
+
+ 2022-02-28T22:27:04.733637
+ image/svg+xml
+
+
+ Matplotlib v3.5.1, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/pulse_shaping_rolloff.png b/_images_de/pulse_shaping_rolloff.png
new file mode 100644
index 00000000..551c9426
Binary files /dev/null and b/_images_de/pulse_shaping_rolloff.png differ
diff --git a/_images_de/pulse_train.svg b/_images_de/pulse_train.svg
new file mode 100644
index 00000000..7504b4ab
--- /dev/null
+++ b/_images_de/pulse_train.svg
@@ -0,0 +1,1568 @@
+
+
+
+
+
+
+
+ 2022-02-28T22:14:59.268925
+ image/svg+xml
+
+
+ Matplotlib v3.5.1, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ T
+ T
+ T
+ T
+ T
+ T
+ T
+ T
+ T
+ T
+ T
+ T
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zeit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Impulse (vor Kombination)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/pyqt_animation.gif b/_images_de/pyqt_animation.gif
new file mode 100644
index 00000000..3b1db9bb
Binary files /dev/null and b/_images_de/pyqt_animation.gif differ
diff --git a/_images_de/pyqt_spectrogram.png b/_images_de/pyqt_spectrogram.png
new file mode 100644
index 00000000..d5d19fa8
Binary files /dev/null and b/_images_de/pyqt_spectrogram.png differ
diff --git a/_images_de/pyqt_time_plot.png b/_images_de/pyqt_time_plot.png
new file mode 100644
index 00000000..bee3da0e
Binary files /dev/null and b/_images_de/pyqt_time_plot.png differ
diff --git a/_images_de/pyqtgraph_example.png b/_images_de/pyqtgraph_example.png
new file mode 100644
index 00000000..d5d72c8f
Binary files /dev/null and b/_images_de/pyqtgraph_example.png differ
diff --git a/_images_de/qam.png b/_images_de/qam.png
new file mode 100644
index 00000000..ff0d1aaa
Binary files /dev/null and b/_images_de/qam.png differ
diff --git a/_images_de/qam_time_domain.png b/_images_de/qam_time_domain.png
new file mode 100644
index 00000000..736f9314
Binary files /dev/null and b/_images_de/qam_time_domain.png differ
diff --git a/_images_de/qpsk.png b/_images_de/qpsk.png
new file mode 100644
index 00000000..008c2c46
Binary files /dev/null and b/_images_de/qpsk.png differ
diff --git a/_images_de/qpsk_list.png b/_images_de/qpsk_list.png
new file mode 100644
index 00000000..fba14cd5
Binary files /dev/null and b/_images_de/qpsk_list.png differ
diff --git a/_images_de/qpsk_python.svg b/_images_de/qpsk_python.svg
new file mode 100644
index 00000000..fc9c1ea2
--- /dev/null
+++ b/_images_de/qpsk_python.svg
@@ -0,0 +1,1541 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/qpsk_python2.svg b/_images_de/qpsk_python2.svg
new file mode 100644
index 00000000..c6d50af8
--- /dev/null
+++ b/_images_de/qpsk_python2.svg
@@ -0,0 +1,1541 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/qpsk_vs_16qam.png b/_images_de/qpsk_vs_16qam.png
new file mode 100644
index 00000000..3534c86f
Binary files /dev/null and b/_images_de/qpsk_vs_16qam.png differ
diff --git a/_images_de/qt_layouts.svg b/_images_de/qt_layouts.svg
new file mode 100644
index 00000000..c2df4036
--- /dev/null
+++ b/_images_de/qt_layouts.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/_images_de/raised_cosine.svg b/_images_de/raised_cosine.svg
new file mode 100644
index 00000000..50ee4c65
--- /dev/null
+++ b/_images_de/raised_cosine.svg
@@ -0,0 +1,1134 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zeit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/raised_cosine_freq.svg b/_images_de/raised_cosine_freq.svg
new file mode 100644
index 00000000..3c3cb24a
--- /dev/null
+++ b/_images_de/raised_cosine_freq.svg
@@ -0,0 +1,789 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/rayleigh.svg b/_images_de/rayleigh.svg
new file mode 100644
index 00000000..55b01930
--- /dev/null
+++ b/_images_de/rayleigh.svg
@@ -0,0 +1,1005 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Rayleigh-Fading
+
+
+
+
+ Kein Fading
+
+
+
+
+
+
+
+ Zeit [s]
+ Kanalbetrag [dB]
+
diff --git a/_images_de/realistic_filter.png b/_images_de/realistic_filter.png
new file mode 100644
index 00000000..d9208e83
Binary files /dev/null and b/_images_de/realistic_filter.png differ
diff --git a/_images_de/receiver_arch_diagram.svg b/_images_de/receiver_arch_diagram.svg
new file mode 100644
index 00000000..fffaf117
--- /dev/null
+++ b/_images_de/receiver_arch_diagram.svg
@@ -0,0 +1,610 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Direktabtastung (auch: Direct RF)very teurer ADC
+
+ Direktmischung (auch: Zero IF)e.g. USRP B200, PlutoSDR Überlagerungsempfänger e.g. UKW-Radio im alten Auto
+
+
+
+
+
+
+
+
+ LNA
+
+ TeuerADC
+
+ LNA
+
+ ADC
+
+ ADC
+
+ Filter
+
+ Filter
+
+
+ ADCo rAnalog De -mod
+
+ Filter
+
+
+
+
+ LNA
+
+ Filter
+
+
+
+ 90o Verschiebung
+
+
+
+
+
+
+
+
+
+
+ LOLO I Q
+
+
diff --git a/_images_de/rect_exp_conv.gif b/_images_de/rect_exp_conv.gif
new file mode 100644
index 00000000..d6616806
Binary files /dev/null and b/_images_de/rect_exp_conv.gif differ
diff --git a/_images_de/rect_fat_rect_conv.gif b/_images_de/rect_fat_rect_conv.gif
new file mode 100644
index 00000000..8b00ef2e
Binary files /dev/null and b/_images_de/rect_fat_rect_conv.gif differ
diff --git a/_images_de/rect_rect_conv.gif b/_images_de/rect_rect_conv.gif
new file mode 100644
index 00000000..4f1fa684
Binary files /dev/null and b/_images_de/rect_rect_conv.gif differ
diff --git a/_images_de/rrc_filter.png b/_images_de/rrc_filter.png
new file mode 100644
index 00000000..6fec5a94
Binary files /dev/null and b/_images_de/rrc_filter.png differ
diff --git a/_images_de/rrc_rolloff.svg b/_images_de/rrc_rolloff.svg
new file mode 100644
index 00000000..a0e981d6
--- /dev/null
+++ b/_images_de/rrc_rolloff.svg
@@ -0,0 +1,1108 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zeit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/rtlsdr-gain.svg b/_images_de/rtlsdr-gain.svg
new file mode 100644
index 00000000..44246377
--- /dev/null
+++ b/_images_de/rtlsdr-gain.svg
@@ -0,0 +1,5163 @@
+
+
+
+
+
+
+
+ 2024-03-11T05:04:52.363447
+ image/svg+xml
+
+
+ Matplotlib v3.7.2, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/rtlsdr-waterfall.svg b/_images_de/rtlsdr-waterfall.svg
new file mode 100644
index 00000000..4b106e23
--- /dev/null
+++ b/_images_de/rtlsdr-waterfall.svg
@@ -0,0 +1,489 @@
+
+
+
+
+
+
+
+ 2024-03-11T05:08:57.202462
+ image/svg+xml
+
+
+ Matplotlib v3.7.2, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [MHz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zeit [s]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/rtlsdrs.svg b/_images_de/rtlsdrs.svg
new file mode 100644
index 00000000..01b2014f
--- /dev/null
+++ b/_images_de/rtlsdrs.svg
@@ -0,0 +1,11653 @@
+
+
diff --git a/_images_de/sampling.svg b/_images_de/sampling.svg
new file mode 100644
index 00000000..cd9ea0fc
--- /dev/null
+++ b/_images_de/sampling.svg
@@ -0,0 +1,531 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/sampling_Fs_0.3.svg b/_images_de/sampling_Fs_0.3.svg
new file mode 100644
index 00000000..487f2806
--- /dev/null
+++ b/_images_de/sampling_Fs_0.3.svg
@@ -0,0 +1,501 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/sampling_Fs_0.36.svg b/_images_de/sampling_Fs_0.36.svg
new file mode 100644
index 00000000..f66b11c8
--- /dev/null
+++ b/_images_de/sampling_Fs_0.36.svg
@@ -0,0 +1,581 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/sampling_Fs_0.45.svg b/_images_de/sampling_Fs_0.45.svg
new file mode 100644
index 00000000..5fe94a4b
--- /dev/null
+++ b/_images_de/sampling_Fs_0.45.svg
@@ -0,0 +1,674 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/sampling_Fs_0.6.svg b/_images_de/sampling_Fs_0.6.svg
new file mode 100644
index 00000000..d9882fd5
--- /dev/null
+++ b/_images_de/sampling_Fs_0.6.svg
@@ -0,0 +1,189 @@
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/_images_de/saturated_time.png b/_images_de/saturated_time.png
new file mode 100644
index 00000000..72fa8e96
Binary files /dev/null and b/_images_de/saturated_time.png differ
diff --git a/_images_de/scf_coherence.svg b/_images_de/scf_coherence.svg
new file mode 100644
index 00000000..6837bb75
--- /dev/null
+++ b/_images_de/scf_coherence.svg
@@ -0,0 +1,602 @@
+
+
+
+
+
+
+
+ 2024-06-27T23:20:13.113719
+ image/svg+xml
+
+
+ Matplotlib v3.9.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zyklische Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reguläres SCF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Spektrale Kohärenzfunktion (COH)
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/scf_coherence_pulse_shaped.svg b/_images_de/scf_coherence_pulse_shaped.svg
new file mode 100644
index 00000000..1c5a9fda
--- /dev/null
+++ b/_images_de/scf_coherence_pulse_shaped.svg
@@ -0,0 +1,602 @@
+
+
+
+
+
+
+
+ 2024-06-27T23:22:57.790536
+ image/svg+xml
+
+
+ Matplotlib v3.9.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zyklische Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reguläres SCF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Spektrale Kohärenzfunktion (COH)
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/scf_conj_multiple_signals.svg b/_images_de/scf_conj_multiple_signals.svg
new file mode 100644
index 00000000..0e51acd6
--- /dev/null
+++ b/_images_de/scf_conj_multiple_signals.svg
@@ -0,0 +1,765 @@
+
+
+
+
+
+
+
+ 2024-06-26T20:23:50.006241
+ image/svg+xml
+
+
+ Matplotlib v3.9.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zyklische Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/scf_conj_pulseshaped_bpsk.svg b/_images_de/scf_conj_pulseshaped_bpsk.svg
new file mode 100644
index 00000000..c908f61f
--- /dev/null
+++ b/_images_de/scf_conj_pulseshaped_bpsk.svg
@@ -0,0 +1,649 @@
+
+
+
+
+
+
+
+ 2024-06-26T15:33:41.847842
+ image/svg+xml
+
+
+ Matplotlib v3.9.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zyklische Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/scf_conj_rect_bpsk.svg b/_images_de/scf_conj_rect_bpsk.svg
new file mode 100644
index 00000000..18a78d20
--- /dev/null
+++ b/_images_de/scf_conj_rect_bpsk.svg
@@ -0,0 +1,634 @@
+
+
+
+
+
+
+
+ 2024-06-26T15:33:59.110422
+ image/svg+xml
+
+
+ Matplotlib v3.9.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zyklische Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/scf_conj_rect_qpsk.svg b/_images_de/scf_conj_rect_qpsk.svg
new file mode 100644
index 00000000..c86b17b2
--- /dev/null
+++ b/_images_de/scf_conj_rect_qpsk.svg
@@ -0,0 +1,595 @@
+
+
+
+
+
+
+
+ 2024-06-26T15:32:45.711198
+ image/svg+xml
+
+
+ Matplotlib v3.9.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zyklische Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/scf_conj_rect_qpsk_scaled.svg b/_images_de/scf_conj_rect_qpsk_scaled.svg
new file mode 100644
index 00000000..d52002c5
--- /dev/null
+++ b/_images_de/scf_conj_rect_qpsk_scaled.svg
@@ -0,0 +1,649 @@
+
+
+
+
+
+
+
+ 2024-06-26T15:37:28.058812
+ image/svg+xml
+
+
+ Matplotlib v3.9.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zyklische Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/scf_fam.svg b/_images_de/scf_fam.svg
new file mode 100644
index 00000000..c8285ee3
--- /dev/null
+++ b/_images_de/scf_fam.svg
@@ -0,0 +1,425 @@
+
+
+
+
+
+
+
+ 2024-06-06T05:28:28.834463
+ image/svg+xml
+
+
+ Matplotlib v3.9.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zyklische Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/scf_fam_1d.svg b/_images_de/scf_fam_1d.svg
new file mode 100644
index 00000000..0f659540
--- /dev/null
+++ b/_images_de/scf_fam_1d.svg
@@ -0,0 +1,4201 @@
+
+
+
+
+
+
+
+ 2024-06-06T05:28:29.098718
+ image/svg+xml
+
+
+ Matplotlib v3.9.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zyklische Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SCF-Leistung
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/scf_fam_zoomedin.svg b/_images_de/scf_fam_zoomedin.svg
new file mode 100644
index 00000000..4e74a9f9
--- /dev/null
+++ b/_images_de/scf_fam_zoomedin.svg
@@ -0,0 +1,516 @@
+
+
+
+
+
+
+
+ 2024-06-06T05:28:29.007944
+ image/svg+xml
+
+
+ Matplotlib v3.9.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zyklische Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/scf_freq_smoothing.svg b/_images_de/scf_freq_smoothing.svg
new file mode 100644
index 00000000..ee91f70f
--- /dev/null
+++ b/_images_de/scf_freq_smoothing.svg
@@ -0,0 +1,385 @@
+
+
+
+
+
+
+
+ 2024-06-06T23:37:23.699278
+ image/svg+xml
+
+
+ Matplotlib v3.9.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zyklische Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/scf_freq_smoothing_ofdm.svg b/_images_de/scf_freq_smoothing_ofdm.svg
new file mode 100644
index 00000000..9def4dfe
--- /dev/null
+++ b/_images_de/scf_freq_smoothing_ofdm.svg
@@ -0,0 +1,413 @@
+
+
+
+
+
+
+
+ 2024-06-20T00:26:31.961436
+ image/svg+xml
+
+
+ Matplotlib v3.9.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zyklische Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/scf_freq_smoothing_ofdm_zoomed_in.svg b/_images_de/scf_freq_smoothing_ofdm_zoomed_in.svg
new file mode 100644
index 00000000..e151ead0
--- /dev/null
+++ b/_images_de/scf_freq_smoothing_ofdm_zoomed_in.svg
@@ -0,0 +1,463 @@
+
+
+
+
+
+
+
+ 2026-01-23T13:53:18.154826
+ image/svg+xml
+
+
+ Matplotlib v3.10.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zyklische Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/scf_freq_smoothing_pulse_multiple_signals.svg b/_images_de/scf_freq_smoothing_pulse_multiple_signals.svg
new file mode 100644
index 00000000..417a4d2b
--- /dev/null
+++ b/_images_de/scf_freq_smoothing_pulse_multiple_signals.svg
@@ -0,0 +1,701 @@
+
+
+
+
+
+
+
+ 2024-06-23T16:53:52.648993
+ image/svg+xml
+
+
+ Matplotlib v3.9.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zyklische Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/scf_freq_smoothing_pulse_shaped_bpsk.svg b/_images_de/scf_freq_smoothing_pulse_shaped_bpsk.svg
new file mode 100644
index 00000000..c550a4e8
--- /dev/null
+++ b/_images_de/scf_freq_smoothing_pulse_shaped_bpsk.svg
@@ -0,0 +1,385 @@
+
+
+
+
+
+
+
+ 2024-06-23T15:57:54.674888
+ image/svg+xml
+
+
+ Matplotlib v3.9.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zyklische Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/scf_freq_smoothing_pulse_shaped_bpsk2.svg b/_images_de/scf_freq_smoothing_pulse_shaped_bpsk2.svg
new file mode 100644
index 00000000..3e0e507f
--- /dev/null
+++ b/_images_de/scf_freq_smoothing_pulse_shaped_bpsk2.svg
@@ -0,0 +1,385 @@
+
+
+
+
+
+
+
+ 2024-06-23T18:03:34.093860
+ image/svg+xml
+
+
+ Matplotlib v3.9.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zyklische Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/scf_freq_smoothing_pulse_shaped_bpsk3.svg b/_images_de/scf_freq_smoothing_pulse_shaped_bpsk3.svg
new file mode 100644
index 00000000..490b7705
--- /dev/null
+++ b/_images_de/scf_freq_smoothing_pulse_shaped_bpsk3.svg
@@ -0,0 +1,385 @@
+
+
+
+
+
+
+
+ 2024-06-23T18:03:53.742221
+ image/svg+xml
+
+
+ Matplotlib v3.9.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zyklische Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/scf_time_smoothing.svg b/_images_de/scf_time_smoothing.svg
new file mode 100644
index 00000000..5eb911a3
--- /dev/null
+++ b/_images_de/scf_time_smoothing.svg
@@ -0,0 +1,385 @@
+
+
+
+
+
+
+
+ 2024-06-06T02:13:09.227435
+ image/svg+xml
+
+
+ Matplotlib v3.9.0, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zyklische Frequenz [norm. Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/shannon_limit.svg b/_images_de/shannon_limit.svg
new file mode 100644
index 00000000..814067ed
--- /dev/null
+++ b/_images_de/shannon_limit.svg
@@ -0,0 +1,628 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Shannon-Grenze [Bits/s/Hz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/shannon_limit_proof.png b/_images_de/shannon_limit_proof.png
new file mode 100644
index 00000000..4e8d2dcb
Binary files /dev/null and b/_images_de/shannon_limit_proof.png differ
diff --git a/_images_de/shifted_filter.png b/_images_de/shifted_filter.png
new file mode 100644
index 00000000..c6095365
Binary files /dev/null and b/_images_de/shifted_filter.png differ
diff --git a/_images_de/shifted_filter_nolabel.png b/_images_de/shifted_filter_nolabel.png
new file mode 100644
index 00000000..73f41a08
Binary files /dev/null and b/_images_de/shifted_filter_nolabel.png differ
diff --git a/_images_de/sigmf_logo.gif b/_images_de/sigmf_logo.gif
new file mode 100644
index 00000000..ecf72699
Binary files /dev/null and b/_images_de/sigmf_logo.gif differ
diff --git a/_images_de/silly_marc.jpg b/_images_de/silly_marc.jpg
new file mode 100644
index 00000000..91ae92a8
Binary files /dev/null and b/_images_de/silly_marc.jpg differ
diff --git a/_images_de/sine-wave.png b/_images_de/sine-wave.png
new file mode 100644
index 00000000..e4989e37
Binary files /dev/null and b/_images_de/sine-wave.png differ
diff --git a/_images_de/spatial_tapering_animation.gif b/_images_de/spatial_tapering_animation.gif
new file mode 100644
index 00000000..9fdc698d
Binary files /dev/null and b/_images_de/spatial_tapering_animation.gif differ
diff --git a/_images_de/spatial_tapering_animation2.gif b/_images_de/spatial_tapering_animation2.gif
new file mode 100644
index 00000000..9d07a6b4
Binary files /dev/null and b/_images_de/spatial_tapering_animation2.gif differ
diff --git a/_images_de/spectrogram.svg b/_images_de/spectrogram.svg
new file mode 100644
index 00000000..767593c3
--- /dev/null
+++ b/_images_de/spectrogram.svg
@@ -0,0 +1,425 @@
+
+
+
+
+
+
+
+ 2026-02-24T01:48:09.678494
+ image/svg+xml
+
+
+ Matplotlib v3.10.3, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz [MHz]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zeit [s]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/spectrogram_diagram.svg b/_images_de/spectrogram_diagram.svg
new file mode 100644
index 00000000..395a97c3
--- /dev/null
+++ b/_images_de/spectrogram_diagram.svg
@@ -0,0 +1 @@
+F requenz - F S /2 Z eit FFT von Abschnitt 1 FFT von Abschnitt 2 FFT von Abschnitt 3 FFT von Abschnitt 4 FFT von Abschnitt 5 FFT von Abschnitt 6 F S /2 0 Abschnitt 1 Abschnitt 2 Abschnitt 3 Abschnitt 5 Abschnitt 4 Abschnitt 6 Zeitbereich (IQ-Samples) 0 Spektrogramm 0
\ No newline at end of file
diff --git a/_images_de/spectrogram_time.svg b/_images_de/spectrogram_time.svg
new file mode 100644
index 00000000..da938ea0
--- /dev/null
+++ b/_images_de/spectrogram_time.svg
@@ -0,0 +1,1003 @@
+
+
+
+
+
+
+
+ 2022-02-11T22:37:25.600196
+ image/svg+xml
+
+
+ Matplotlib v3.5.1, https://matplotlib.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zeit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/splitting_rc_filter.svg b/_images_de/splitting_rc_filter.svg
new file mode 100644
index 00000000..26a77727
--- /dev/null
+++ b/_images_de/splitting_rc_filter.svg
@@ -0,0 +1,291 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+ Modulation
+
+
+ Impuls Shaping
+
+
+
+ Drahtlos Kanal
+
+
+
+ Bits
+
+
+
+
+
+
+
+
+
+ Angepasst Filter
+
+
+
+ Demodulation
+
+
+ Bits (hopefully)
+
+
+
+
+
+ RC Filter
+
+
+
+
+
+
+ RC Filter
+
+
+
+
+
+
+
diff --git a/_images_de/square-wave.svg b/_images_de/square-wave.svg
new file mode 100644
index 00000000..7099ab62
--- /dev/null
+++ b/_images_de/square-wave.svg
@@ -0,0 +1,1057 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zeit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenz
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Betrag
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/squaring-qpsk.gif b/_images_de/squaring-qpsk.gif
new file mode 100644
index 00000000..8f6e8b5a
Binary files /dev/null and b/_images_de/squaring-qpsk.gif differ
diff --git a/_images_de/squaring-qpsk2.gif b/_images_de/squaring-qpsk2.gif
new file mode 100644
index 00000000..d1c552af
Binary files /dev/null and b/_images_de/squaring-qpsk2.gif differ
diff --git a/_images_de/summing_sinusoids.svg b/_images_de/summing_sinusoids.svg
new file mode 100644
index 00000000..a944bc62
--- /dev/null
+++ b/_images_de/summing_sinusoids.svg
@@ -0,0 +1,205 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +=
+
+
diff --git a/_images_de/symbol_sync1.png b/_images_de/symbol_sync1.png
new file mode 100644
index 00000000..a229f17b
Binary files /dev/null and b/_images_de/symbol_sync1.png differ
diff --git a/_images_de/symbol_sync2.png b/_images_de/symbol_sync2.png
new file mode 100644
index 00000000..98f6a541
Binary files /dev/null and b/_images_de/symbol_sync2.png differ
diff --git a/_images_de/symbol_sync3.png b/_images_de/symbol_sync3.png
new file mode 100644
index 00000000..1dc16436
Binary files /dev/null and b/_images_de/symbol_sync3.png differ
diff --git a/_images_de/symbol_sync4.png b/_images_de/symbol_sync4.png
new file mode 100644
index 00000000..17370476
Binary files /dev/null and b/_images_de/symbol_sync4.png differ
diff --git a/_images_de/symbols.png b/_images_de/symbols.png
new file mode 100644
index 00000000..2921c36f
Binary files /dev/null and b/_images_de/symbols.png differ
diff --git a/_images_de/symbols1.png b/_images_de/symbols1.png
new file mode 100644
index 00000000..f6ce5f79
Binary files /dev/null and b/_images_de/symbols1.png differ
diff --git a/_images_de/sync-diagram.svg b/_images_de/sync-diagram.svg
new file mode 100644
index 00000000..a61a6998
--- /dev/null
+++ b/_images_de/sync-diagram.svg
@@ -0,0 +1 @@
+Bits(from higher layer) KanalCoding Modulation Impuls Shaping Angepasst Filter Grob Freq Sync Zeitsynchronisation Feine Frequenz Sync Rahmen Detect/Sync Demodulation Kanal Decoding Bits (hoffentlich) Drahtlos Kanal
\ No newline at end of file
diff --git a/_images_de/sync-freq-offset.svg b/_images_de/sync-freq-offset.svg
new file mode 100644
index 00000000..2c922743
--- /dev/null
+++ b/_images_de/sync-freq-offset.svg
@@ -0,0 +1,6016 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vor Frequenzversatz
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Nach Frequenzversatz
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/time-scaling.svg b/_images_de/time-scaling.svg
new file mode 100644
index 00000000..93e3e63d
--- /dev/null
+++ b/_images_de/time-scaling.svg
@@ -0,0 +1,673 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zeit
+ Zeit
+ mehr Bits pro Sekunde
+
+
+
+
+
+
+ Frequenz
+
+
+
+
+ Frequenz
+ mehr Spektrum benötigt
+
diff --git a/_images_de/time-sync-constellation-animated.gif b/_images_de/time-sync-constellation-animated.gif
new file mode 100644
index 00000000..fe0737e8
Binary files /dev/null and b/_images_de/time-sync-constellation-animated.gif differ
diff --git a/_images_de/time-sync-constellation.svg b/_images_de/time-sync-constellation.svg
new file mode 100644
index 00000000..7081f8c0
--- /dev/null
+++ b/_images_de/time-sync-constellation.svg
@@ -0,0 +1,1566 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vor Zeitsynchronisation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Nach Zeitsynchronisation
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/time-sync-interpolated-samples.svg b/_images_de/time-sync-interpolated-samples.svg
new file mode 100644
index 00000000..398d6b65
--- /dev/null
+++ b/_images_de/time-sync-interpolated-samples.svg
@@ -0,0 +1,917 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vor Interpolation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Nach Interpolation
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/time-sync-original-data.svg b/_images_de/time-sync-original-data.svg
new file mode 100644
index 00000000..db9398a6
--- /dev/null
+++ b/_images_de/time-sync-original-data.svg
@@ -0,0 +1,1710 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/time-sync-output.svg b/_images_de/time-sync-output.svg
new file mode 100644
index 00000000..90ce2dff
--- /dev/null
+++ b/_images_de/time-sync-output.svg
@@ -0,0 +1,3534 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/time-sync-output2.svg b/_images_de/time-sync-output2.svg
new file mode 100644
index 00000000..0f74e3ff
--- /dev/null
+++ b/_images_de/time-sync-output2.svg
@@ -0,0 +1,2193 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/time-sync-pulse-shaped.svg b/_images_de/time-sync-pulse-shaped.svg
new file mode 100644
index 00000000..96bc4d9b
--- /dev/null
+++ b/_images_de/time-sync-pulse-shaped.svg
@@ -0,0 +1,835 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/time_and_freq_domain_example_signals.png b/_images_de/time_and_freq_domain_example_signals.png
new file mode 100644
index 00000000..58178529
Binary files /dev/null and b/_images_de/time_and_freq_domain_example_signals.png differ
diff --git a/_images_de/translate_matplotlib_svgs.py b/_images_de/translate_matplotlib_svgs.py
new file mode 100644
index 00000000..a369d117
--- /dev/null
+++ b/_images_de/translate_matplotlib_svgs.py
@@ -0,0 +1,380 @@
+"""
+Post-process Matplotlib-generated SVGs to translate English axis labels to German.
+
+Matplotlib SVGs store text as glyph paths, not elements. This script:
+1. Finds text groups identified by HTML comments ()
+2. Extracts the position from the transform attribute
+3. Replaces the glyph group with an SVG element in German
+
+Supports three transform formats used by different matplotlib/SVG versions:
+ - translate(x y) scale(a b)
+ - translate(x y) rotate(angle) scale(a b)
+ - matrix(a,b,c,d,e,f)
+"""
+import re
+import os
+import glob
+
+# =========================================================================
+# Translation dictionary (English → German)
+# =========================================================================
+TRANSLATIONS = {
+ # --- Axis labels ---
+ "Sample Index": "Sample-Index",
+ "Signal Amplitude": "Signalamplitude",
+ "FFT Magnitude": "FFT-Betrag",
+ "FFT Phase [radians]": "FFT-Phase [Radianten]",
+ "FFT Index": "FFT-Index",
+ "Frequency [Hz]": "Frequenz [Hz]",
+ "Frequency [MHz]": "Frequenz [MHz]",
+ "Frequency [kHz]": "Frequenz [kHz]",
+ "Frequency [GHz]": "Frequenz [GHz]",
+ "Frequency [Normalized Hz]": "Frequenz [norm. Hz]",
+ "Frequency Domain": "Frequenzbereich",
+ "Frequency Response of Filter": "Frequenzgang des Filters",
+ "Frequency offset (kHz)": "Frequenzversatz (kHz)",
+ "Frequency": "Frequenz",
+ "Time [s]": "Zeit [s]",
+ "Time Domain": "Zeitbereich",
+ "Time": "Zeit",
+ "Amplitude / Value": "Amplitude / Wert",
+ "Amplitude": "Amplitude",
+ "Magnitude [dB]": "Betrag [dB]",
+ "Magnitude": "Betrag",
+ "Power [linear]": "Leistung [linear]",
+ "Power Spectral Density [dB]": "Leistungsdichtespektrum [dB]",
+ "Power, dB": "Leistung [dB]",
+ "Power": "Leistung",
+ "Phase Estimate [degrees]": "Phasenschätzung [Grad]",
+ "Phase": "Phase",
+ "Sample Value (I)": "Samplewert (I)",
+ "Samples": "Samples",
+ "Sample": "Sample",
+ "Index": "Index",
+ "Angle [deg]": "Winkel [Grad]",
+ "Azimuth angle (deg)": "Azimutwinkel (Grad)",
+ "Azimuth angle [degrees]": "Azimutwinkel [Grad]",
+ "Elevation angle [degrees]": "Elevationswinkel [Grad]",
+ "Theta (azimuth, degrees)": "Theta (Azimut, Grad)",
+ "theta (20 deg)": "Theta (20 Grad)",
+ "Phi (elevation, degrees)": "Phi (Elevation, Grad)",
+ "Theta [Degrees]": "Theta [Grad]",
+ "Eigenvalue [dB]": "Eigenwert [dB]",
+ "Beam Pattern [dB]": "Strahlmuster [dB]",
+ "DOA Metric": "DOA-Metrik",
+ "Channel Magnitude [dB]": "Kanalbetrag [dB]",
+ "Signal Magnitude [Linear]": "Signalbetrag [linear]",
+ "Normalized Frequency": "Normierte Frequenz",
+ "Cyclic Frequency [Normalized Hz]": "Zyklische Frequenz [norm. Hz]",
+ "SCF Magnitude": "SCF-Betrag",
+ "SCF Power": "SCF-Leistung",
+ "CAF Power": "CAF-Leistung",
+ "CAF (real part)": "CAF (Realteil)",
+ "Tau": "Tau",
+ "Alpha": "Alpha",
+ "PSD [dB]": "LDS [dB]",
+ "PSD Before FM Demod [dB]": "LDS vor FM-Demod [dB]",
+ "PSD": "LDS",
+ "Shannon Limit [bits/s/Hz]": "Shannon-Grenze [Bits/s/Hz]",
+ "SNR [dB]": "SNR [dB]",
+ "SNR (dB)": "SNR (dB)",
+ "X Position [m]": "X-Position [m]",
+ "Y Position [m]": "Y-Position [m]",
+ "Z Position [m]": "Z-Position [m]",
+ "Correlation Magnitude [Linear]": "Korrelationsbetrag [linear]",
+ "Normalized Correlation Peak Magnitude": "Normierter Korrelations-Spitzenwert",
+ "Normalized correlation peak (dB)": "Normierter Korrelationspeak [dB]",
+ "Normalized Correlation": "Normierte Korrelation",
+ "Correlation Power": "Korrelationsleistung",
+ "Number of taps": "Anzahl der Koeffizienten",
+ "Time per call (ms)": "Zeit pro Aufruf (ms)",
+ "Code Phase (chips)": "Codephase (Chips)",
+ "Offset (Fraction of a Chip)": "Versatz (Chip-Bruchteil)",
+ "Freq Offset": "Frequenzversatz",
+ "Freq": "Frequenz",
+ "Pd": "Pd",
+ "Pfa": "Pfa",
+ "Period (1/Frequency)": "Periode (1/Frequenz)",
+ "20 degrees": "20 Grad",
+
+ # --- Plot titles ---
+ "Beam Pattern and DOA Results, With Training": "Strahlmuster und DOA-Ergebnisse, mit Training",
+ "Beam Pattern and DOA Results, Without Training": "Strahlmuster und DOA-Ergebnisse, ohne Training",
+ "Conventional Pattern": "Konventionelles Muster",
+ "MVDR Pattern": "MVDR-Muster",
+ "Detection probability vs SNR for various frequency offsets": "Erkennungswahrscheinlichkeit vs. SNR",
+ "Correlation degradation vs frequency offset": "Korrelationsdegradation vs. Frequenzversatz",
+ "DSSS Correlation Peak vs. Fractional Chip Timing Offset": "DSSS-Korrelationspeak vs. Chip-Versatz",
+ "Preamble Correlator Output with Adaptive CFAR Threshold": "Präambel-Korrelationsausgang mit CFAR",
+ "ROC Curves": "ROC-Kurven",
+ "Probability of detection": "Erkennungswahrscheinlichkeit",
+ "Pd vs SNR (Pfa=0.01)": "Pd vs. SNR (Pfa=0,01)",
+ "SV 11 — Code-Phase Slice (Doppler = +2500 Hz)": "SV 11 — Codephase (Doppler = +2500 Hz)",
+
+ # --- Legend / annotation labels ---
+ "Input Signal Length: 1000 samples": "Eingangssignallänge: 1000 Samples",
+ "Input Signal Length: 100000 samples": "Eingangssignallänge: 100000 Samples",
+ "Input": "Eingang",
+ "Output": "Ausgang",
+ "Error": "Fehler",
+ "Signal 1": "Signal 1",
+ "Signal 2": "Signal 2",
+ "Signal 3": "Signal 3",
+ "Real part of signal": "Realteil des Signals",
+ "Wireless Signal": "Drahtloses Signal",
+ "No Fading": "Kein Fading",
+ "Rayleigh Fading": "Rayleigh-Fading",
+ "Symbols": "Symbole",
+ "Decoded": "Dekodiert",
+ "Encoded": "Kodiert",
+ "Our Data": "Unsere Daten",
+ "Combined": "Kombiniert",
+ "Pulses (before being combined)": "Impulse (vor Kombination)",
+ "Starting With 0": "Beginnend mit 0",
+ "Starting With 1": "Beginnend mit 1",
+ "True Offset": "Wahrer Versatz",
+ "Perfect Alignment": "Perfekte Ausrichtung",
+ "After Costas Loop": "Nach Costas-Schleife",
+ "Before Costas Loop": "Vor Costas-Schleife",
+ "After Freq Offset": "Nach Frequenzversatz",
+ "Before Freq Offset": "Vor Frequenzversatz",
+ "After Interpolation": "Nach Interpolation",
+ "Before Interpolation": "Vor Interpolation",
+ "After Time Sync": "Nach Zeitsynchronisation",
+ "Before Time Sync": "Vor Zeitsynchronisation",
+ "Detections (Preamble Found)": "Erkennungen (Präambel gefunden)",
+ "CFAR Adaptive Threshold": "CFAR-Adaptivschwelle",
+ "0.15 Hz": "0,15 Hz",
+ "Zoomed in below": "Vergrößert unten",
+ "Regular SCF": "Reguläres SCF",
+ "Spectral Coherence Function (COH)": "Spektrale Kohärenzfunktion (COH)",
+ "Time-Domain Received Signal": "Empfangssignal im Zeitbereich",
+ "Correlator Output $|r(t) * p^*(-t)|^2$": "Korrelatorausgang",
+ "Rx Signal Power ($|r(t)|^2$)": "Empfangssignalleistung",
+ "Offset=0.0 kHz": "Versatz=0,0 kHz",
+ "Offset=2.0 kHz": "Versatz=2,0 kHz",
+ "Offset=5.0 kHz": "Versatz=5,0 kHz",
+}
+
+# Window names are proper names, no translation needed:
+# Hamming, Hanning, Blackman, Bartlett, Kaiser, Rectangular → Rechteck
+
+
+def find_text_groups(content):
+ """Find matplotlib text groups by scanning for comment+transform patterns.
+
+ Returns list of dicts with keys: label, tx, ty, rotate, scale, start, end, g_open
+ """
+ results = []
+
+ # A text group looks like:
+ #
+ #
+ # [optional ... ]
+ #
+ # ... glyph uses ...
+ #
+ #
+ #
+ # The transform can be:
+ # translate(x y) [rotate(angle)] scale(a b)
+ # matrix(a,b,c,d,e,f) where (e,f) = translate and (a,d) = scale
+
+ # Build combined regex that handles both transform types
+ TRANSFORM_PAT = (
+ r'(?:'
+ r'translate\(([^)]+)\)(?:\s*rotate\(([^)]+)\))?\s*scale\(([^)]+)\)' # variant 1
+ r'|'
+ r'matrix\(([0-9.eE+\-]+),([0-9.eE+\-]+),([0-9.eE+\-]+),([0-9.eE+\-]+),([0-9.eE+\-]+),([0-9.eE+\-]+)\)' # variant 2
+ r')'
+ )
+
+ pattern = re.compile(
+ r'(]*id="text_\d+"[^>]*>)\s*' # outer g with text id
+ r'\s*' # comment = label
+ r'(?:]*>.*? \s*)?' # optional inline defs
+ r']*transform="' + TRANSFORM_PAT + r'"',
+ re.DOTALL
+ )
+
+ for m in pattern.finditer(content):
+ label = m.group(2).strip()
+ g_open = m.group(1)
+
+ # Groups 3-5: translate variant; groups 6-11: matrix variant
+ if m.group(3) is not None: # translate variant
+ pos_parts = m.group(3).split()
+ rotate_str = m.group(4)
+ scale_str = m.group(5) or "0.1 -0.1"
+ try:
+ tx, ty = float(pos_parts[0]), float(pos_parts[1])
+ except (ValueError, IndexError):
+ continue
+ else: # matrix variant
+ try:
+ ma = float(m.group(6)) # scale_x
+ # mb = m.group(7) # 0 normally
+ # mc = m.group(8) # 0 normally
+ md = float(m.group(9)) # scale_y (negative = y-flip)
+ tx = float(m.group(10))
+ ty = float(m.group(11))
+ except (ValueError, TypeError):
+ continue
+ rotate_str = None
+ scale_str = f"{abs(ma)} {abs(md)}"
+
+ # Find end of the outer group
+ start = m.start()
+ depth = 0
+ group_end = -1
+ for i in range(start, min(start + 50000, len(content))):
+ if content[i:i+2] == '':
+ depth -= 1
+ if depth == 0:
+ group_end = i + 4
+ break
+ if group_end == -1:
+ continue
+
+ results.append({
+ 'label': label,
+ 'tx': tx,
+ 'ty': ty,
+ 'rotate': rotate_str,
+ 'scale': scale_str,
+ 'start': start,
+ 'end': group_end,
+ 'g_open': g_open,
+ })
+
+ return results
+
+
+def estimate_font_size(scale_str):
+ """Estimate font-size in SVG units from the scale string."""
+ parts = scale_str.split()
+ try:
+ scale = abs(float(parts[0]))
+ return max(6.0, scale * 100)
+ except (ValueError, IndexError):
+ return 10.0
+
+
+def make_text_element(group_info, german_text, font_size):
+ """Build an SVG element to replace a glyph group."""
+ tx = group_info['tx']
+ ty = group_info['ty']
+ rotate = group_info['rotate']
+
+ id_match = re.search(r'id="([^"]+)"', group_info['g_open'])
+ group_id = id_match.group(1) if id_match else 'text_x'
+
+ safe_text = (german_text
+ .replace('&', '&')
+ .replace('<', '<')
+ .replace('>', '>'))
+
+ if rotate is not None:
+ transform = f'translate({tx:.3f},{ty:.3f}) rotate({rotate})'
+ return (
+ f''
+ f'{safe_text} '
+ f' '
+ )
+ else:
+ return (
+ f''
+ f'{safe_text} '
+ f' '
+ )
+
+
+def process_matplotlib_svg(filepath, translations):
+ """Translate text labels in a matplotlib SVG file. Returns True if changed."""
+ with open(filepath, 'r', encoding='utf-8') as f:
+ content = f.read()
+
+ # Only process matplotlib SVGs (glyph-path based)
+ if 'DejaVuSans' not in content and 'DejaVu Sans' not in content:
+ return False
+
+ groups = find_text_groups(content)
+ if not groups:
+ return False
+
+ # Collect replacements (apply in reverse order to preserve offsets)
+ replacements = []
+ for g in groups:
+ german = translations.get(g['label'])
+ if german and german != g['label']:
+ fs = estimate_font_size(g['scale'])
+ replacements.append((g['start'], g['end'], make_text_element(g, german, fs)))
+
+ if not replacements:
+ return False
+
+ # Apply in reverse order
+ replacements.sort(key=lambda x: x[0], reverse=True)
+ result = content
+ for start, end, elem in replacements:
+ result = result[:start] + elem + result[end:]
+
+ with open(filepath, 'w', encoding='utf-8') as f:
+ f.write(result)
+ return True
+
+
+# SVGs already handled by translate_svgs.py (real elements)
+REAL_TEXT_FILES = {
+ 'Costas_loop_model.svg', 'Spherical_Coordinates.svg', 'ad9361.svg',
+ 'adaptive_mcs.svg', 'adaptive_mcs2.svg', 'atmospheric_attenuation.svg',
+ 'bandpass_filter_taps.svg', 'beamforming_examples.svg', 'beamforming_taxonomy.svg',
+ 'bpsk.svg', 'bpsk2.svg', 'costas-loop-freq-tracking.svg', 'differential_coding2.svg',
+ 'doa.svg', 'doa_trig.svg', 'ethernet.svg', 'fft-block-diagram.svg', 'fft-io.svg',
+ 'fft-python3.svg', 'fft-python4.svg', 'fm_psd.svg', 'fm_psd_labeled.svg',
+ 'freq-shift-diagram.svg', 'freq-shift.svg', 'fsk2.svg', 'hamming.svg', 'hamming2.svg',
+ 'masking.svg', 'max_freq.svg', 'monopulse.svg', 'multipath.svg', 'multipath2.svg',
+ 'negative-frequencies.svg', 'negative-frequencies2.svg', 'negative-frequencies3.svg',
+ 'rayleigh.svg', 'receiver_arch_diagram.svg', 'spectrogram_diagram.svg',
+ 'splitting_rc_filter.svg', 'sync-diagram.svg', 'time-scaling.svg', 'trellis.svg',
+ 'two-signals.svg', 'tx_rx_chain.svg', 'tx_rx_system.svg', 'tx_rx_system_params.svg',
+}
+
+
+if __name__ == '__main__':
+ images_dir = os.path.dirname(os.path.abspath(__file__))
+ changed = 0
+ unchanged = 0
+
+ # Files with ONLY real text (no matplotlib glyphs) — skip entirely
+ PURE_REAL_TEXT = {
+ 'Costas_loop_model.svg', 'Spherical_Coordinates.svg', 'ad9361.svg',
+ 'adaptive_mcs.svg', 'adaptive_mcs2.svg', 'atmospheric_attenuation.svg',
+ 'bandpass_filter_taps.svg', 'beamforming_examples.svg', 'beamforming_taxonomy.svg',
+ 'bpsk.svg', 'bpsk2.svg', 'differential_coding2.svg', 'doa.svg', 'doa_trig.svg',
+ 'ethernet.svg', 'fft-block-diagram.svg', 'fft-io.svg', 'fft-python3.svg',
+ 'fft-python4.svg', 'freq-shift-diagram.svg', 'freq-shift.svg', 'fsk2.svg',
+ 'hamming.svg', 'hamming2.svg', 'masking.svg', 'monopulse.svg', 'multipath.svg',
+ 'multipath2.svg', 'negative-frequencies.svg', 'negative-frequencies2.svg',
+ 'negative-frequencies3.svg', 'receiver_arch_diagram.svg', 'spectrogram_diagram.svg',
+ 'splitting_rc_filter.svg', 'sync-diagram.svg', 'time-scaling.svg', 'trellis.svg',
+ 'two-signals.svg', 'tx_rx_chain.svg', 'tx_rx_system.svg', 'tx_rx_system_params.svg',
+ }
+
+ for fpath in sorted(glob.glob(os.path.join(images_dir, '*.svg'))):
+ fname = os.path.basename(fpath)
+ if fname in PURE_REAL_TEXT or fname.startswith('translate_'):
+ continue
+ if process_matplotlib_svg(fpath, TRANSLATIONS):
+ print(f' TRANSLATED: {fname}')
+ changed += 1
+ else:
+ unchanged += 1
+
+ print(f'\nDone: {changed} matplotlib SVGs translated, {unchanged} unchanged.')
diff --git a/_images_de/translate_svgs.py b/_images_de/translate_svgs.py
new file mode 100644
index 00000000..48ac3269
--- /dev/null
+++ b/_images_de/translate_svgs.py
@@ -0,0 +1,366 @@
+"""
+Translate English text in SVG files to German.
+Handles two types:
+ 1. SVGs with real / elements (46 files)
+ 2. Matplotlib SVGs with comments - these require script regeneration
+"""
+import re
+import os
+import glob
+
+# Translation dictionary for SVG text labels
+# Keys are exact English strings, values are German translations
+# Order matters: longer/more specific strings first to avoid partial replacements
+TRANSLATIONS = {
+ # === AXIS LABELS ===
+ "Frequency [GHz]": "Frequenz [GHz]",
+ "Frequency [MHz]": "Frequenz [MHz]",
+ "Frequency [kHz]": "Frequenz [kHz]",
+ "Frequency [Hz]": "Frequenz [Hz]",
+ "Frequency [Normalized Hz]": "Frequenz [normiert Hz]",
+ "Frequency Domain": "Frequenzbereich",
+ "Frequency Response of Filter": "Frequenzgang des Filters",
+ "Attenuation [dB / km]": "Dämpfung [dB / km]",
+ "Channel Magnitude [dB]": "Kanalbetrag [dB]",
+ "Signal Amplitude": "Signalamplitude",
+ "Signal Magnitude [Linear]": "Signalbetrag [linear]",
+ "Power Spectral Density [dB]": "Leistungsdichtespektrum [dB]",
+ "Magnitude [dB]": "Betrag [dB]",
+ "Beam Pattern [dB]": "Strahlmuster [dB]",
+ "FFT Magnitude": "FFT-Betrag",
+ "FFT Phase [radians]": "FFT-Phase [Radianten]",
+ "FFT Index": "FFT-Index",
+ "Sample Index": "Sample-Index",
+ "Time [s]": "Zeit [s]",
+ "Time Domain": "Zeitbereich",
+ "Eigenvalue [dB]": "Eigenwert [dB]",
+ "Azimuth angle (deg)": "Azimutwinkel (Grad)",
+ "Azimuth angle [degrees]": "Azimutwinkel [Grad]",
+ "Elevation angle [degrees]": "Elevationswinkel [Grad]",
+ "Theta [Degrees]": "Theta [Grad]",
+ "Angle [deg]": "Winkel [Grad]",
+ "B bandwidth [Hz]": "B Bandbreite [Hz]",
+ "T seconds": "T Sekunden",
+ "X Position [m]": "X Position [m]",
+ "Y Position [m]": "Y Position [m]",
+ "Z Position [m]": "Z Position [m]",
+ "Shannon Limit [bits/s/Hz]": "Shannon-Grenze [Bits/s/Hz]",
+ "Correlation Magnitude [Linear]": "Korrelationsbetrag [linear]",
+
+ # === PLOT TITLES / DESCRIPTIONS ===
+ "Beamforming Taxonomy": "Strahlformungs-Taxonomie",
+ "Direction of Arrival (DOA)": "Einfallsrichtung (DOA)",
+ "Direction of Arrival": "Einfallsrichtung",
+ "Beam Pattern and DOA Results, With Training": "Strahlmuster und DOA-Ergebnisse, mit Training",
+ "Beam Pattern and DOA Results, Without Training": "Strahlmuster und DOA-Ergebnisse, ohne Training",
+ "Time Adaptive Processing (STAP)": "Raum-Zeit-adaptive Verarbeitung (STAP)",
+ "Spectrogram": "Spektrogramm",
+ "Time Domain": "Zeitbereich",
+ "Modulation Scheme Used": "Verwendetes Modulationsschema",
+
+ # === SYSTEM COMPONENTS ===
+ "Direct Sampling (a.k.a. Direct RF)": "Direktabtastung (auch: Direct RF)",
+ "Direct Conversion (a.k.a. Zero IF)": "Direktmischung (auch: Zero IF)",
+ "Superheterodyne": "Überlagerungsempfänger",
+ "FM radio in your old car": "UKW-Radio im alten Auto",
+ "Expensive": "Teuer",
+ "expensive ADC": "teurer ADC",
+ "Digital Filtering and Equalization": "Digitale Filterung und Entzerrung",
+ "RF Channel Bandwidth": "HF-Kanalbandbreite",
+ "Rx Decimation": "Empfänger-Dezimation",
+ "Tx Interpolation": "Sender-Interpolation",
+ "Calibration and": "Kalibrierung und",
+ "Correction": "Korrektur",
+ "Enable State": "Zustandsmaschine",
+ "Machine (ENSM)": "",
+ "Automatic": "Automatische",
+ "Phase\nSplitter": "Phasenteiler",
+ "Input Mux": "Eingangs-Mux",
+ "Output Mux": "Ausgangs-Mux",
+ "Rx Channel 1": "Empfangskanal 1",
+ "Rx Channel 2": "Empfangskanal 2",
+ "Tx Channel 1": "Sendekanal 1",
+ "Tx Channel 2": "Sendekanal 2",
+ "Temperature": "Temperatur",
+ "Baseband": "Basisband",
+ "Splitter": "Teiler",
+ "Dual": "Dual",
+
+ # === SIGNAL FLOW ===
+ "Transmit Antenna": "Sendeantenne",
+ "TX Antenna": "Sendeantenne",
+ "RX Antenna": "Empfangsantenne",
+ "Transmitter": "Sender",
+ "Receiver": "Empfänger",
+ "Transmit\nPower": "Sendeleistung",
+ "Transmit": "Senden",
+ "Received": "Empfangen",
+ "LOS Path": "Direktweg",
+ "Multipath": "Mehrwegausbreitung",
+ "Path Loss": "Pfadverlust",
+ "(Compression)": "(Kompression)",
+ "(Error correcting": "(Fehlerkorrektur",
+ "codes)": "Codes)",
+ "PSK, QAM)": "PSK, QAM)",
+ "RF Circuit": "HF-Schaltung",
+ "Up": "Aufwärts",
+ "Converter,": "Wandler,",
+ "Amplifiers)": "Verstärker)",
+ "Down": "Abwärts",
+ "Digital Converter)": "Digitalwandler)",
+ "Converter)": "Wandler)",
+ "Synchronization and": "Synchronisation und",
+ "processing": "Verarbeitung",
+ "often happens here": "oft hier durchgeführt",
+ "Source\nData": "Quelldaten",
+ "Source": "Quelle",
+ "Data": "Daten",
+ "(hopefully)": "(hoffentlich)",
+ "Wireless": "Drahtlos",
+
+ # === BEAMFORMING ===
+ "Conventional Beamformer": "Konventioneller Strahlformer",
+ "(aka Delay and Sum)": "(auch: Delay-and-Sum)",
+ "Null Steering": "Nullsteuerung",
+ "Switched Beam": "Geschaltete Strahlung",
+ "Spatial Multiplexing": "Räumliches Multiplexing",
+ "Pattern Synthesis": "Mustersynth.",
+ "Subspace": "Unterraum",
+ "Traditional": "Traditionell",
+ "(Data Independent/Deterministic)": "(Datenunabhängig/Deterministisch)",
+ "Adaptive": "Adaptiv",
+ "Iterative": "(Snapshot/Update-basiert)",
+ "(Snapshot/Update Based)": "(Snapshot/Update-basiert)",
+ "Block\nbased": "Blockbasiert",
+ "Tapering": "Fensterfunktionen",
+ "(Optional Addon)": "(Optionale Erweiterung)",
+ "Input includes": "Eingang beinhaltet",
+ "(expected) angle": "(erwarteten) Winkel",
+ "of SOI": "der Nutzquelle",
+ "Needs pilots/exact": "Braucht Pilots/exaktes",
+ "Most techniques with": "Die meisten Techniken unter",
+ "under": "",
+ "Beamforming": "Strahlformung",
+ "can": "können",
+ "be directly used to perform": "direkt zur DOA-Bestimmung verwendet werden",
+ "Space": "Raum-",
+ "Blind": "Blind",
+ "Sidelobe": "Nebenkeulen-",
+ "Canceller": "Unterdrücker",
+ "Multiple Sidelobe": "Mehrfach-Nebenkeulen-",
+ "Decomposition aka": "Zerlegung aka",
+ "Max SNR": "Max SNR",
+ "Max SINR": "Max SINR",
+ "Dynamic Multiple": "Dynamischer Mehrfach-",
+ "Sidelobe Canceller": "Nebenkeule-Unterdrücker",
+ "Woodward Lawson": "Woodward-Lawson",
+ "Technique": "Technik",
+ "Max": "Max",
+ "Likelihood": "Likelihood",
+ "Beamform": "Strahl-",
+ "ers": "former",
+ "based": "basiert",
+
+ # === PLOT ELEMENTS ===
+ "Noise Floor": "Rauschpegel",
+ "Signal(s)": "Signal(e)",
+ "Signal we don't want": "Unerwünschtes Signal",
+ "Signal in": "Eingangssignal",
+ "Signal 1": "Signal 1",
+ "Signal 2": "Signal 2",
+ "Signal 3": "Signal 3",
+ "FFT Shift": "FFT-Verschiebung",
+ "FFT of Slice 1": "FFT von Abschnitt 1",
+ "FFT of Slice 2": "FFT von Abschnitt 2",
+ "FFT of Slice 3": "FFT von Abschnitt 3",
+ "FFT of Slice 4": "FFT von Abschnitt 4",
+ "FFT of Slice 5": "FFT von Abschnitt 5",
+ "FFT of Slice 6": "FFT von Abschnitt 6",
+ "Slice\n1": "Abschnitt 1",
+ "Slice 2": "Abschnitt 2",
+ "Slice 3": "Abschnitt 3",
+ "Slice 4": "Abschnitt 4",
+ "Slice 5": "Abschnitt 5",
+ "Slice 6": "Abschnitt 6",
+ "Slice": "Abschnitt",
+ "(IQ Samples)": "(IQ-Samples)",
+ "Stereo Audio (L-R)": "Stereo-Audio (L-R)",
+ "Mono": "Mono",
+ "Audio": "Audio",
+ "Tone": "Ton",
+ "Bit Position": "Bitposition",
+ "Encoded Bits": "Kodierte Bits",
+ "Encoded": "Kodiert",
+ "Decoded": "Dekodiert",
+ "Parity": "Parität",
+ "Coverage": "Abdeckung",
+ "boresight": "Hauptstrahlrichtung",
+ "Target": "Ziel",
+ "Beam 1": "Strahl 1",
+ "Beam 2": "Strahl 2",
+ '"Sum"': '"Summe"',
+ "Beam": "Strahl",
+ "Taps": "Koeffizienten",
+ "Magnitude": "Betrag",
+ "Sample Rate": "Abtastrate",
+ "Sample:": "Sample:",
+ "Sample\n": "Sample\n",
+ "Input Vector": "Eingangsvektor",
+ "Input 1": "Eingang 1",
+ "Input 2": "Eingang 2",
+ "Input": "Eingang",
+ "Output": "Ausgang",
+ "Delay": "Verzögerung",
+ "Filter": "Filter",
+ "Channel": "Kanal",
+ "Modulation": "Modulation",
+ "Demodulation": "Demodulation",
+ "Pulse": "Impuls",
+ "Matched": "Angepasst",
+ "Coarse": "Grob",
+ "Time Sync": "Zeitsynchronisation",
+ "Fine Freq": "Feine Frequenz",
+ "Frame": "Rahmen",
+ "Gain": "Verstärkung",
+ "Power": "Leistung",
+
+ # === PARTIAL WORDS (for axis labels split across elements) ===
+ "requency": "requenz",
+ "ime": "eit",
+ "frequency": "Frequenz",
+ "time": "Zeit",
+ "spectrum": "Spektrum",
+ "signal": "Signal",
+ "shifted": "verschoben",
+ "sinusoid": "Sinusschwingung",
+ "shift": "Verschiebung",
+ "more\nbits per\nsecond": "mehr\nBits pro\nSekunde",
+ "more\nspectrum\nrequired": "mehr\nSpektrum\nbenötigt",
+ "bits per": "Bits pro",
+ "second": "Sekunde",
+ "more": "mehr",
+ "required": "benötigt",
+ "index:": "Index:",
+ "modulated\noutput": "modulierter\nAusgang",
+ "modulated": "moduliert",
+ "output": "Ausgang",
+
+ # === ADAPTIVE MCS ===
+ "Throughpu": "Durchsat",
+ "(L+R)": "(L+R)",
+
+ # === SPHERICAL COORDINATES ===
+ "(azimuth)": "(Azimut)",
+ "(elevation)": "(Elevation)",
+
+ # === TRELLIS ===
+ "Level j=": "Ebene j=",
+
+ # === REMAINING LOWERCASE / SPECIFIC CASES ===
+ "Received": "Empfangen",
+ "TX Antenna": "Sendeantenne",
+ "RX Antenna": "Empfangsantenne",
+ "Transmit\nPower": "Sendeleistung",
+ "Automatic\nGain\nControl": "Automatische\nVerstärkungs-\nRegelung",
+}
+
+# Files where we should NOT translate "T" → "Z" standalone letter (it's part of Time axis)
+# We handle spectrogram_diagram.svg specially
+SPECTROGRAM_SPECIAL = {
+ ">T<": ">Z<", # Only the T that's part of "Time" axis
+}
+
+
+def translate_text_content(text, context=""):
+ """Translate English text to German."""
+ # Try exact match first (longest first)
+ for en, de in sorted(TRANSLATIONS.items(), key=lambda x: -len(x[0])):
+ if text == en:
+ return de
+ return text
+
+
+def translate_svg_text_elements(content, filename=""):
+ """Replace English text in SVG text nodes with German translations.
+
+ Uses targeted replacement: for each (en, de) pair we replace all occurrences of
+ '>en<' and '>en ' (text node delimiters), which only matches actual XML text nodes,
+ not attribute values (which are enclosed in quotes) or path data.
+ """
+ result = content
+
+ # Apply translations ordered by length (longest first to avoid partial matches)
+ for en, de in sorted(TRANSLATIONS.items(), key=lambda x: -len(x[0])):
+ if not en or not de or en == de:
+ continue
+
+ # Replace as exact text node: >en< or >en (followed by < or newline/space then <)
+ # This covers: en and en
+ result = result.replace(f'>{en}<', f'>{de}<')
+ result = result.replace(f'>{en} <', f'>{de} <')
+ result = result.replace(f'>{en}\n', f'>{de}\n')
+ result = result.replace(f'>{en}\r\n', f'>{de}\r\n')
+
+ # Special handling for spectrogram_diagram.svg: "T" axis label → "Z"
+ if 'spectrogram_diagram' in filename:
+ result = result.replace(
+ 'matrix(-1.83697e-16 -1 1 -1.83697e-16 113.526 276)">T ',
+ 'matrix(-1.83697e-16 -1 1 -1.83697e-16 113.526 276)">Z '
+ )
+
+ return result
+
+
+def process_svg_file(filepath):
+ """Translate a single SVG file."""
+ with open(filepath, 'r', encoding='utf-8') as f:
+ content = f.read()
+
+ original = content
+ filename = os.path.basename(filepath)
+ translated = translate_svg_text_elements(content, filename)
+
+ if translated != original:
+ with open(filepath, 'w', encoding='utf-8') as f:
+ f.write(translated)
+ return True
+ return False
+
+
+# List of SVGs with real text elements (directly translatable)
+REAL_TEXT_FILES = [
+ 'Costas_loop_model.svg', 'Spherical_Coordinates.svg', 'ad9361.svg',
+ 'adaptive_mcs.svg', 'adaptive_mcs2.svg', 'atmospheric_attenuation.svg',
+ 'bandpass_filter_taps.svg', 'beamforming_examples.svg', 'beamforming_taxonomy.svg',
+ 'bpsk.svg', 'bpsk2.svg', 'costas-loop-freq-tracking.svg', 'differential_coding2.svg',
+ 'doa.svg', 'doa_trig.svg', 'ethernet.svg', 'fft-block-diagram.svg', 'fft-io.svg',
+ 'fft-python3.svg', 'fft-python4.svg', 'fm_psd.svg', 'fm_psd_labeled.svg',
+ 'freq-shift-diagram.svg', 'freq-shift.svg', 'fsk2.svg', 'hamming.svg', 'hamming2.svg',
+ 'masking.svg', 'max_freq.svg', 'monopulse.svg', 'multipath.svg', 'multipath2.svg',
+ 'negative-frequencies.svg', 'negative-frequencies2.svg', 'negative-frequencies3.svg',
+ 'rayleigh.svg', 'receiver_arch_diagram.svg', 'spectrogram_diagram.svg',
+ 'splitting_rc_filter.svg', 'sync-diagram.svg', 'time-scaling.svg', 'trellis.svg',
+ 'two-signals.svg', 'tx_rx_chain.svg', 'tx_rx_system.svg', 'tx_rx_system_params.svg'
+]
+
+
+if __name__ == '__main__':
+ images_dir = os.path.dirname(os.path.abspath(__file__))
+
+ changed = 0
+ unchanged = 0
+
+ for fname in REAL_TEXT_FILES:
+ fpath = os.path.join(images_dir, fname)
+ if not os.path.exists(fpath):
+ print(f' MISSING: {fname}')
+ continue
+
+ if process_svg_file(fpath):
+ print(f' TRANSLATED: {fname}')
+ changed += 1
+ else:
+ print(f' unchanged: {fname}')
+ unchanged += 1
+
+ print(f'\nDone: {changed} files translated, {unchanged} unchanged.')
diff --git a/_images_de/trellis.svg b/_images_de/trellis.svg
new file mode 100644
index 00000000..f0416fe6
--- /dev/null
+++ b/_images_de/trellis.svg
@@ -0,0 +1,1316 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 00
+
+ 00
+
+ 00
+
+ 00
+
+ 11
+
+ 11
+
+ 01
+
+ 01
+
+ 01
+
+ 01
+
+ 01
+
+ 01
+
+ 01
+
+ 01
+
+ 01
+
+ 01
+
+ 10
+
+ 10
+
+ 10
+
+ 10
+
+ 10
+
+ 10
+
+ 10
+
+ 10
+
+ 10
+
+ 11
+
+ 11
+
+ 11
+
+ 11
+
+ 11
+
+ 11
+
+ 11
+
+ 11
+
+ 11
+
+ 00
+
+ 00
+
+ 00
+
+ 00
+
+ 00
+
+ 00
+
+ 00
+
+ 00
+ a
+ b
+ c
+ d
+ Ebene j=0
+ 1
+ 2
+ 3
+ 4
+ 5
+ L-1
+ L
+ L+1
+ L+2
+
+
diff --git a/_images_de/two-signals.svg b/_images_de/two-signals.svg
new file mode 100644
index 00000000..6486a684
--- /dev/null
+++ b/_images_de/two-signals.svg
@@ -0,0 +1 @@
+Frequenz StörsignalNutzsignal
\ No newline at end of file
diff --git a/_images_de/tx_rx_chain.svg b/_images_de/tx_rx_chain.svg
new file mode 100644
index 00000000..a8f449ec
--- /dev/null
+++ b/_images_de/tx_rx_chain.svg
@@ -0,0 +1 @@
+QuelleEncoding (Kompression) KanalEncoding (Fehlerkorrektur Codes) Modulation(e.g ., PSK, QAM) HF-Schaltung(Filters, Aufwärts - Wandler, Verstärker) Daten DAC(Digital - to - Analog Wandler) HF-Schaltung(Filters, Abwärts - Wandler, Verstärker) ADC(Analog - to - Digitalwandler) Demodulation Quelle Decoding Daten (hoffentlich) KanalDecoding DrahtlosKanal Sendeantenne Synchronisation und other Verarbeitung oft hier durchgeführt Empfangsantenne
\ No newline at end of file
diff --git a/_images_de/tx_rx_system.svg b/_images_de/tx_rx_system.svg
new file mode 100644
index 00000000..3c240e82
--- /dev/null
+++ b/_images_de/tx_rx_system.svg
@@ -0,0 +1,129 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+ SenderEmpfänger
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_images_de/tx_rx_system_params.svg b/_images_de/tx_rx_system_params.svg
new file mode 100644
index 00000000..d1a4b668
--- /dev/null
+++ b/_images_de/tx_rx_system_params.svg
@@ -0,0 +1 @@
+Sendeantenne Verstärkung Gt Sender Empfänger Empfangsantenne Verstärkung Gr Senden Leistung Pt Pfadverlust L p Empfangen Leistung Pr
\ No newline at end of file
diff --git a/_images_de/usrp.png b/_images_de/usrp.png
new file mode 100644
index 00000000..fcaf2bf9
Binary files /dev/null and b/_images_de/usrp.png differ
diff --git a/_images_de/waterfall.png b/_images_de/waterfall.png
new file mode 100644
index 00000000..c168d35d
Binary files /dev/null and b/_images_de/waterfall.png differ
diff --git a/_images_de/weird_psk.png b/_images_de/weird_psk.png
new file mode 100644
index 00000000..98c434e6
Binary files /dev/null and b/_images_de/weird_psk.png differ
diff --git a/_images_de/wifi-frame.png b/_images_de/wifi-frame.png
new file mode 100644
index 00000000..f5fa9118
Binary files /dev/null and b/_images_de/wifi-frame.png differ
diff --git a/_images_de/windows.svg b/_images_de/windows.svg
new file mode 100644
index 00000000..479a4e53
--- /dev/null
+++ b/_images_de/windows.svg
@@ -0,0 +1,1862 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Amplitude / Wert
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zeitbereich
+
+
+
+
+
+
+
+
+ Rechteck
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Normierte Frequenz
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Frequenzbereich
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_static/de.svg b/_static/de.svg
new file mode 100644
index 00000000..399dcced
--- /dev/null
+++ b/_static/de.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/_templates/homepage_de.html b/_templates/homepage_de.html
new file mode 100644
index 00000000..f02ff7a0
--- /dev/null
+++ b/_templates/homepage_de.html
@@ -0,0 +1,59 @@
+PySDR: Ein Leitfaden zu SDR und DSP mit Python
+
+
+ von
+
+ Dr. Marc Lichtman
+
+ -
+
+ pysdr@ vt. edu
+
+
+
+
+ Willkommen bei PySDR, einem kostenlosen Online-Lehrbuch (keine Python-Bibliothek!), das eine sanfte Einführung in die drahtlose Kommunikation und Software-Defined Radio (SDR) bietet – mit zahlreichen Diagrammen, Animationen und Python-Codebeispielen. Von FFTs über Filter bis hin zu digitaler Modulation sowie dem Empfangen und Senden mit SDRs in Python – PySDR hat alles abgedeckt!
+
+
+
+ Das Ziel von PySDR ist es, den Zugang zu Themen zu erleichtern, die traditionell auf sehr mathematische Weise und nur an einer kleinen Anzahl von Universitäten gelehrt werden. Alle Inhalte, die zur Erstellung von PySDR verwendet werden, sind Open Source und können
+ hier gefunden werden.
+
+
+
+ Siehe
+ Kapitel 1: Einführung
+ für den Zweck und die Zielgruppe des Lehrbuchs.
+
+
+
+ Für einen ersten Einblick in die HF-Signalverarbeitung kann mit der folgenden Simulation gespielt werden, die den Frequenz- und Zeitbereich eines Signals zeigt, das aus einem Ton und weißem Gaußschem Rauschen besteht.
+
+
+
+
+
+ [Hz] - Tonfrequenz
+
+
+
+
+ [dB] - Rauschpegel
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_templates/layout.html b/_templates/layout.html
index da78e0bd..c1211441 100644
--- a/_templates/layout.html
+++ b/_templates/layout.html
@@ -76,12 +76,14 @@
|
English
- Dutch
+ Dutch
French
Ukrainian
Chinese
Spanish
- Japanese
+ Japanese
+ German
+
{% endblock %}
diff --git a/conf.py b/conf.py
index 9b2ba809..2a29f4b6 100644
--- a/conf.py
+++ b/conf.py
@@ -70,7 +70,7 @@
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
-exclude_patterns = ['_build', 'index-fr.rst', 'content-fr/*', 'index-nl.rst', 'content-nl/*', 'index-ukraine.rst', 'content-ukraine/*', 'index-zh.rst', 'content-zh/*', 'index-es.rst', 'content-es/*', 'index-ja.rst', 'content-ja/*']
+exclude_patterns = ['_build', 'venv', 'venv/**', 'index-de.rst', 'content-de/*', 'index-fr.rst', 'content-fr/*', 'index-nl.rst', 'content-nl/*', 'index-ukraine.rst', 'content-ukraine/*', 'index-zh.rst', 'content-zh/*', 'index-es.rst', 'content-es/*', 'index-ja.rst', 'content-ja/*']
# The reST default role (used for this markup: `text`) to use for all
# documents.
diff --git a/content-de/2d_beamforming.rst b/content-de/2d_beamforming.rst
new file mode 100644
index 00000000..aaceac3a
--- /dev/null
+++ b/content-de/2d_beamforming.rst
@@ -0,0 +1,564 @@
+.. _2d-beamforming-chapter:
+
+####################
+2D-Beamforming
+####################
+
+Dieses Kapitel erweitert das 1D-Beamforming/DOA-Kapitel auf 2D-Arrays. Wir beginnen mit einem einfachen Rechteck-Array und entwickeln die Steuervektorgleichung und den MVDR-Beamformer, dann arbeiten wir mit echten Daten von einem 3×5-Array. Abschließend verwenden wir das interaktive Werkzeug, um die Auswirkungen verschiedener Array-Geometrien und Elementabstände zu erkunden.
+
+*************************************
+Rechteck-Arrays und 2D-Beamforming
+*************************************
+
+Rechteck-Arrays (a.k.a. planare Arrays) bestehen aus einem 2D-Array von Elementen. Mit einer zusätzlichen Dimension erhalten wir etwas mehr Komplexität, aber dieselben Grundprinzipien gelten, und der schwierigste Teil ist die Visualisierung der Ergebnisse (z.B. keine einfachen Polarplots mehr, jetzt brauchen wir 3D-Oberflächenplots). Obwohl unser Array jetzt 2D ist, müssen wir nicht jede Datenstruktur um eine Dimension erweitern. Zum Beispiel behalten wir unsere Gewichte als 1D-Array komplexer Zahlen bei. Wir müssen jedoch die Positionen unserer Elemente in 2D darstellen. Wir verwenden weiterhin :code:`theta` für den Azimutwinkel, aber jetzt führen wir einen neuen Winkel :code:`phi` als Elevationswinkel ein. Es gibt viele sphärische Koordinatenkonventionen, aber wir verwenden folgende:
+
+.. image:: ../_images/Spherical_Coordinates.svg
+ :align: center
+ :target: ../_images/Spherical_Coordinates.svg
+ :alt: Sphärisches Koordinatensystem mit theta und phi
+
+Was entspricht:
+
+.. math::
+
+ x = \sin(\theta) \cos(\phi)
+
+ y = \cos(\theta) \cos(\phi)
+
+ z = \sin(\phi)
+
+Wir wechseln auch zu einer verallgemeinerten Steuervektorgleichung, die nicht spezifisch für eine Array-Geometrie ist:
+
+.. math::
+
+ s = e^{2j \pi \boldsymbol{p} u / \lambda}
+
+wobei :math:`\boldsymbol{p}` die Menge der x/y/z-Elementpositionen in Metern ist (Größe :code:`Nr` x 3) und :math:`u` der Richtungseinheitsvektor in x/y/z ist (Größe 3x1). In Python sieht das so aus:
+
+.. code-block:: python
+
+ def steering_vector(pos, dir):
+ # Nrx3 3x1
+ return np.exp(2j * np.pi * pos @ dir / wavelength) # gibt Nr x 1 aus (Spaltenvektor)
+
+Versuchen wir, diese verallgemeinerte Steuervektorgleichung mit einem einfachen ULA mit 4 Elementen zu verwenden, um die Verbindung zu dem herzustellen, was wir bisher gelernt haben. Wir stellen :code:`d` jetzt in Metern statt relativ zur Wellenlänge dar. Wir platzieren die Elemente entlang der y-Achse:
+
+.. code-block:: python
+
+ Nr = 4
+ fc = 5e9
+ wavelength = 3e8 / fc
+ d = 0.5 * wavelength # in Metern
+
+ # Elementpositionen als Liste von (x,y,z)-Koordinaten, auch wenn es nur ein ULA entlang der y-Achse ist
+ pos = np.zeros((Nr, 3)) # Elementpositionen als Liste von x,y,z-Koordinaten in Metern
+ for i in range(Nr):
+ pos[i,0] = 0 # x-Position
+ pos[i,1] = d * i # y-Position
+ pos[i,2] = 0 # z-Position
+
+Die folgende Grafik zeigt eine Draufsicht des ULA mit einem Beispiel-Theta von 20 Grad.
+
+.. image:: ../_images/2d_beamforming_ula.svg
+ :align: center
+ :target: ../_images/2d_beamforming_ula.svg
+ :alt: ULA mit Theta von 20 Grad
+
+Das Einzige, was noch fehlt, ist die Verbindung unseres alten :code:`theta` mit diesem neuen Einheitsvektoransatz. Wir können :code:`dir` basierend auf :code:`theta` leicht berechnen. Wir wissen, dass die x- und z-Komponente unseres Einheitsvektors 0 sein wird, da wir uns noch im 1D-Raum befinden, und basierend auf unserer sphärischen Koordinatenkonvention ist die y-Komponente :code:`np.cos(theta)`, also lautet der vollständige Code :code:`dir = np.asmatrix([0, np.cos(theta_i), 0]).T`. An diesem Punkt solltest du die Verbindung zwischen unserer verallgemeinerten Steuervektorgleichung und der ULA-Steuervektorgleichung herstellen können. Probiere diesen neuen Code aus, wähle ein :code:`theta` zwischen 0 und 360 Grad (vergiss die Umrechnung in Bogenmaß!), und der Steuervektor sollte ein 4x1-Array sein.
+
+Gehen wir jetzt zum 2D-Fall über. Wir platzieren unser Array in der X-Z-Ebene, mit Boresight horizontal in Richtung der positiven y-Achse zeigend (:math:`\theta = 0`, :math:`\phi = 0`). Wir verwenden denselben Elementabstand wie zuvor, haben jetzt aber insgesamt 16 Elemente:
+
+.. code-block:: python
+
+ # Jetzt auf 2D umsteigen, mit einem 4x4-Array mit halbem Wellenlängenabstand, also 16 Elemente insgesamt
+ Nr = 16
+
+ # Elementpositionen als Liste von x,y,z-Koordinaten in Metern, Array in der X-Z-Ebene
+ pos = np.zeros((Nr,3))
+ for i in range(Nr):
+ pos[i,0] = d * (i % 4) # x-Position
+ pos[i,1] = 0 # y-Position
+ pos[i,2] = d * (i // 4) # z-Position
+
+Die Draufsicht unseres rechteckigen 4×4-Arrays:
+
+.. image:: ../_images/2d_beamforming_element_pos.svg
+ :align: center
+ :target: ../_images/2d_beamforming_element_pos.svg
+ :alt: Rechteckige Array-Elementpositionen
+
+Um auf ein bestimmtes Theta und Phi zu zeigen, müssen wir diese Winkel in einen Einheitsvektor umrechnen. Wir können dieselbe verallgemeinerte Steuervektorgleichung wie zuvor verwenden, müssen aber jetzt den Einheitsvektor basierend auf Theta und Phi berechnen, mithilfe der Gleichungen am Anfang dieses Kapitels:
+
+.. code-block:: python
+
+ # In eine beliebige Richtung zeigen
+ theta = np.deg2rad(60) # Azimutwinkel
+ phi = np.deg2rad(30) # Elevationswinkel
+
+ # Mit unserer sphärischen Koordinatenkonvention den Einheitsvektor berechnen:
+ def get_unit_vector(theta, phi): # Winkel in Bogenmaß
+ return np.asmatrix([np.sin(theta) * np.cos(phi), # x-Komponente
+ np.cos(theta) * np.cos(phi), # y-Komponente
+ np.sin(phi)]).T # z-Komponente
+
+ dir = get_unit_vector(theta, phi)
+ # dir ist 3x1
+ # [[0.75 ]
+ # [0.4330127]
+ # [0.5 ]]
+
+Jetzt verwenden wir unsere verallgemeinerte Steuervektorfunktion, um den Steuervektor zu berechnen:
+
+.. code-block:: python
+
+ s = steering_vector(pos, dir)
+
+ # Konventionellen Beamformer verwenden (Gewichte gleich dem Steuervektor), Strahlmuster plotten
+ w = s # 16x1 Gewichtsvektor
+
+An dieser Stelle ist es erwähnenswert, dass wir beim Übergang von 1D zu 2D die Dimensionen von nichts geändert haben – wir haben nur nicht-null x/y/z-Komponenten, die Steuervektorgleichung ist dieselbe und die Gewichte sind immer noch ein 1D-Array. Es mag verlockend sein, die Gewichte als 2D-Array zusammenzustellen, damit sie visuell der Array-Geometrie entsprechen, aber das ist nicht notwendig und am besten als 1D zu belassen. Für jedes Element gibt es ein entsprechendes Gewicht, und die Liste der Gewichte ist in derselben Reihenfolge wie die Liste der Elementpositionen.
+
+Das Strahlmuster dieser Gewichte zu visualisieren ist etwas komplizierter, da wir einen 3D-Plot oder eine 2D-Heatmap benötigen. Wir scannen :code:`theta` und :code:`phi`, um ein 2D-Array von Leistungspegeln zu erhalten, und plotten das dann mit :code:`imshow()`. Der folgende Code macht genau das, und das Ergebnis wird in der Abbildung unten gezeigt, zusammen mit einem Punkt an dem zuvor eingegebenen Winkel:
+
+.. code-block:: python
+
+ resolution = 100 # Anzahl der Punkte in jeder Richtung
+ theta_scan = np.linspace(-np.pi/2, np.pi/2, resolution) # Azimutwinkel
+ phi_scan = np.linspace(-np.pi/4, np.pi/4, resolution) # Elevationswinkel
+ results = np.zeros((resolution, resolution)) # 2D-Array zum Speichern der Ergebnisse
+ for i, theta_i in enumerate(theta_scan):
+ for j, phi_i in enumerate(phi_scan):
+ a = steering_vector(pos, get_unit_vector(theta_i, phi_i)) # Arrayfaktor
+ results[i, j] = np.abs(w.conj().T @ a)[0,0] # Leistung im Signal, linear sieht besser aus
+ plt.imshow(results.T, extent=(theta_scan[0]*180/np.pi, theta_scan[-1]*180/np.pi, phi_scan[0]*180/np.pi, phi_scan[-1]*180/np.pi), origin='lower', aspect='auto', cmap='viridis')
+ plt.colorbar(label='Leistung [linear]')
+ plt.scatter(theta*180/np.pi, phi*180/np.pi, color='red', s=50) # Punkt an richtigem Theta/Phi hinzufügen
+ plt.xlabel('Azimutwinkel [Grad]')
+ plt.ylabel('Elevationswinkel [Grad]')
+ plt.show()
+
+.. image:: ../_images/2d_beamforming_2dplot.svg
+ :align: center
+ :target: ../_images/2d_beamforming_2dplot.svg
+ :alt: 3D-Plot des Strahlmusters
+
+Simulieren wir jetzt einige echte Abtastwerte; wir fügen zwei Ton-Jammer hinzu, die aus verschiedenen Richtungen ankommen:
+
+.. code-block:: python
+
+ N = 10000 # Anzahl der zu simulierenden Abtastwerte
+
+ jammer1_theta = np.deg2rad(-30)
+ jammer1_phi = np.deg2rad(10)
+ jammer1_dir = get_unit_vector(jammer1_theta, jammer1_phi)
+ jammer1_s = steering_vector(pos, jammer1_dir) # Nr x 1
+ jammer1_tone = np.exp(2j*np.pi*0.1*np.arange(N)).reshape(1,-1) # als Zeilenvektor
+
+ jammer2_theta = np.deg2rad(10)
+ jammer2_phi = np.deg2rad(50)
+ jammer2_dir = get_unit_vector(jammer2_theta, jammer2_phi)
+ jammer2_s = steering_vector(pos, jammer2_dir)
+ jammer2_tone = np.exp(2j*np.pi*0.2*np.arange(N)).reshape(1,-1) # als Zeilenvektor
+
+ noise = np.random.normal(0, 1, (Nr, N)) + 1j * np.random.normal(0, 1, (Nr, N)) # komplexes Gaußsches Rauschen
+ r = jammer1_s @ jammer1_tone + jammer2_s @ jammer2_tone + noise # erzeugt 16 x 10000 Matrix
+
+Spaßeshalber berechnen wir die MVDR-Beamformer-Gewichte in Richtung des zuvor verwendeten Theta und Phi (ein Einheitsvektor in diese Richtung ist noch als :code:`dir` gespeichert):
+
+.. code-block:: python
+
+ s = steering_vector(pos, dir) # 16 x 1
+ R = np.cov(r) # Kovarianzmatrix, 16 x 16
+ Rinv = np.linalg.pinv(R)
+ w = (Rinv @ s)/(s.conj().T @ Rinv @ s) # MVDR/Capon-Gleichung
+
+Anstatt das Strahlmuster im wenig übersichtlichen 3D-Plot anzusehen, verwenden wir eine alternative Methode, um zu prüfen, ob diese Gewichte sinnvoll sind: Wir bewerten die Antwort der Gewichte in verschiedene Richtungen und berechnen die Leistung in dB. Beginnen wir mit der Richtung, in die wir zeigen:
+
+.. code-block:: python
+
+ # Leistung in der Richtung, in die wir zeigen (theta=60, phi=30, noch als dir gespeichert):
+ a = steering_vector(pos, dir) # Arrayfaktor
+ resp = w.conj().T @ a # Skalar
+ print("Leistung in Zeige-Richtung:", 10*np.log10(np.abs(resp)[0,0]), 'dB')
+
+Dies gibt 0 dB aus, was wir erwarten, da MVDRs Ziel ist, in der gewünschten Richtung Einheitsleistung zu erzielen. Jetzt prüfen wir die Leistung in Richtung der zwei Jammer sowie in einer zufälligen Richtung und einer Richtung, die einen Grad von unserer gewünschten Richtung abweicht (derselbe Code, nur :code:`dir` aktualisieren). Die Ergebnisse sind in der folgenden Tabelle dargestellt:
+
+.. list-table::
+ :widths: 70 30
+ :header-rows: 1
+
+ * - Zeige-Richtung
+ - Gewinn
+ * - :code:`dir` (für MVDR-Gewichtsberechnung verwendete Richtung)
+ - 0 dB
+ * - Jammer 1
+ - -17,488 dB
+ * - Jammer 2
+ - -18,551 dB
+ * - 1 Grad weg von :code:`dir` in :math:`\theta` und :math:`\phi`
+ - -0,00683 dB
+ * - Eine zufällige Richtung
+ - -10,591 dB
+
+Deine Ergebnisse können aufgrund des zufälligen Rauschens variieren. Die wichtigste Erkenntnis ist: die Jammer befinden sich in einem Null und haben sehr niedrige Leistung, die 1-Grad-Abweichung von :code:`dir` liegt leicht unter 0 dB, befindet sich aber noch in der Hauptkeule, und eine zufällige Richtung liegt unter 0 dB, aber über den Jammern. Beachte, dass du mit MVDR einen Gewinn von 0 dB für die Hauptkeule erhältst, aber mit dem konventionellen Beamformer würdest du :math:`10 \log_{10}(Nr)` erhalten, also etwa 12 dB für unser 16-Element-Array – das zeigt einen der Kompromisse von MVDR.
+
+Den Code für diesen Abschnitt findest du `hier `_.
+
+**********************************************
+Signale von einem echten 2D-Array verarbeiten
+**********************************************
+
+In diesem Abschnitt arbeiten wir mit echten Daten, die von einem 3×5-Array aufgezeichnet wurden, das mit einer `QUAD-MxFE `_-Plattform von Analog Devices erstellt wurde, die bis zu 16 Sende- und Empfangskanäle unterstützt (wir haben nur 15 verwendet und nur im Empfangsmodus). Es werden zwei Aufzeichnungen bereitgestellt: Die erste enthält einen Sender am Boresight des Arrays, den wir zur Kalibrierung verwenden. Die zweite Aufzeichnung enthält zwei Sender in verschiedenen Richtungen, die wir für Beamforming- und DOA-Tests verwenden.
+
+- `IQ-Aufzeichnung von nur C `_ (zur Kalibrierung verwendet, da C am Boresight ist)
+- `IQ-Aufzeichnung von B und D `_ (für Beamforming/DOA-Tests verwendet)
+
+Das QUAD-MxFE wurde auf 2,8 GHz abgestimmt und alle Sender verwendeten einen einfachen Ton innerhalb der Beobachtungsbandbreite. Interessant an dieser DSP-Verarbeitung ist, dass die Abtastrate tatsächlich keine Rolle spielt; keine der verwendeten Array-Verarbeitungstechniken hängt von der Abtastrate ab, sie setzen nur voraus, dass das Signal irgendwo im Basisbandsignal liegt. Die DSP hängt von der Mittenfrequenz ab, weil die Phasenverschiebung zwischen Elementen von der Frequenz und dem Ankunftswinkel abhängt. Das ist das Gegenteil der meisten anderen Signalverarbeitung, wo die Abtastrate wichtig ist, aber die Mittenfrequenz nicht.
+
+Wir können diese Aufzeichnungen mit folgendem Code in Python laden:
+
+.. code-block:: python
+
+ import numpy as np
+ import matplotlib.pyplot as plt
+
+ r = np.load("DandB_capture1.npy")[0:15] # 16. Element nicht angeschlossen, aber trotzdem aufgezeichnet
+ r_cal = np.load("C_only_capture1.npy")[0:15] # nur das Kalibrierungssignal (am Boresight)
+
+Der Abstand zwischen Antennen betrug 0,051 Meter. Wir können die Elementpositionen als Liste von x,y,z-Koordinaten in Metern darstellen. Wir platzieren das Array in der X-Z-Ebene, da das Array vertikal montiert war (mit Boresight horizontal zeigend).
+
+.. code-block:: python
+
+ fc = 2.8e9 # Mittenfrequenz in Hz
+ d = 0.051 # Abstand zwischen Antennen in Metern
+ wavelength = 3e8 / fc
+ Nr = 15
+ rows = 3
+ cols = 5
+
+ # Elementpositionen als Liste von x,y,z-Koordinaten in Metern
+ pos = np.zeros((Nr, 3))
+ for i in range(Nr):
+ pos[i,0] = d * (i % cols) # x-Position
+ pos[i,1] = 0 # y-Position
+ pos[i,2] = d * (i // cols) # z-Position
+
+ # Elementpositionen plotten und beschriften
+ fig = plt.figure()
+ ax = fig.add_subplot(projection='3d')
+ ax.scatter(pos[:,0], pos[:,1], pos[:,2], 'o')
+ # Indizes beschriften
+ for i in range(Nr):
+ ax.text(pos[i,0], pos[i,1], pos[i,2], str(i), fontsize=10)
+ plt.xlabel("X-Position [m]")
+ plt.ylabel("Y-Position [m]")
+ ax.set_zlabel("Z-Position [m]")
+ plt.grid()
+ plt.show()
+
+Der Plot beschriftet jedes Element mit seinem Index, der der Reihenfolge der Elemente in den aufgezeichneten :code:`r`- und :code:`r_cal`-IQ-Abtastwerten entspricht.
+
+.. image:: ../_images/2d_array_element_positions.svg
+ :align: center
+ :target: ../_images/2d_array_element_positions.svg
+ :alt: 2D-Array-Elementpositionen
+
+Die Kalibrierung wird nur mit den :code:`r_cal`-Abtastwerten durchgeführt, die nur mit dem Sender am Boresight aufgezeichnet wurden. Das Ziel ist, die Phasen- und Amplitudenoffsets für jedes Element zu finden. Bei perfekter Kalibrierung und unter der Annahme, dass der Sender genau am Boresight war, sollten alle einzelnen Empfangselemente dasselbe Signal empfangen – alle in Phase miteinander und mit der gleichen Amplitude. Aufgrund von Unvollkommenheiten im Array/Kabeln/Antennen hat jedes Element jedoch einen anderen Phasen- und Amplitudenoffset. Der Kalibrierungsprozess besteht darin, diese Offsets zu finden, die wir später auf die :code:`r`-Abtastwerte anwenden, bevor wir versuchen, Array-Verarbeitung darauf durchzuführen.
+
+Es gibt viele Möglichkeiten, eine Kalibrierung durchzuführen, aber wir verwenden eine Methode, die die Eigenwertzersetzung der Kovarianzmatrix beinhaltet. Der Eigenvektor entsprechend dem größten Eigenwert ist derjenige, der hoffentlich das empfangene Signal repräsentiert, und wir verwenden ihn, um die Phasenoffsets für jedes Element zu finden, indem wir einfach die Phase jedes Elements des Eigenvektors nehmen und auf das erste Element normieren, das wir als Referenzelement behandeln. Die Amplitudenkalibrierung verwendet nicht den Eigenvektor, sondern die mittlere Amplitude des empfangenen Signals für jedes Element.
+
+.. code-block:: python
+
+ # Kovarianzmatrix berechnen, Nr x Nr
+ R_cal = r_cal @ r_cal.conj().T
+
+ # Eigenwertzersetzung, v[:,i] ist der Eigenvektor entsprechend dem Eigenwert w[i]
+ w, v = np.linalg.eig(R_cal)
+
+ # Eigenwerte plotten, um sicherzustellen, dass es nur einen großen gibt
+ w_dB = 10*np.log10(np.abs(w))
+ w_dB -= np.max(w_dB) # normalisieren
+ fig, (ax1) = plt.subplots(1, 1, figsize=(7, 3))
+ ax1.plot(w_dB, '.-')
+ ax1.set_xlabel('Index')
+ ax1.set_ylabel('Eigenwert [dB]')
+ plt.show()
+
+ # Maximalen Eigenvektor zur Kalibrierung verwenden
+ v_max = v[:, np.argmax(np.abs(w))]
+ mags = np.mean(np.abs(r_cal), axis=1)
+ mags = mags[0] / mags # auf erstes Element normieren
+ phases = np.angle(v_max)
+ phases = phases[0] - phases # auf erstes Element normieren
+ cal_table = mags * np.exp(1j * phases)
+ print("cal_table", cal_table)
+
+Unten ist der Plot der Eigenwertverteilung. Wir möchten sicherstellen, dass es nur einen großen Wert gibt und die anderen klein sind, was ein empfangenes Signal repräsentiert. Störer oder Mehrwege können den Kalibrierungsprozess beeinträchtigen.
+
+.. image:: ../_images/2d_array_eigenvalues.svg
+ :align: center
+ :target: ../_images/2d_array_eigenvalues.svg
+ :alt: 2D-Array-Eigenwertverteilung
+
+Die Kalibrierungstabelle ist eine Liste komplexer Zahlen, eine für jedes Element, die die Phasen- und Amplitudenoffsets darstellen. Das erste Element ist das Referenzelement und ist immer 1,0 + 0j. Die übrigen Elemente sind die Offsets für jedes Element in derselben Reihenfolge wie :code:`pos`.
+
+.. code-block:: python
+
+ [1. +0.j 0.99526771+0.76149029j -0.91754588-0.66825262j
+ -0.96840297+0.37251012j 0.87866849+0.40446665j 0.56040169+1.50499875j
+ -0.80109196-1.29299264j -1.28464742-0.31133052j 1.26622038+0.46047599j
+ 2.01855809+9.77121302j -0.29249322-1.09413205j -1.0372309 -0.17983522j
+ -0.70614339+0.78682873j -0.75612972+5.67234809j 1.00032754-0.60824109j]
+
+
+Wir können diese Offsets auf alle von dem Array aufgezeichneten Abtastwerte anwenden, indem wir einfach jedes Element der Abtastwerte mit dem entsprechenden Element der Kalibrierungstabelle multiplizieren:
+
+.. code-block:: python
+
+ # Kalibrierungsoffsets auf r anwenden
+ for i in range(Nr):
+ r[i, :] *= cal_table[i]
+
+Als Randnotiz: Deshalb haben wir die Offsets mit :code:`mags[0] / mags` und :code:`phases[0] - phases` berechnet. Hätten wir die Reihenfolge umgekehrt, müssten wir eine Division zum Anwenden der Offsets durchführen, aber wir bevorzugen die Multiplikation.
+
+Als nächstes führen wir die DOA-Schätzung mit dem MUSIC-Algorithmus durch. Wir verwenden die zuvor definierten Funktionen :code:`steering_vector()` und :code:`get_unit_vector()`, um den Steuervektor für jedes Element des Arrays zu berechnen, und dann den MUSIC-Algorithmus, um die DOA der zwei Sender in den :code:`r`-Abtastwerten zu schätzen. Der MUSIC-Algorithmus wurde im vorherigen Kapitel besprochen.
+
+.. code-block:: python
+
+ # DOA mit MUSIC
+ resolution = 400 # Anzahl der Punkte in jeder Richtung
+ theta_scan = np.linspace(-np.pi/2, np.pi/2, resolution) # Azimutwinkel
+ phi_scan = np.linspace(-np.pi/4, np.pi/4, resolution) # Elevationswinkel
+ results = np.zeros((resolution, resolution)) # 2D-Array für Ergebnisse
+ R = np.cov(r) # Kovarianzmatrix, 15 x 15
+ Rinv = np.linalg.pinv(R)
+ expected_num_signals = 4
+ w, v = np.linalg.eig(R) # Eigenwertzersetzung
+ eig_val_order = np.argsort(np.abs(w))
+ v = v[:, eig_val_order] # Eigenvektoren sortieren
+ V = np.zeros((Nr, Nr - expected_num_signals), dtype=np.complex64) # Rauschunterraum
+ for i in range(Nr - expected_num_signals):
+ V[:, i] = v[:, i]
+ for i, theta_i in enumerate(theta_scan):
+ for j, phi_i in enumerate(phi_scan):
+ dir_i = get_unit_vector(-1*theta_i, phi_i) # TODO: -1* war nötig, um der Realität zu entsprechen
+ s = steering_vector(pos, dir_i) # 15 x 1
+ music_metric = 1 / (s.conj().T @ V @ V.conj().T @ s)
+ music_metric = np.abs(music_metric).squeeze()
+ music_metric = np.clip(music_metric, 0, 2) # Nützlich für ABCD
+ results[i, j] = music_metric
+
+Unsere Ergebnisse sind 2D, da das Array 2D ist. Wir können entweder einen 3D-Plot oder eine 2D-Heatmap verwenden. Zuerst ein 3D-Plot mit Elevation auf einer Achse und Azimut auf der anderen:
+
+.. code-block:: python
+
+ # 3D-Az-El-DOA-Ergebnisse
+ results = 10*np.log10(results) # in dB umrechnen
+ results[results < -20] = -20 # z-Achse auf bestimmten dB-Pegel beschneiden
+ fig, ax = plt.subplots(subplot_kw={"projection": "3d", "computed_zorder": False})
+ surf = ax.plot_surface(np.rad2deg(theta_scan[:,None]),
+ np.rad2deg(phi_scan[None,:]),
+ results,
+ cmap='viridis')
+ ax.set_xlabel('Azimut (theta)')
+ ax.set_ylabel('Elevation (phi)')
+ ax.set_zlabel('Leistung [dB]')
+ fig.savefig('../_images/2d_array_3d_doa_plot.svg', bbox_inches='tight')
+ plt.show()
+
+.. image:: ../_images/2d_array_3d_doa_plot.png
+ :align: center
+ :scale: 30%
+ :target: ../_images/2d_array_3d_doa_plot.png
+ :alt: 3D-DOA-Plot
+
+Je nach Situation kann es schwierig sein, Zahlen aus einem 3D-Plot abzulesen, daher können wir auch eine 2D-Heatmap mit :code:`imshow()` erstellen:
+
+.. code-block:: python
+
+ # 2D-Az-El-Heatmap
+ extent=(np.min(theta_scan)*180/np.pi,
+ np.max(theta_scan)*180/np.pi,
+ np.min(phi_scan)*180/np.pi,
+ np.max(phi_scan)*180/np.pi)
+ plt.imshow(results.T, extent=extent, origin='lower', aspect='auto', cmap='viridis')
+ plt.colorbar(label='Leistung [linear]')
+ plt.xlabel('Theta (Azimut, Grad)')
+ plt.ylabel('Phi (Elevation, Grad)')
+ plt.savefig('../_images/2d_array_2d_doa_plot.svg', bbox_inches='tight')
+ plt.show()
+
+.. image:: ../_images/2d_array_2d_doa_plot.svg
+ :align: center
+ :target: ../_images/2d_array_2d_doa_plot.svg
+ :alt: 2D-DOA-Plot
+
+Anhand dieses 2D-Plots können wir den geschätzten Azimut und die Elevation der beiden Sender leicht ablesen (und sehen, dass es nur zwei waren). Basierend auf dem Testaufbau, der zur Erstellung dieser Aufzeichnung verwendet wurde, stimmen diese Ergebnisse mit der Realität überein. Der genaue Azimut und die Elevation der Sender wurden nie tatsächlich gemessen, da dafür spezialisierte Ausrüstung erforderlich wäre.
+
+Als Übung versuche den konventionellen Beamformer sowie MVDR zu verwenden und vergleiche die Ergebnisse mit MUSIC.
+
+Den vollständigen Code für diesen Abschnitt findest du `hier `_.
+
+***********************
+Interaktives Entwurfswerkzeug
+***********************
+
+Das folgende interaktive Werkzeug wurde von `Jason Durbin `_ erstellt, einem freiberuflichen Phased-Array-Ingenieur, der freundlicherweise seine Einbettung in PySDR erlaubt hat. Besuche gerne das `vollständige Projekt `_ oder sein `Beratungsunternehmen `_. Dieses Werkzeug ermöglicht das Ändern der Geometrie eines Phased-Arrays, des Elementabstands, der Steuerposition, das Hinzufügen von Nebenkeulen-Tapering und weitere Funktionen.
+
+Einige Details zu diesem Werkzeug: Antennenelemente werden als isotrop angenommen. Die Richtwirkungsberechnung nimmt jedoch Halbhemisphären-Strahlung an (z.B. keine Rückzipfel). Daher wird die berechnete Richtwirkung 3 dBi höher sein als bei reiner isotroper Verwendung. Das Gitter kann durch Erhöhung von Theta/Phi, U/V oder Azimut/Elevation-Punkten feiner gemacht werden. Klicken (oder langes Drücken) auf Elemente in den Phasen-/Dämpfungsplots ermöglicht das manuelle Einstellen von Phase/Dämpfung. Außerdem ermöglicht das Dämpfungs-Popup das Deaktivieren von Elementen.
+
+.. raw:: html
+
+
+
+
+
+
+
Geometry
+
+
+
Steering
+
+
+ Theta (deg)
+
+
+
+ Phi (deg)
+
+
+
+
+
Taper(s)
+
+ Sampling
+ X & Y Radial
+
+
+
+
+
+
Quantization
+
+ Phase Bits
+
+
+
+ Atten. Bits
+
+
+
+ Atten. LSB (dB)
+
+
+
+ 0 bits would be no quantization.
+
+
+
+
+
Update Reset
+
+
Loading...
+
+
+
+
+
diff --git a/content-de/about_author.rst b/content-de/about_author.rst
new file mode 100644
index 00000000..2466c7bc
--- /dev/null
+++ b/content-de/about_author.rst
@@ -0,0 +1,20 @@
+.. _author-chapter:
+
+##################
+Über den Autor
+##################
+
+Dr. Marc Lichtman ist ein Forscher im Bereich drahtloser Kommunikation, der sich auf SDR, maschinelles Lernen, LTE/5G-NR und Spektrumserkennung spezialisiert hat. Er ist außerordentlicher Professor (adj. Prof.) an der University of Maryland, wo er einen Kurs entwickelt und unterrichtet hat, der als Grundlage für dieses Lehrbuch diente. Sein Kurs war ein Wahlfach im letzten Studienjahr, das sich an Informatikstudenten richtet, die sich für SDR/DSP interessieren. Dieser Kurs hat ihm geholfen, besser zu verstehen, wie man sehr schweres Material für Studenten zugänglich und ansprechend gestaltet, die zwar gute Programmierer waren, aber wenig bis keine Kenntnisse in drahtloser Kommunikation und Signalverarbeitung hatten. Es war nicht ungewöhnlich, die Stunde mit einem Mini-Hackathon zu beginnen, bei dem die Studenten versteckte Signale (die von Marc übertragen wurden) mithilfe des kürzlich Gelernten finden oder dekodieren mussten.
+
+Marc ist außerdem einer der Leiter des `GNU Radio-Projekts `_, eines Open-Source-SDR-Frameworks, das in der Wissenschaft und in der verteidigungsbezogenen Forschung weit verbreitet ist. GNU Radio kann zur Implementierung fortgeschrittener DSP-Anwendungen verwendet werden, und eine GNU Radio-App oder ein einzelner Block lässt sich sehr einfach mit anderen teilen.
+
+Marc lebt derzeit in der Gegend von Washington D.C. mit seiner Frau und ihren vielen Katzen und Hunden. Zu seinen Hobbys gehören Holzbearbeitung, Metallbearbeitung, Laserschneiden, Klarinette/Saxofon, Segeln, Gartenarbeit und Flipper.
+
+E-Mail: marc@pysdr.org
+
+Fakultätsseite der University of Maryland: `cs.umd.edu/people/sdr `_
+
+.. image:: ../_images_de/silly_marc.jpg
+ :scale: 100 %
+ :align: center
+ :alt: Foto von Marc Lichtman, dem Autor von PySDR, mit seiner Katze in einer lustigen Pose
diff --git a/content-de/bladerf.rst b/content-de/bladerf.rst
new file mode 100644
index 00000000..ca00564b
--- /dev/null
+++ b/content-de/bladerf.rst
@@ -0,0 +1,410 @@
+.. _bladerf-chapter:
+
+##################
+BladeRF in Python
+##################
+
+Das bladeRF 2.0 (auch bekannt als bladeRF 2.0 micro) des Unternehmens `Nuand `_ ist ein USB-3.0-basiertes SDR mit zwei Empfangskanälen, zwei Sendekanälen, einem abstimmbaren Bereich von 47 MHz bis 6 GHz und der Möglichkeit, mit bis zu 61 MHz oder sogar 122 MHz abzutasten, wenn man es entsprechend modifiziert. Es verwendet denselben AD9361 HF-integrierten Schaltkreis (RFIC) wie das USRP B210 und das PlutoSDR, sodass die HF-Leistung vergleichbar ist. Das bladeRF 2.0 wurde 2021 veröffentlicht, hat einen kompakten Formfaktor von 2,5" x 4,5" und ist in zwei verschiedenen FPGA-Größen erhältlich (xA4 und xA9). Obwohl sich dieses Kapitel auf das bladeRF 2.0 konzentriert, gilt ein Großteil des Codes auch für das ursprüngliche bladeRF, das `2013 erschien `_.
+
+.. image:: ../_images/bladeRF_micro.png
+ :scale: 35 %
+ :align: center
+ :alt: bladeRF 2.0 Produktfoto
+
+********************************
+bladeRF-Architektur
+********************************
+
+Das bladeRF 2.0 basiert auf dem AD9361 RFIC, kombiniert mit einem Cyclone-V-FPGA (entweder dem 49 kLE :code:`5CEA4` oder dem 301 kLE :code:`5CEA9`), sowie einem Cypress FX3 USB-3.0-Controller mit einem 200 MHz ARM9-Kern, der mit einer angepassten Firmware bespielt ist. Das Blockdiagramm des bladeRF 2.0 ist unten dargestellt:
+
+.. image:: ../_images/bladeRF-2.0-micro-Block-Diagram-4.png
+ :scale: 80 %
+ :align: center
+ :alt: bladeRF 2.0 Blockdiagramm
+
+Das FPGA steuert den RFIC, führt digitale Filterung durch und verpackt Pakete für die Übertragung über USB (unter anderem). Der `Quellcode `_ für das FPGA-Image ist in VHDL geschrieben und erfordert die kostenlose Quartus Prime Lite Design-Software, um benutzerdefinierte Images zu kompilieren. Vorkompilierte Images sind `hier `_ verfügbar.
+
+Der `Quellcode `_ für die Cypress FX3 Firmware ist Open-Source und enthält Code zum:
+
+1. Laden des FPGA-Images
+2. Übertragen von IQ-Samples zwischen dem FPGA und dem Host über USB 3.0
+3. Steuern der GPIO des FPGAs über UART
+
+Aus der Perspektive des Signalflusses gibt es zwei Empfangskanäle und zwei Sendekanäle, wobei jeder Kanal je nach verwendetem Frequenzband einen Nieder- und Hochfrequenzeingang/-ausgang zum RFIC hat. Aus diesem Grund wird zwischen dem RFIC und den SMA-Anschlüssen ein elektronischer HF-Schalter mit einem Pol und zwei Ausgängen (SPDT) benötigt. Das Bias-T ist eine integrierte Schaltung auf der Platine, die etwa 4,5 V Gleichstrom am SMA-Anschluss bereitstellt und dazu dient, einen externen Verstärker oder andere HF-Komponenten bequem zu versorgen. Dieser zusätzliche Gleichstromoffset befindet sich auf der HF-Seite des SDR und stört daher den grundlegenden Sende-/Empfangsbetrieb nicht.
+
+JTAG ist eine Art Debug-Schnittstelle, die das Testen und Verifizieren von Designs während des Entwicklungsprozesses ermöglicht.
+
+Am Ende dieses Kapitels besprechen wir den VCTCXO-Oszillator, den PLL und den Erweiterungsport.
+
+********************************
+Software- und Hardware-Einrichtung
+********************************
+
+Ubuntu (oder Ubuntu innerhalb von WSL)
+#######################################
+
+Unter Ubuntu und anderen Debian-basierten Systemen kannst du die bladeRF-Software mit folgenden Befehlen installieren:
+
+.. code-block:: bash
+
+ sudo apt update
+ sudo apt install cmake python3-pip libusb-1.0-0
+ cd ~
+ git clone --depth 1 https://github.com/Nuand/bladeRF.git
+ cd bladeRF/host
+ mkdir build && cd build
+ cmake ..
+ make -j8
+ sudo make install
+ sudo ldconfig
+ cd ../libraries/libbladeRF_bindings/python
+ sudo python3 setup.py install
+
+Damit werden die libbladerf-Bibliothek, Python-Bindungen, bladeRF-Kommandozeilenwerkzeuge, der Firmware-Downloader und der FPGA-Bitstream-Downloader installiert. Um zu prüfen, welche Version der Bibliothek du installiert hast, verwende :code:`bladerf-tool version` (dieser Leitfaden wurde mit libbladeRF Version v2.5.0 geschrieben).
+
+Wenn du Ubuntu über WSL verwendest, musst du auf der Windows-Seite das bladeRF-USB-Gerät an WSL weiterleiten. Installiere dazu zunächst das neueste `usbipd-Dienstprogramm als MSI `_ (dieser Leitfaden setzt usbipd-win 4.0.0 oder höher voraus), öffne dann PowerShell im Administratormodus und führe folgendes aus:
+
+.. code-block:: bash
+
+ usbipd list
+ # (finde die BUSID mit der Bezeichnung bladeRF 2.0 und setze sie im folgenden Befehl ein)
+ usbipd bind --busid 1-23
+ usbipd attach --wsl --busid 1-23
+
+Auf der WSL-Seite solltest du :code:`lsusb` ausführen und einen neuen Eintrag namens :code:`Nuand LLC bladeRF 2.0 micro` sehen können. Beachte, dass du das Flag :code:`--auto-attach` zum Befehl :code:`usbipd attach` hinzufügen kannst, wenn es sich automatisch neu verbinden soll.
+
+(Möglicherweise nicht erforderlich) Sowohl für natives Linux als auch für WSL müssen wir die udev-Regeln installieren, damit wir keine Berechtigungsfehler erhalten:
+
+.. code-block::
+
+ sudo nano /etc/udev/rules.d/88-nuand.rules
+
+und folgende Zeile einfügen:
+
+.. code-block::
+
+ ATTRS{idVendor}=="2cf0", ATTRS{idProduct}=="5250", MODE="0666"
+
+Zum Speichern und Beenden von nano: Strg+O, dann Enter, dann Strg+X. Um udev neu zu laden, führe aus:
+
+.. code-block:: bash
+
+ sudo udevadm control --reload-rules && sudo udevadm trigger
+
+Wenn du WSL verwendest und die Meldung :code:`Failed to send reload request: No such file or directory` erscheint, bedeutet das, dass der udev-Dienst nicht läuft. Du musst dann :code:`sudo nano /etc/wsl.conf` öffnen und folgende Zeilen hinzufügen:
+
+.. code-block:: bash
+
+ [boot]
+ command="service udev start"
+
+Starte dann WSL neu mit folgendem Befehl in PowerShell als Administrator: :code:`wsl.exe --shutdown`.
+
+Trenne und verbinde dein bladeRF erneut (WSL-Nutzer müssen es erneut anhängen) und teste die Berechtigungen mit:
+
+.. code-block:: bash
+
+ bladerf-tool probe
+ bladerf-tool info
+
+Es hat funktioniert, wenn du dein bladeRF 2.0 aufgelistet siehst und **nicht** die Meldung :code:`Found a bladeRF via VID/PID, but could not open it due to insufficient permissions` erscheint. Wenn es geklappt hat, notiere die angezeigte FPGA-Version und Firmware-Version.
+
+(Optional) Installiere die neueste Firmware und FPGA-Images (zum Zeitpunkt der Erstellung dieses Leitfadens v2.4.0 bzw. v0.15.0) mit:
+
+.. code-block:: bash
+
+ cd ~/Downloads
+ wget https://www.nuand.com/fx3/bladeRF_fw_latest.img
+ bladerf-tool flash_fw bladeRF_fw_latest.img
+
+ # für xA4 verwende:
+ wget https://www.nuand.com/fpga/hostedxA4-latest.rbf
+ bladerf-tool flash_fpga hostedxA4-latest.rbf
+
+ # für xA9 verwende:
+ wget https://www.nuand.com/fpga/hostedxA9-latest.rbf
+ bladerf-tool flash_fpga hostedxA9-latest.rbf
+
+Trenne und verbinde dein bladeRF erneut, um es neu zu starten.
+
+Nun testen wir die Funktionalität, indem wir 1 Million Samples im FM-Radioband bei 10 MHz Abtastrate in die Datei /tmp/samples.sc16 aufnehmen:
+
+.. code-block:: bash
+
+ bladerf-tool rx --num-samples 1000000 /tmp/samples.sc16 100e6 10e6
+
+Ein paar :code:`Hit stall for buffer`-Meldungen sind zu erwarten, aber es hat funktioniert, wenn du eine 4 MB große Datei /tmp/samples.sc16 siehst.
+
+Abschließend testen wir die Python-API mit:
+
+.. code-block:: bash
+
+ python3
+ import bladerf
+ bladerf.BladeRF()
+ exit()
+
+Es hat funktioniert, wenn du etwas wie :code:`)>` und keine Warnungen oder Fehler siehst.
+
+Windows und macOS
+##################
+
+Für Windows-Nutzer (die WSL nicht bevorzugen) siehe https://github.com/Nuand/bladeRF/wiki/Getting-Started%3A-Windows, und für macOS-Nutzer siehe https://github.com/Nuand/bladeRF/wiki/Getting-started:-Mac-OSX.
+
+********************************
+bladeRF Python API Grundlagen
+********************************
+
+Zunächst fragen wir das bladeRF nach einigen nützlichen Informationen ab, mit folgendem Skript. **Benenne dein Skript nicht bladerf.py**, da es sonst mit dem bladeRF Python-Modul selbst in Konflikt gerät!
+
+.. code-block:: python
+
+ from bladerf import _bladerf
+ import numpy as np
+ import matplotlib.pyplot as plt
+
+ sdr = _bladerf.BladeRF()
+
+ print("Device info:", _bladerf.get_device_list()[0])
+ print("libbladeRF version:", _bladerf.version()) # v2.5.0
+ print("Firmware version:", sdr.get_fw_version()) # v2.4.0
+ print("FPGA version:", sdr.get_fpga_version()) # v0.15.0
+
+ rx_ch = sdr.Channel(_bladerf.CHANNEL_RX(0)) # 0 oder 1 übergeben
+ print("sample_rate_range:", rx_ch.sample_rate_range)
+ print("bandwidth_range:", rx_ch.bandwidth_range)
+ print("frequency_range:", rx_ch.frequency_range)
+ print("gain_modes:", rx_ch.gain_modes)
+ print("manual gain range:", sdr.get_gain_range(_bladerf.CHANNEL_RX(0))) # Kanal 0 oder 1
+
+Für das bladeRF 2.0 xA9 sollte die Ausgabe in etwa so aussehen:
+
+.. code-block:: python
+
+ Device info: Device Information
+ backend libusb
+ serial f80a27b1010448dfb7a003ef7fa98a59
+ usb_bus 2
+ usb_addr 5
+ instance 0
+ libbladeRF version: v2.5.0 ("2.5.0-git-624994d")
+ Firmware version: v2.4.0 ("2.4.0-git-a3d5c55f")
+ FPGA version: v0.15.0 ("0.15.0")
+ sample_rate_range: Range
+ min 520834
+ max 61440000
+ step 2
+ scale 1.0
+
+ bandwidth_range: Range
+ min 200000
+ max 56000000
+ step 1
+ scale 1.0
+
+ frequency_range: Range
+ min 70000000
+ max 6000000000
+ step 2
+ scale 1.0
+
+ gain_modes: [, , , , ]
+
+ manual gain range: Range
+ min -15
+ max 60
+ step 1
+ scale 1.0
+
+Der Bandwidth-Parameter legt den Filter fest, den das SDR beim Empfang verwendet. Daher setzen wir ihn typischerweise gleich oder leicht unterhalb von sample_rate/2. Die Gain-Modi sind wichtig zu verstehen: Das SDR verwendet entweder einen manuellen Verstärkungsmodus, bei dem du die Verstärkung in dB vorgibst, oder eine automatische Verstärkungsregelung (AGC), die drei verschiedene Einstellungen hat (schnell, langsam, hybrid). Für Anwendungen wie die Spektrumüberwachung wird ein manueller Gain empfohlen, damit du erkennen kannst, wann Signale auftauchen und verschwinden. Für Anwendungen, bei denen du ein bestimmtes Signal empfangen möchtest, das du erwartest, ist AGC nützlicher, da es den Gain automatisch anpasst, damit das Signal den Analog-Digital-Wandler (ADC) optimal ausnutzt.
+
+Um die wichtigsten Parameter des SDR einzustellen, können wir folgenden Code hinzufügen:
+
+.. code-block:: python
+
+ sample_rate = 10e6
+ center_freq = 100e6
+ gain = 50 # -15 bis 60 dB
+ num_samples = int(1e6)
+
+ rx_ch.frequency = center_freq
+ rx_ch.sample_rate = sample_rate
+ rx_ch.bandwidth = sample_rate/2
+ rx_ch.gain_mode = _bladerf.GainMode.Manual
+ rx_ch.gain = gain
+
+********************************
+Samples empfangen in Python
+********************************
+
+Als nächstes bauen wir auf dem vorherigen Codeblock auf und empfangen 1 Million Samples im FM-Radioband bei 10 MHz Abtastrate – genauso wie zuvor. Jede Antenne am RX1-Port sollte FM empfangen können, da die Signale sehr stark sind. Der folgende Code zeigt, wie die synchrone Stream-API des bladeRF funktioniert: Sie muss konfiguriert und ein Empfangspuffer muss erstellt werden, bevor der Empfang beginnt. Die :code:`while True:`-Schleife empfängt so lange Samples, bis die angeforderte Anzahl erreicht ist. Die empfangenen Samples werden in einem separaten NumPy-Array gespeichert, damit wir sie nach der Schleife verarbeiten können.
+
+.. code-block:: python
+
+ # Synchronen Stream konfigurieren
+ sdr.sync_config(layout = _bladerf.ChannelLayout.RX_X1, # oder RX_X2
+ fmt = _bladerf.Format.SC16_Q11, # int16s
+ num_buffers = 16,
+ buffer_size = 8192,
+ num_transfers = 8,
+ stream_timeout = 3500)
+
+ # Empfangspuffer erstellen
+ bytes_per_sample = 4 # nicht ändern, es werden immer int16s verwendet
+ buf = bytearray(1024 * bytes_per_sample)
+
+ # Modul aktivieren
+ print("Starte Empfang")
+ rx_ch.enable = True
+
+ # Empfangsschleife
+ x = np.zeros(num_samples, dtype=np.complex64) # Speicher für IQ-Samples
+ num_samples_read = 0
+ while True:
+ if num_samples > 0 and num_samples_read == num_samples:
+ break
+ elif num_samples > 0:
+ num = min(len(buf) // bytes_per_sample, num_samples - num_samples_read)
+ else:
+ num = len(buf) // bytes_per_sample
+ sdr.sync_rx(buf, num) # In Puffer einlesen
+ samples = np.frombuffer(buf, dtype=np.int16)
+ samples = samples[0::2] + 1j * samples[1::2] # In komplexen Typ umwandeln
+ samples /= 2048.0 # Auf -1 bis 1 skalieren (12-Bit-ADC)
+ x[num_samples_read:num_samples_read+num] = samples[0:num] # Puffer im Samples-Array speichern
+ num_samples_read += num
+
+ print("Stoppe")
+ rx_ch.enable = False
+ print(x[0:10]) # erste 10 IQ-Samples ansehen
+ print(np.max(x)) # wenn dieser Wert nahe 1 ist, überlädst du den ADC und solltest den Gain reduzieren
+
+Ein paar :code:`Hit stall for buffer`-Meldungen am Ende sind zu erwarten. Die letzte ausgegebene Zahl zeigt den maximalen empfangenen Samplewert. Du solltest deinen Gain so einstellen, dass dieser Wert ungefähr zwischen 0,5 und 0,8 liegt. Wenn er 0,999 beträgt, ist dein Empfänger überlastet/gesättigt und das Signal wird verzerrt (es erscheint im Frequenzbereich verschmiert).
+
+Um das empfangene Signal zu visualisieren, zeigen wir die IQ-Samples als Spektrogramm an (siehe :ref:`spectrogram-section` für weitere Details zur Funktionsweise von Spektrogrammen). Füge folgendes am Ende des vorherigen Codeblocks hinzu:
+
+.. code-block:: python
+
+ # Spektrogramm erstellen
+ fft_size = 2048
+ num_rows = len(x) // fft_size # // ist eine ganzzahlige Division, die abrundet
+ spectrogram = np.zeros((num_rows, fft_size))
+ for i in range(num_rows):
+ spectrogram[i,:] = 10*np.log10(np.abs(np.fft.fftshift(np.fft.fft(x[i*fft_size:(i+1)*fft_size])))**2)
+ extent = [(center_freq + sample_rate/-2)/1e6, (center_freq + sample_rate/2)/1e6, len(x)/sample_rate, 0]
+ plt.imshow(spectrogram, aspect='auto', extent=extent)
+ plt.xlabel("Frequenz [MHz]")
+ plt.ylabel("Zeit [s]")
+ plt.show()
+
+.. image:: ../_images/bladerf-waterfall.svg
+ :align: center
+ :target: ../_images/bladerf-waterfall.svg
+ :alt: bladeRF Spektrogramm-Beispiel
+
+Jede vertikale gewellte Linie ist ein FM-Radiosignal. Was das pulsierende Signal auf der rechten Seite verursacht, ist unklar – eine Reduzierung des Gains ließ es nicht verschwinden.
+
+
+********************************
+Samples senden in Python
+********************************
+
+Das Senden von Samples mit dem bladeRF ist dem Empfangen sehr ähnlich. Der wesentliche Unterschied besteht darin, dass wir die zu sendenden Samples generieren und sie dann mit der Methode :code:`sync_tx` an das bladeRF schreiben müssen, die unseren gesamten Batch an Samples auf einmal verarbeiten kann (bis zu ca. 4 Milliarden Samples). Der folgende Code zeigt, wie man einen einfachen Ton sendet und ihn 30 Mal wiederholt. Der Ton wird mit NumPy generiert und dann auf den Bereich -2048 bis 2048 skaliert, um in den 12-Bit-Digital-Analog-Wandler (DAC) zu passen. Anschließend wird der Ton in Bytes umgewandelt, die int16-Werte repräsentieren, und als Sendepuffer verwendet. Die synchrone Stream-API wird zum Senden der Samples verwendet, und die :code:`while True:`-Schleife sendet so lange, bis die gewünschte Anzahl an Wiederholungen erreicht ist. Wenn du stattdessen Samples aus einer Datei senden möchtest, verwende :code:`samples = np.fromfile('deinedatei.iq', dtype=np.int16)` (oder welchen Datentyp sie auch haben), um die Samples einzulesen, und konvertiere sie dann mit :code:`samples.tobytes()` in Bytes. Beachte dabei den Wertebereich des DAC von -2048 bis 2048.
+
+.. code-block:: python
+
+ from bladerf import _bladerf
+ import numpy as np
+
+ sdr = _bladerf.BladeRF()
+ tx_ch = sdr.Channel(_bladerf.CHANNEL_TX(0)) # 0 oder 1 übergeben
+
+ sample_rate = 10e6
+ center_freq = 100e6
+ gain = 0 # -15 bis 60 dB. Beim Senden klein anfangen und langsam erhöhen; Antenne anschließen!
+ num_samples = int(1e6)
+ repeat = 30 # Anzahl der Wiederholungen des Signals
+ print('Sendedauer:', num_samples/sample_rate*repeat, 'Sekunden')
+
+ # IQ-Samples zum Senden generieren (hier ein einfacher Ton)
+ t = np.arange(num_samples) / sample_rate
+ f_tone = 1e6
+ samples = np.exp(1j * 2 * np.pi * f_tone * t) # liegt zwischen -1 und +1
+ samples = samples.astype(np.complex64)
+ samples *= 2048.0 # Auf -2048 bis 2048 skalieren (12-Bit-DAC)
+ samples = samples.view(np.int16)
+ buf = samples.tobytes() # Samples in Bytes umwandeln und als Sendepuffer verwenden
+
+ tx_ch.frequency = center_freq
+ tx_ch.sample_rate = sample_rate
+ tx_ch.bandwidth = sample_rate/2
+ tx_ch.gain = gain
+
+ # Synchronen Stream konfigurieren
+ sdr.sync_config(layout=_bladerf.ChannelLayout.TX_X1, # oder TX_X2
+ fmt=_bladerf.Format.SC16_Q11, # int16s
+ num_buffers=16,
+ buffer_size=8192,
+ num_transfers=8,
+ stream_timeout=3500)
+
+ print("Starte Senden!")
+ repeats_remaining = repeat - 1
+ tx_ch.enable = True
+ while True:
+ sdr.sync_tx(buf, num_samples) # an bladeRF schreiben
+ print(repeats_remaining)
+ if repeats_remaining > 0:
+ repeats_remaining -= 1
+ else:
+ break
+
+ print("Stoppe Senden")
+ tx_ch.enable = False
+
+Ein paar :code:`Hit stall for buffer`-Meldungen am Ende sind zu erwarten.
+
+Um gleichzeitig zu senden und zu empfangen, müssen Threads verwendet werden. Am besten nutzt du dafür Nuands Beispiel `txrx.py `_, das genau das tut.
+
+***********************************
+Oszillatoren, PLLs und Kalibrierung
+***********************************
+
+Alle Direktkonversions-SDRs (einschließlich aller AD9361-basierten SDRs wie dem USRP B2X0, Analog Devices Pluto und bladeRF) sind auf einen einzelnen Oszillator angewiesen, der einen stabilen Takt für den HF-Transceiver bereitstellt. Jeder Versatz oder Jitter in der von diesem Oszillator erzeugten Frequenz überträgt sich als Frequenzversatz und Frequenzjitter auf das empfangene oder gesendete Signal. Dieser Oszillator befindet sich an Bord, kann aber optional durch ein separates Rechteck- oder Sinussignal „diszipliniert" werden, das über einen U.FL-Steckverbinder auf der Platine in das bladeRF eingespeist wird.
+
+An Bord des bladeRF befindet sich ein `Abracon VCTCXO `_ (spannungsgesteuerter, temperaturkompensierter Oszillator) mit einer Frequenz von 38,4 MHz. Der „temperaturkompensierte" Aspekt bedeutet, dass er so ausgelegt ist, dass er über einen weiten Temperaturbereich stabil bleibt. Der spannungsgesteuerte Aspekt bedeutet, dass ein Spannungspegel verwendet wird, um leichte Anpassungen an der Oszillatorfrequenz vorzunehmen. Beim bladeRF wird diese Spannung von einem separaten 10-Bit-Digital-Analog-Wandler (DAC) bereitgestellt, wie im Blockdiagramm unten in Grün dargestellt. Das bedeutet, dass wir über Software feine Anpassungen an der Frequenz des Oszillators vornehmen können – so wird das VCTCXO des bladeRF kalibriert (auch als „Trimmen" bezeichnet). Glücklicherweise werden die bladeRFs bereits im Werk kalibriert, wie wir später in diesem Abschnitt besprechen. Wenn du jedoch entsprechende Messgeräte zur Verfügung hast, kannst du diesen Wert jederzeit feinabstimmen, besonders wenn die Frequenz des Oszillators im Laufe der Jahre driftet.
+
+.. image:: ../_images/bladeRF-2.0-micro-Block-Diagram-4-oscillator.png
+ :scale: 80 %
+ :align: center
+ :alt: bladeRF 2.0 Blockdiagramm mit Oszillator
+
+Bei Verwendung einer externen Frequenzreferenz (die nahezu jede Frequenz bis 300 MHz haben kann) wird das Referenzsignal direkt in den `Analog Devices ADF4002 `_ PLL auf dem bladeRF eingespeist. Dieser PLL synchronisiert sich mit dem Referenzsignal und sendet ein Signal an den VCTCXO (wie oben in Blau dargestellt), das proportional zur Frequenz- und Phasendifferenz zwischen dem (skalierten) Referenzeingang und dem VCTCXO-Ausgang ist. Sobald der PLL eingerastet ist, ist dieses Signal zwischen PLL und VCTCXO eine stationäre Gleichspannung, die den VCTCXO-Ausgang bei „genau" 38,4 MHz hält (vorausgesetzt, die Referenz war korrekt) und phasensynchron mit dem Referenzeingang ist. Bei Verwendung einer externen Referenz muss :code:`clock_ref` aktiviert werden (entweder über Python oder die CLI) und die Eingangsreferenzfrequenz (auch als :code:`refin_freq` bezeichnet, standardmäßig 10 MHz) eingestellt werden. Gründe für die Verwendung einer externen Referenz sind eine bessere Frequenzgenauigkeit und die Möglichkeit, mehrere SDRs mit derselben Referenz zu synchronisieren.
+
+Jeder VCTCXO-DAC-Trimwert des bladeRF wird im Werk auf innerhalb von 1 Hz bei 38,4 MHz bei Raumtemperatur kalibriert. Du kannst deine Seriennummer auf `dieser Seite `_ eingeben, um den werksseitig kalibrierten Wert abzufragen (die Seriennummer findest du auf der Platine oder mit :code:`bladerf-tool probe`). Laut Nuand sollte eine neue Platine gut innerhalb von 0,5 ppm und wahrscheinlich näher an 0,1 ppm liegen. Wenn du Messgeräte zur Überprüfung der Frequenzgenauigkeit hast oder den Wert auf den Werkswert setzen möchtest, kannst du folgende Befehle verwenden:
+
+.. code-block:: bash
+
+ $ bladeRF-cli -i
+ bladeRF> flash_init_cal 301 0x2049
+
+Ersetze dabei :code:`301` durch deine bladeRF-Größe und :code:`0x2049` durch den Hex-Wert deines VCTCXO-DAC-Trimwerts. Ein Neustart ist erforderlich, damit die Änderung wirksam wird.
+
+***********************************
+Abtastung bei 122 MHz
+***********************************
+
+Kommt bald!
+
+***********************************
+Erweiterungsports
+***********************************
+
+Das bladeRF 2.0 verfügt über einen Erweiterungsport mit einem BSH-030-Steckverbinder. Weitere Informationen zur Verwendung dieses Ports folgen bald!
+
+********************************
+Weiterführende Literatur
+********************************
+
+#. `bladeRF Wiki `_
+#. `Nuands txrx.py Beispiel `_
diff --git a/content-de/channel_coding.rst b/content-de/channel_coding.rst
new file mode 100644
index 00000000..b9df3ed6
--- /dev/null
+++ b/content-de/channel_coding.rst
@@ -0,0 +1,186 @@
+.. _channel-coding-chapter:
+
+#####################
+Kanalcodierung
+#####################
+
+In diesem Kapitel stellen wir die Grundlagen der Kanalcodierung vor, auch bekannt als Vorwärtsfehlerkorrektur (FEC), die Shannon-Grenze, Hamming-Codes, Turbo-Codes und LDPC-Codes. Kanalcodierung ist ein riesiges Gebiet innerhalb der drahtlosen Kommunikation und ein Zweig der „Informationstheorie", die sich mit der Quantifizierung, Speicherung und Übertragung von Informationen befasst.
+
+***************************
+Warum wir Kanalcodierung brauchen
+***************************
+
+Wie wir im Kapitel :ref:`noise-chapter` gelernt haben, sind drahtlose Kanäle verrauscht, und unsere digitalen Symbole erreichen den Empfänger nicht perfekt. Wenn du einen Netzwerkkurs belegt hast, weißt du vielleicht bereits von zyklischen Redundanzprüfungen (CRCs), die Fehler auf der Empfangsseite **erkennen**. Der Zweck der Kanalcodierung ist es, Fehler am Empfänger zu erkennen **und zu korrigieren**. Wenn wir etwas Spielraum für Fehler zulassen, können wir zum Beispiel mit einem höherwertigen Modulationsschema senden, ohne eine unterbrochene Verbindung zu haben. Als visuelles Beispiel betrachte die folgenden Konstellationen, die QPSK (links) und 16QAM (rechts) bei gleichem Rauschen zeigen. QPSK liefert 2 Bits pro Symbol, während 16QAM mit 4 Bits pro Symbol die doppelte Datenrate bietet. Beachte jedoch, wie in der QPSK-Konstellation die Symbole tendenziell die Symbolentscheidungsgrenze (die x- und y-Achse) nicht überschreiten, was bedeutet, dass die Symbole korrekt empfangen werden. In der 16QAM-Darstellung hingegen gibt es Überlappungen in den Clustern, und infolgedessen werden viele Symbole falsch empfangen.
+
+.. image:: ../_images_de/qpsk_vs_16qam.png
+ :scale: 90 %
+ :align: center
+ :alt: Vergleich von verrauschtem QPSK und 16QAM zur Demonstration der Notwendigkeit von Vorwärtsfehlerkorrektur (Kanalcodierung)
+
+Ein fehlgeschlagener CRC führt normalerweise zu einer erneuten Übertragung, zumindest bei Protokollen wie TCP. Wenn Alice eine Nachricht an Bob sendet, wäre es vorzuziehen, Bob nicht dazu bringen zu müssen, eine Nachricht an Alice zurückzusenden, um die Informationen erneut anzufordern. Der Zweck der Kanalcodierung ist es, **redundante** Informationen zu übertragen. Die Redundanz ist eine Ausfallsicherung, die die Anzahl fehlerhafter Pakete, Neuübertragungen oder verlorener Daten reduziert.
+
+Wir haben besprochen, warum wir Kanalcodierung brauchen. Schauen wir uns an, wo sie in der Sende-Empfangs-Kette vorkommt:
+
+.. image:: ../_images_de/tx_rx_chain.svg
+ :align: center
+ :target: ../_images_de/tx_rx_chain.svg
+ :alt: Die Sende-Empfangs-Kette der drahtlosen Kommunikation, die beide Seiten eines Transceivers zeigt
+
+Beachte, dass es mehrere Codierungsschritte in der Sende-Empfangs-Kette gibt. Quellencodierung, unser erster Schritt, ist nicht dasselbe wie Kanalcodierung; Quellencodierung soll die zu übertragenden Daten so weit wie möglich komprimieren, ähnlich wie beim Zippen von Dateien zur Platzeinsparung. Die Ausgabe des Quellencodierungsblocks sollte nämlich **kleiner** als die Dateneingabe sein, aber die Ausgabe der Kanalcodierung wird größer als ihre Eingabe sein, da Redundanz hinzugefügt wird.
+
+***************************
+Arten von Codes
+***************************
+
+Zur Kanalcodierung verwenden wir einen „Fehlerkorrekturcode". Dieser Code sagt uns, welche Bits wir angesichts der zu übertragenden Bits tatsächlich senden? Der grundlegendste Code wird als „Wiederholungscodierung" bezeichnet, bei der man einfach ein Bit N-mal hintereinander wiederholt. Bei Wiederholungs-3-Code würde man jedes Bit dreimal übertragen:
+
+.. role:: raw-html(raw)
+ :format: html
+
+- 0 :raw-html:`→` 000
+- 1 :raw-html:`→` 111
+
+Die Nachricht 10010110 wird nach der Kanalcodierung als 111000000111000111111000 übertragen.
+
+Einige Codes arbeiten auf „Blöcken" von Eingangsbits, während andere einen Streamansatz verwenden. Codes, die auf Blöcken mit fester Länge arbeiten, werden als „Blockcodes" bezeichnet, während Codes, die auf einem Bitstrom beliebiger Länge arbeiten, als „Faltungscodes" bezeichnet werden. Dies sind die zwei primären Arten von Codes. Unser Wiederholungs-3-Code ist ein Blockcode, bei dem jeder Block drei Bits umfasst.
+
+Als Anmerkung: Diese Fehlerkorrekturcodes werden nicht nur bei der Kanalcodierung für drahtlose Verbindungen verwendet. Hast du schon einmal Informationen auf einer Festplatte oder SSD gespeichert und dich gewundert, warum es beim Zurücklesen nie zu Bitfehlern kommt? Das Schreiben und Lesen von Speicher ist ähnlich wie ein Kommunikationssystem. Festplatten-/SSD-Controller haben eingebaute Fehlerkorrektur. Sie ist für das Betriebssystem transparent und kann proprietär sein, da sie sich vollständig auf der Festplatte/SSD befindet. Für tragbare Medien wie CDs muss die Fehlerkorrektur standardisiert sein. Reed-Solomon-Codes waren bei CD-ROMs üblich.
+
+***************************
+Coderate
+***************************
+
+Alle Fehlerkorrekturen beinhalten eine Form von Redundanz. Das bedeutet, wenn wir 100 Bits an Informationen übertragen möchten, müssen wir tatsächlich **mehr als** 100 Bits senden. Die „Coderate" ist das Verhältnis zwischen der Anzahl der Informationsbits und der Gesamtzahl der gesendeten Bits (d.h. Informations- plus Redundanzbits). Zurück zum Wiederholungs-3-Codierungsbeispiel: Wenn ich 100 Bits an Informationen habe, können wir Folgendes bestimmen:
+
+- 300 Bits werden gesendet
+- Nur 100 Bits repräsentieren Informationen
+- Coderate = 100/300 = 1/3
+
+Die Coderate wird immer kleiner als 1 sein, da es einen Kompromiss zwischen Redundanz und Durchsatz gibt. Eine niedrigere Coderate bedeutet mehr Redundanz und weniger Durchsatz.
+
+***************************
+Modulation und Codierung
+***************************
+
+Im Kapitel :ref:`modulation-chapter` haben wir uns mit Rauschen in Modulationsschemas befasst. Bei einem niedrigen SNR benötigst du ein Modulationsschema niedrigerer Ordnung (z.B. QPSK), um mit dem Rauschen umzugehen, und bei einem hohen SNR kannst du Modulation wie 256QAM verwenden, um mehr Bits pro Sekunde zu erhalten. Kanalcodierung ist ähnlich; du möchtest bei niedrigen SNRs niedrigere Coderaten, und bei hohen SNRs kannst du eine Coderate von fast 1 verwenden. Moderne Kommunikationssysteme haben eine Reihe von kombinierten Modulations- und Codierungsschemas, sogenannte MCS (Modulation and Coding Scheme). Jedes MCS spezifiziert ein Modulationsschema und ein Codierungsschema für bestimmte SNR-Pegel.
+
+Moderne Kommunikationssysteme ändern das MCS adaptiv in Echtzeit basierend auf den Drahtlosnalkanalzuständen. Der Empfänger sendet Feedback über die Kanalqualität an den Sender. Das Feedback muss ausgetauscht werden, bevor sich die Qualität des drahtlosen Kanals ändert, was in der Größenordnung von Millisekunden liegen kann. Dieser adaptive Prozess führt zu höchstmöglichem Durchsatz und wird von modernen Technologien wie LTE, 5G und WLAN verwendet. Unten ist eine Visualisierung eines Zellturms, der während der Übertragung das MCS ändert, während sich die Entfernung eines Benutzers zur Zelle ändert.
+
+.. image:: ../_images_de/adaptive_mcs.svg
+ :align: center
+ :target: ../_images_de/adaptive_mcs.svg
+ :alt: Modulations- und Codierungsschema (MCS) visualisiert mit einer Mobilfunkbasisstation, bei der jeder Ring die Grenze eines MCS-Schemas darstellt
+
+Wenn du bei adaptivem MCS den Durchsatz über dem SNR aufträgst, erhältst du eine treppenförmige Kurve wie im Graphen unten. Protokolle wie LTE haben oft eine Tabelle, die angibt, welches MCS bei welchem SNR verwendet werden soll.
+
+.. image:: ../_images_de/adaptive_mcs2.svg
+ :align: center
+ :target: ../_images_de/adaptive_mcs2.svg
+ :alt: Diagramm des Durchsatzes über dem SNR für verschiedene Modulations- und Codierungsschemas (MCS), das eine Treppen- oder Stufenform ergibt
+
+***************************
+Hamming-Code
+***************************
+
+Schauen wir uns einen einfachen Fehlerkorrekturcode an. Der Hamming-Code war der erste nicht-triviale entwickelte Code. In den späten 1940er Jahren arbeitete Richard Hamming bei Bell Labs und verwendete einen elektromechanischen Computer, der gestanztes Papierband verwendete. Wenn Fehler in der Maschine erkannt wurden, hielt sie an und Bediener mussten sie beheben. Hamming wurde frustriert davon, seine Programme aufgrund erkannter Fehler von vorne starten zu müssen. Er sagte: „Verdammt nochmal, wenn die Maschine einen Fehler erkennen kann, warum kann sie dann nicht die Position des Fehlers lokalisieren und ihn korrigieren?" Er verbrachte die nächsten Jahre damit, den Hamming-Code zu entwickeln, damit der Computer genau das tun konnte.
+
+Bei Hamming-Codes werden zusätzliche Bits, sogenannte Paritätsbits oder Prüfbits, zur Information für Redundanz hinzugefügt. Alle Bitpositionen, die Zweierpotenzen sind, sind Paritätsbits: 1, 2, 4, 8 usw. Die anderen Bitpositionen sind für Informationen. Die Tabelle unter diesem Absatz hebt Paritätsbits in Grün hervor. Jedes Paritätsbit „deckt" alle Bits ab, bei denen das bitweise UND des Paritätsbits und der Bitposition ungleich null ist, unten mit einem roten X markiert. Wenn wir ein Datenbit verwenden möchten, brauchen wir die Paritätsbits, die es abdecken. Um bis zum Datenbit d9 gehen zu können, benötigen wir Paritätsbit p8 und alle Paritätsbits, die davor kommen, also sagt uns diese Tabelle, wie viele Paritätsbits wir für eine bestimmte Anzahl von Bits benötigen. Dieses Muster setzt sich unbegrenzt fort.
+
+.. image:: ../_images_de/hamming.svg
+ :align: center
+ :target: ../_images_de/hamming.svg
+ :alt: Hamming-Code-Muster, das zeigt, wie die Paritätsbit-Abdeckung funktioniert
+
+Hamming-Codes sind Blockcodes, also arbeiten sie auf N Datenbits auf einmal. Mit drei Paritätsbits können wir also auf Blöcken von vier Datenbits auf einmal arbeiten. Wir stellen dieses Fehlercodierungsschema als Hamming(7,4) dar, wobei das erste Argument die insgesamt übertragenen Bits und das zweite Argument die Datenbits sind.
+
+.. image:: ../_images_de/hamming2.svg
+ :align: center
+ :target: ../_images_de/hamming2.svg
+ :alt: Beispiel für Hamming 7,4, das drei Paritätsbits hat
+
+Im Folgenden sind drei wichtige Eigenschaften von Hamming-Codes aufgeführt:
+
+- Die minimale Anzahl von Bitänderungen, die benötigt wird, um von einem beliebigen Codewort zu einem anderen zu gelangen, ist drei
+- Es kann Einzelbit-Fehler korrigieren
+- Es kann Zweibit-Fehler erkennen, aber nicht korrigieren
+
+Algorithmisch kann der Codierungsprozess durch eine einfache Matrixmultiplikation durchgeführt werden, unter Verwendung der sogenannten „Generatormatrix". Im folgenden Beispiel ist der Vektor 1011 die zu codierende Dateneingabe, d.h. die Information, die wir an den Empfänger senden möchten. Die 2D-Matrix ist die Generatormatrix und definiert das Codierungsschema. Das Ergebnis der Multiplikation liefert das zu übertragende Codewort.
+
+.. image:: ../_images_de/hamming3.png
+ :scale: 60 %
+ :align: center
+ :alt: Matrixmultiplikation zur Codierung von Bits mit einer Generatormatrix unter Verwendung von Hamming-Codes
+
+Der Sinn des Eintauchens in Hamming-Codes war es, einen Eindruck davon zu geben, wie Fehlercodierung funktioniert. Blockcodes folgen tendenziell diesem Muster. Faltungscodes funktionieren anders, aber wir gehen hier nicht darauf ein; sie verwenden oft die Trellis-Dekodierung, die in einem Diagramm dargestellt werden kann, das so aussieht:
+
+.. image:: ../_images_de/trellis.svg
+ :align: center
+ :scale: 80%
+ :alt: Ein Trellis-Diagramm oder -Graph wird bei der Faltungscodierung verwendet, um Verbindungen zwischen Knoten darzustellen
+
+***************************
+Weiche vs. harte Dekodierung
+***************************
+
+Erinnere dich, dass beim Empfänger die Demodulation vor der Dekodierung erfolgt. Der Demodulator kann uns seine beste Schätzung darüber mitteilen, welches Symbol gesendet wurde, oder er kann den „weichen" Wert ausgeben. Bei BPSK kann der Demodulator anstatt uns 1 oder 0 zu sagen, 0,3423 oder -1,1234 sagen, was auch immer der „weiche" Wert des Symbols war. Typischerweise ist die Dekodierung so ausgelegt, dass sie harte oder weiche Werte verwendet.
+
+- **Weiche Entscheidungsdekodierung** – verwendet die weichen Werte
+- **Harte Entscheidungsdekodierung** – verwendet nur die 1en und 0en
+
+Weich ist robuster, weil du alle dir zur Verfügung stehenden Informationen verwendest, aber weich ist auch viel komplizierter zu implementieren. Die Hamming-Codes, über die wir gesprochen haben, verwenden harte Entscheidungen, während Faltungscodes dazu neigen, weiche zu verwenden.
+
+***************************
+Shannon-Grenze
+***************************
+
+Die Shannon-Grenze oder Shannon-Kapazität ist ein unglaubliches Stück Theorie, das uns sagt, wie viele Bits pro Sekunde an fehlerfreien Informationen wir senden können:
+
+.. math::
+ C = B \cdot log_2 \left( 1 + \frac{S}{N} \right)
+
+- C – Kanalkapazität [Bits/Sek]
+- B – Kanalbandbreite [Hz]
+- S – Mittlere empfangene Signalleistung [Watt]
+- N – Mittlere Rauschleistung [Watt]
+
+Diese Gleichung stellt das Beste dar, was ein MCS erreichen kann, wenn es bei einem ausreichend hohen SNR fehlerfrei arbeitet. Es macht mehr Sinn, die Grenze in Bits/Sek/Hz darzustellen, d.h. Bits/Sek pro Spektrumsmenge:
+
+.. math::
+ \frac{C}{B} = log_2 \left( 1 + \mathrm{SNR} \right)
+
+mit SNR in linearen Einheiten (nicht dB). Beim Aufzeichnen stellen wir SNR jedoch normalerweise in dB dar:
+
+.. image:: ../_images_de/shannon_limit.svg
+ :align: center
+ :target: ../_images_de/shannon_limit.svg
+ :alt: Diagramm der Shannon-Grenze in Bits pro Sekunde pro Hz über SNR in dB
+
+Wenn du Shannon-Limit-Diagramme anderswo siehst, die etwas anders aussehen, verwenden sie wahrscheinlich eine x-Achse von „Energie pro Bit" oder :math:`E_b/N_0`, was nur eine Alternative zur Arbeit mit SNR ist.
+
+Es könnte helfen, die Dinge zu vereinfachen, indem man erkennt, dass bei relativ hohem SNR (z.B. 10 dB oder höher) die Shannon-Grenze als :math:`log_2 \left( \mathrm{SNR} \right)` angenähert werden kann, was ungefähr :math:`\mathrm{SNR_{dB}}/3` entspricht (`hier erklärt `_). Zum Beispiel bei 24 dB SNR erhältst du 8 Bits/Sek/Hz; wenn du also 1 MHz zur Verfügung hast, sind das 8 Mbps. Du denkst vielleicht: „Na ja, das ist nur die theoretische Grenze", aber moderne Kommunikation kommt dieser Grenze sehr nahe, sodass sie zumindest einen groben Anhaltspunkt liefert. Du kannst diese Zahl immer halbieren, um Paket-/Frame-Overhead und nicht-ideale MCS zu berücksichtigen.
+
+Der maximale Durchsatz von 802.11n WLAN im 2,4-GHz-Band (das 20 MHz breite Kanäle verwendet) beträgt laut Spezifikation 300 Mbps. Natürlich könntest du direkt neben deinem Router sitzen und ein extrem hohes SNR erhalten, vielleicht 60 dB, aber um zuverlässig/praktisch zu sein, wird das MCS mit maximalem Durchsatz (erinnere dich an die Treppenkurve von oben) wahrscheinlich kein so hohes SNR erfordern. Du kannst sogar einen Blick auf die `MCS-Liste für 802.11n `_ werfen. 802.11n geht bis zu 64-QAM, und kombiniert mit Kanalcodierung erfordert es laut `dieser Tabelle `_ ein SNR von etwa 25 dB. Das bedeutet, dass dein WLAN selbst bei 60 dB SNR noch 64-QAM verwenden wird. Also bei 25 dB liegt die Shannon-Grenze bei etwa 8,3 Bits/Sek/Hz, was bei 20 MHz Spektrum 166 Mbps ergibt. Wenn du jedoch MIMO berücksichtigst (das wir in einem zukünftigen Kapitel behandeln werden), kannst du vier dieser Streams parallel laufen lassen, was 664 Mbps ergibt. Teile diese Zahl durch zwei und du erhältst etwas, das der beworbenen Maximalgeschwindigkeit von 300 Mbps für 802.11n WLAN im 2,4-GHz-Band sehr nahekommt.
+
+Der Beweis hinter der Shannon-Grenze ist ziemlich verrückt; er beinhaltet Mathematik, die so aussieht:
+
+.. image:: ../_images_de/shannon_limit_proof.png
+ :scale: 70 %
+ :align: center
+ :alt: Beispiel der Mathematik, die beim Shannon-Grenze-Beweis involviert ist
+
+Für weitere Informationen siehe `hier `_.
+
+***************************
+Modernste Codes
+***************************
+
+Derzeit sind die besten Kanalcodierungsschemas:
+
+1. Turbo-Codes, verwendet in 3G, 4G und NASA-Raumfahrzeugen.
+2. LDPC-Codes, verwendet in DVB-S2, WiMAX, IEEE 802.11n.
+
+Beide Codes nähern sich der Shannon-Grenze (d.h. sie erreichen sie fast unter bestimmten SNRs). Hamming-Codes und andere einfachere Codes kommen der Shannon-Grenze bei weitem nicht nahe. Aus Forschungssicht bleibt in Bezug auf die Codes selbst nicht viel Verbesserungspotenzial. Die aktuelle Forschung konzentriert sich mehr darauf, die Dekodierung recheneffizienter und adaptiver gegenüber Kanal-Feedback zu machen.
+
+LDPC-Codes (Low-Density Parity-Check) sind eine Klasse hocheffizienter linearer Blockcodes. Sie wurden erstmals von Robert G. Gallager in seiner Doktorarbeit im Jahr 1960 am MIT vorgestellt. Aufgrund der Rechenkomplexität ihrer Implementierung wurden sie bis in die 1990er Jahre ignoriert! Er war 89 Jahre alt zum Zeitpunkt dieses Schreibens (2020), lebt noch und hat viele Preise für seine Arbeit gewonnen (Jahrzehnte nachdem er sie geleistet hatte). LDPC ist nicht patentiert und daher frei verwendbar (im Gegensatz zu Turbo-Codes), weshalb es in vielen offenen Protokollen verwendet wurde.
+
+Turbo-Codes basieren auf Faltungscodes. Es ist eine Klasse von Codes, die zwei oder mehr einfachere Faltungscodes und einen Interleaver kombiniert. Der grundlegende Patentantrag für Turbo-Codes wurde am 23. April 1991 eingereicht. Die Erfinder waren Franzosen; als Qualcomm Turbo-Codes in CDMA für 3G verwenden wollte, musste es eine gebührenpflichtige Patentlizenzvereinbarung mit France Télécom abschließen. Das primäre Patent lief am 29. August 2013 ab.
diff --git a/content-de/cyclostationary.rst b/content-de/cyclostationary.rst
new file mode 100644
index 00000000..09f85770
--- /dev/null
+++ b/content-de/cyclostationary.rst
@@ -0,0 +1,872 @@
+.. _freq-domain-chapter:
+
+##########################
+Zyklostationäre Verarbeitung
+##########################
+
+.. raw:: html
+
+ Mitautorin: Sam Brown
+
+In diesem Kapitel entmystifizieren wir die zyklostationäre Signalverarbeitung (auch CSP genannt), ein relativ spezialisiertes Gebiet der HF-Signalverarbeitung, das zur Analyse oder Erkennung (oft bei sehr niedrigem SNR!) von Signalen mit zyklostationären Eigenschaften eingesetzt wird, wie z. B. die meisten modernen digitalen Modulationsverfahren. Wir behandeln die zyklische Autokorrelationsfunktion (CAF), die Spektrale Korrelationsfunktion (SCF), die Spektrale Kohärenzfunktion (COH), deren konjugierte Versionen und wie sie angewendet werden können. Dieses Kapitel enthält mehrere vollständige Python-Implementierungen mit Beispielen für BPSK, QPSK, OFDM und mehrere kombinierte Signale.
+
+****************
+Einführung
+****************
+
+Zyklostationäre Signalverarbeitung (CSP) ist eine Sammlung von Techniken zur Ausnutzung der zyklostationären Eigenschaft, die in vielen realen Kommunikationssignalen vorkommt. Dazu gehören modulierte Signale wie AM/FM/TV-Rundfunk, Mobilfunk und WLAN sowie Radarsignale und andere Signale, die Periodizität in ihrer Statistik aufweisen. Ein großer Teil der traditionellen Signalverarbeitungstechniken basiert auf der Annahme, dass das Signal stationär ist, d. h. die Statistiken des Signals wie Mittelwert, Varianz und Momente höherer Ordnung ändern sich nicht mit der Zeit. Die meisten realen HF-Signale sind jedoch zyklostationär, d. h. die Statistiken des Signals ändern sich *periodisch* mit der Zeit. CSP-Techniken nutzen diese zyklostationäre Eigenschaft und können zur Erkennung von Signalen im Rauschen, zur Modulationserkennung und zur Trennung von Signalen verwendet werden, die sich sowohl in Zeit als auch in Frequenz überlappen.
+
+Wenn du nach dem Durchlesen dieses Kapitels und dem Spielen in Python tiefer in CSP eintauchen möchtest, schau dir William Gardners Lehrbuch von 1994 `Cyclostationarity in Communications and Signal Processing `_ an, sein Lehrbuch von 1987 `Statistical Spectral Analysis `_ oder Chad Spooners `Sammlung von Blog-Beiträgen `_.
+
+Am Ende des SCF-Abschnitts findest du eine interaktive JavaScript-App, mit der du die SCF eines Beispielsignals untersuchen kannst, um zu sehen, wie sich die SCF mit verschiedenen Signal- und SCF-Parametern ändert – alles in deinem Browser!
+
+*************************
+Wiederholung der Autokorrelation
+*************************
+
+Auch wenn du mit der Autokorrelationsfunktion vertraut bist, lohnt es sich, sie kurz zu wiederholen, da sie die Grundlage von CSP ist. Die Autokorrelationsfunktion ist ein Maß für die Ähnlichkeit (auch Korrelation genannt) zwischen einem Signal und seiner zeitverschobenen Version. Sie gibt an, in welchem Maße ein Signal repetitives Verhalten aufweist. Die Autokorrelation des Signals :math:`x(t)` ist definiert als:
+
+.. math::
+ R_x(\tau) = E[x(t)x^*(t-\tau)]
+
+wobei :math:`E` der Erwartungswertoperator, :math:`\tau` die Zeitverzögerung und :math:`*` das Symbol für die komplexe Konjugation ist. In diskreter Zeit mit einer begrenzten Anzahl von Samples wird dies zu:
+
+.. math::
+ R_x(\tau) = \frac{1}{N} \sum_{n=-N/2}^{N/2} x\left[ n+\frac{\tau}{2} \right] x^*\left[ n-\frac{\tau}{2} \right]
+
+wobei :math:`N` die Anzahl der Samples im Signal ist.
+
+Wenn das Signal in irgendeiner Weise periodisch ist, wie z. B. die sich wiederholende Symbolform eines QPSK-Signals, dann wird auch die Autokorrelation über einen Bereich von Tau periodisch sein. Wenn ein QPSK-Signal beispielsweise 8 Samples pro Symbol hat, gibt es bei Tau als ganzzahligem Vielfachen von 8 ein viel stärkeres „Ähnlichkeitsmaß" als bei anderen Tau-Werten.
+
+************************************************
+Die Zyklische Autokorrelationsfunktion (CAF)
+************************************************
+
+Wir wollen herausfinden, wann in unserer Autokorrelation Periodizität vorhanden ist. Erinnere dich an die Fourier-Transformationsgleichung: Wenn wir testen wollen, wie stark eine bestimmte Frequenz :math:`f` in einem beliebigen Signal :math:`x(t)` vorhanden ist, können wir dies mit:
+
+.. math::
+ X(f) = \int x(t) e^{-j2\pi ft} dt
+
+Um also Periodizität in unserer Autokorrelation zu finden, berechnen wir:
+
+.. math::
+ R_x(\tau, \alpha) = \lim_{T\rightarrow\infty} \frac{1}{T} \int_{-T/2}^{T/2} x(t + \tau/2)x^*(t - \tau/2)e^{-j2\pi \alpha t}dt.
+
+oder in diskreter Zeit:
+
+.. math::
+ R_x(\tau, \alpha) = \frac{1}{N} \sum_{n=-N/2}^{N/2} x\left[ n+\frac{\tau}{2} \right] x^*\left[ n-\frac{\tau}{2} \right] e^{-j2\pi \alpha n}
+
+Dies testet, wie stark die Frequenz :math:`\alpha` ist. Wir nennen die obige Gleichung die Zyklische Autokorrelationsfunktion (CAF). Eine andere Möglichkeit, die CAF zu betrachten, ist als Satz von Fourier-Reihenkoeffizienten, die diese Periodizität beschreiben. Wir verwenden den Begriff „zyklostationär" für Signale, die eine periodische oder fast periodische Autokorrelation besitzen.
+
+In Python kann die CAF des Basisbands :code:`samples` bei einem gegebenen :code:`alpha`- und :code:`tau`-Wert mit dem folgenden Code-Schnipsel berechnet werden:
+
+.. code-block:: python
+
+ CAF = (np.exp(1j * np.pi * alpha * tau) *
+ np.sum(samples * np.conj(np.roll(samples, tau)) *
+ np.exp(-2j * np.pi * alpha * np.arange(N))))
+
+Wir verwenden :code:`np.roll()`, um einen der Sample-Sätze um tau zu verschieben, da die Verschiebung um eine ganzzahlige Anzahl von Samples erfolgen muss.
+
+Um mit der CAF in Python zu spielen, simulieren wir zunächst ein Beispielsignal: ein rechteckiges BPSK-Signal (d. h. BPSK ohne Impulsformung) mit 20 Samples pro Symbol, weißem Gaußschen Rauschen (AWGN) und einem Frequenzversatz von 0,2 Hz:
+
+.. code-block:: python
+
+ N = 100000 # Anzahl der zu simulierenden Samples
+ f_offset = 0.2 # Hz normiert
+ sps = 20 # zyklische Freq (alpha) wird 1/sps oder 0,05 Hz normiert sein
+
+ symbols = np.random.randint(0, 2, int(np.ceil(N/sps))) * 2 - 1 # zufällige 1en und -1en
+ bpsk = np.repeat(symbols, sps) # jedes Symbol sps-mal wiederholen
+ bpsk = bpsk[:N] # auf N Samples kürzen
+ bpsk = bpsk * np.exp(2j * np.pi * f_offset * np.arange(N)) # BPSK nach oben verschieben (macht es auch komplex)
+ noise = np.random.randn(N) + 1j*np.random.randn(N) # komplexes weißes Gaußsches Rauschen
+ samples = bpsk + 0.1*noise # Rauschen zum Signal hinzufügen
+
+Da die absolute Abtastrate und Symbolrate in diesem Kapitel keine Rolle spielen, verwenden wir normierte Frequenz (entspricht Abtastrate = 1 Hz). Das bedeutet, das Signal muss zwischen -0,5 und +0,5 Hz liegen.
+
+Zur Veranschaulichung zeigen wir die Leistungsspektraldichte (d. h. FFT) des Signals *vor* jeder CSP-Verarbeitung:
+
+.. image:: ../_images/psd_of_bpsk_used_for_caf.svg
+ :align: center
+ :target: ../_images/psd_of_bpsk_used_for_caf.svg
+ :alt: PSD des für CAF verwendeten BPSK
+
+Wir berechnen nun die CAF bei dem richtigen Alpha (1/20 = 0,05 Hz) über einen Bereich von Tau-Werten:
+
+.. code-block:: python
+
+ # CAF nur beim richtigen Alpha
+ alpha_of_interest = 1/sps # entspricht 0,05 Hz
+ taus = np.arange(-50, 51)
+ CAF = np.zeros(len(taus), dtype=complex)
+ for i in range(len(taus)):
+ CAF[i] = (np.exp(1j * np.pi * alpha_of_interest * taus[i]) *
+ np.sum(samples * np.conj(np.roll(samples, taus[i])) *
+ np.exp(-2j * np.pi * alpha_of_interest * np.arange(N))))
+
+.. image:: ../_images/caf_at_correct_alpha.svg
+ :align: center
+ :target: ../_images/caf_at_correct_alpha.svg
+ :alt: CAF beim richtigen Alpha
+
+Zum Vergleich die CAF bei einem falschen Alpha (0,08 Hz):
+
+.. image:: ../_images/caf_at_incorrect_alpha.svg
+ :align: center
+ :target: ../_images/caf_at_incorrect_alpha.svg
+ :alt: CAF beim falschen Alpha
+
+Beachte die y-Achse – viel weniger Energie in der CAF diesmal. Wir können die CAF über einen Bereich von Alphas berechnen und bei jedem Alpha die Leistung in der CAF bestimmen:
+
+.. code-block:: python
+
+ alphas = np.arange(0, 0.5, 0.005)
+ CAF = np.zeros((len(alphas), len(taus)), dtype=complex)
+ for j in range(len(alphas)):
+ for i in range(len(taus)):
+ CAF[j, i] = (np.exp(1j * np.pi * alphas[j] * taus[i]) *
+ np.sum(samples * np.conj(np.roll(samples, taus[i])) *
+ np.exp(-2j * np.pi * alphas[j] * np.arange(N))))
+ CAF_magnitudes = np.average(np.abs(CAF), axis=1) # bei jedem Alpha Leistung berechnen
+ plt.plot(alphas, CAF_magnitudes)
+ plt.xlabel('Alpha')
+ plt.ylabel('CAF-Leistung')
+
+.. image:: ../_images/caf_avg_over_alpha.svg
+ :align: center
+ :target: ../_images/caf_avg_over_alpha.svg
+ :alt: CAF-Durchschnitt über Alpha
+
+Wir sehen nicht nur den erwarteten Spike bei 0,05 Hz, sondern auch Spikes bei ganzzahligen Vielfachen davon. Dies liegt daran, dass die CAF eine Fourier-Reihe ist und die Harmonischen der Grundfrequenz in der CAF vorhanden sind.
+
+************************************************
+Die Spektrale Korrelationsfunktion (SCF)
+************************************************
+
+So wie die CAF die Periodizität in der Autokorrelation eines Signals zeigt, zeigt die SCF die Periodizität in der PSD eines Signals. Autokorrelation und PSD sind ein Fourier-Transformationspaar, und daher sollte es keine Überraschung sein, dass CAF und SCF ebenfalls ein Fourier-Transformationspaar sind. Diese Beziehung ist als *Zyklische Wiener-Beziehung* bekannt.
+
+Man kann einfach die Fourier-Transformierte der CAF nehmen, um die SCF zu erhalten. Zurück zu unserem BPSK-Signal mit 20 Samples pro Symbol – schauen wir uns die SCF beim richtigen Alpha (0,05 Hz) an. Alles was wir tun müssen, ist die FFT der CAF zu nehmen und den Betrag zu plotten:
+
+.. code-block:: python
+
+ f = np.linspace(-0.5, 0.5, len(taus))
+ SCF = np.fft.fftshift(np.fft.fft(CAF))
+ plt.plot(f, np.abs(SCF))
+ plt.xlabel('Frequenz')
+ plt.ylabel('SCF')
+
+.. image:: ../_images/fft_of_caf.svg
+ :align: center
+ :target: ../_images/fft_of_caf.svg
+ :alt: FFT der CAF
+
+Wir sehen den 0,2-Hz-Frequenzversatz, den wir bei der Simulation des BPSK-Signals angewendet haben. Unten ist eine interaktive JavaScript-App, die eine SCF implementiert, damit du mit verschiedenen Signal- und SCF-Parametern spielen kannst:
+
+.. raw:: html
+
+
+
+
+
+