Commit fdfb9bf6 authored by Christian Rohlfing's avatar Christian Rohlfing

Merge branch 'development-lab' of git.rwth-aachen.de:IENT/gdet3-demos into development-lab

parents 5a5e1e12 2039a30c
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
"</div>\n", "</div>\n",
"\n", "\n",
"# Elementarsignale\n", "# Elementarsignale\n",
"Ein Signal ist i. Allg. die Darstellung des Amplitudenverlaufs einer physikalischen Größe, wie z. B. einer elektrische Spannung, Feldstärke oder auch eines Schalldrucks, Helligkeitsverlaufs, Lichtpegels usw. Häufig werden als Signale Zeitfunktionen solcher Größen benutzt, aber auch andere Abhängigkeiten,wie z. B. Ortsabhängigkeiten bei Bildsignalen, sind möglich. Speziell in der Nachrichtentechnik hat das Signal als Träger einer dem Empfänger unbekannten Information zumeist Zufallscharakter. Aufbauelemente (Elementarkomponenten) solcher Zufallssignale sind aber häufig die determinierten Signale, deren Verlauf zumindest im Prinzip durch einen geschlossenen Ausdruck vollständig beschrieben werden kann.\n", "Ein Signal ist im Allgemeinen die Darstellung des Amplitudenverlaufs einer physikalischen Größe, wie z. B. einer elektrische Spannung, Feldstärke oder auch eines Schalldrucks, Helligkeitsverlaufs, Lichtpegels usw. Häufig werden als Signale Zeitfunktionen solcher Größen benutzt, aber auch andere Abhängigkeiten,wie z. B. Ortsabhängigkeiten bei Bildsignalen, sind möglich. Speziell in der Nachrichtentechnik hat das Signal als Träger einer dem Empfänger unbekannten Information zumeist Zufallscharakter. Aufbauelemente (Elementarkomponenten) solcher Zufallssignale sind aber häufig die determinierten Signale, deren Verlauf zumindest im Prinzip durch einen geschlossenen Ausdruck vollständig beschrieben werden kann.\n",
"Ein Elementarsignal ist ein Signal mit einer besonders einfachen Form. Sie können technisch oft recht einfach erzeugt werden und werden vielfach auch zur Ermittlung der Eigenschaften von Systemen verwendet.\n", "Ein Elementarsignal ist ein Signal mit einer besonders einfachen Form. Sie können technisch oft recht einfach erzeugt werden und werden vielfach auch zur Ermittlung der Eigenschaften von Systemen verwendet.\n",
"\n", "\n",
"Im Folgenden werden einige Elementarsignale aufgeführt." "Im Folgenden werden einige Elementarsignale aufgeführt."
......
...@@ -70,10 +70,7 @@ ...@@ -70,10 +70,7 @@
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": { "metadata": {
"hide_input": true, "hide_input": true
"jupyter": {
"source_hidden": true
}
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
...@@ -81,7 +78,7 @@ ...@@ -81,7 +78,7 @@
" # Convolve s and h numerically\n", " # Convolve s and h numerically\n",
" return signal.convolve(s(tau), h(tau), mode='same')*deltat\n", " return signal.convolve(s(tau), h(tau), mode='same')*deltat\n",
"\n", "\n",
"(tau,deltat) = np.linspace(-15, 15, 5001, retstep=True) # tau Achse\n", "(tau,deltat) = np.linspace(-15, 15, 10001, retstep=True) # tau Achse\n",
"\n", "\n",
"signal_types = {'Rechteck' : rect, \n", "signal_types = {'Rechteck' : rect, \n",
" 'Dreieck' : tri, \n", " 'Dreieck' : tri, \n",
......
...@@ -37,10 +37,12 @@ ...@@ -37,10 +37,12 @@
"metadata": {}, "metadata": {},
"source": [ "source": [
"Im Folgenden soll die periodische Rechteckfunktion\n", "Im Folgenden soll die periodische Rechteckfunktion\n",
"\n",
"$$s_\\mathrm{p}(t) = \n", "$$s_\\mathrm{p}(t) = \n",
"\\mathrm{rect}\\left(\\frac{t}{T_1}\\right) \\ast\n", "\\mathrm{rect}\\left(\\frac{t}{T_1}\\right) \\ast\n",
"\\sum_{n=-\\infty}^\\infty \\delta(t-nT)\n", "\\sum_{n=-\\infty}^\\infty \\delta(t-nT)\n",
"$$\n", "$$\n",
"\n",
"durch eine *endliche* Fourier-Summe $s_{\\mathrm{p},N}(t)$ approximiert werden." "durch eine *endliche* Fourier-Summe $s_{\\mathrm{p},N}(t)$ approximiert werden."
] ]
}, },
...@@ -77,10 +79,15 @@ ...@@ -77,10 +79,15 @@
"=\n", "=\n",
"\\frac{\\sin\\left(k\\pi\\frac{T_1}{T}\\right)}{k\\pi}\\quad\\text{mit }k\\neq 0\n", "\\frac{\\sin\\left(k\\pi\\frac{T_1}{T}\\right)}{k\\pi}\\quad\\text{mit }k\\neq 0\n",
"$$\n", "$$\n",
"und \n",
"$$\n",
"S_\\mathrm{p}(k=0) = \\frac{T_1}{T}\\text{.}\n",
"$$\n",
" \n",
"Im Folgenden ist $T=\\frac{1}{F} = 1$.\n",
"\n", "\n",
"und $S_\\mathrm{p}(k=0) = \\frac{T_1}{T}$. Im Folgenden ist $T=\\frac{1}{F} = 1$.\n", "Im Zeitbereich kann die Fourier-Summe durch eine endliche Summe (Summation bis zu $\\pm N$ anstelle $\\pm \\infty$) wie folgt angenähert werden: \n",
"\n", "\n",
"Approximation der Fourier-Summe durch eine endliche Summe (Summation bis zu $\\pm N$ anstelle $\\pm \\infty$) im Zeitbereich\n",
"\n", "\n",
"$$\n", "$$\n",
"s_{\\mathrm{p},N}(t)\n", "s_{\\mathrm{p},N}(t)\n",
...@@ -89,14 +96,14 @@ ...@@ -89,14 +96,14 @@
"\\text{ .}\n", "\\text{ .}\n",
"$$\n", "$$\n",
"\n", "\n",
"Da $s_\\mathrm{p}(t)$ hier reell (und $S_\\mathrm{p}(-k) = S_\\mathrm{p}^\\ast(k)$):\n", "Da $s_\\mathrm{p}(t)$ hier ein reelles Signal ist (und damit $S_\\mathrm{p}(-k) = S_\\mathrm{p}^\\ast(k)$ gilt), kann es somit über den Gleichanteil und die Fourier-Koeffizienten durch\n",
"\n", "\n",
"$$\n", "$$\n",
"s_{\\mathrm{p},N}(t)\n", "s_{\\mathrm{p},N}(t)\n",
"=\n", "=\n",
"S_\\mathrm{p}(0) + 2 \\sum_{k=1}^N \\mathrm{Re}\\left\\{ S_\\mathrm{p}(k) \\mathrm{e}^{\\mathrm{j} 2 \\pi k F t} \\right\\}\n", "S_\\mathrm{p}(0) + 2 \\sum_{k=1}^N \\mathrm{Re}\\left\\{ S_\\mathrm{p}(k) \\mathrm{e}^{\\mathrm{j} 2 \\pi k F t} \\right\\}\n",
"\\text{ .}\n",
"$$\n", "$$\n",
"beschrieben werden.\n",
"\n", "\n",
"Zunächst für ein einfaches Beispiel mit $N=4$:" "Zunächst für ein einfaches Beispiel mit $N=4$:"
] ]
...@@ -123,11 +130,13 @@ ...@@ -123,11 +130,13 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"Die einzelnen Summanden \n", "Abgebildet sind die Koeffizienten $Sp_p(k)$ für $k=0,...,3$. Aus diesen vier Koeffizienten wird nun das Ursprungssignal angenähert. \n",
"\n",
"Die folgende Abbildung zeigt die einzelnen Summanden \n",
"$\n", "$\n",
"2 \\mathrm{Re}\\left\\{ S_\\mathrm{p}(k) \\mathrm{e}^{\\mathrm{j} 2 \\pi k F t} \\right\\}\n", "2 \\mathrm{Re}\\left\\{ S_\\mathrm{p}(k) \\mathrm{e}^{\\mathrm{j} 2 \\pi k F t} \\right\\}\n",
"$\n", "$\n",
"sowie das Resultat $s_{\\mathrm{p},N}(t)$" "sowie das Resultat $s_{\\mathrm{p},N}(t)$:"
] ]
}, },
{ {
...@@ -139,7 +148,7 @@ ...@@ -139,7 +148,7 @@
"# Approximated time signal\n", "# Approximated time signal\n",
"sp = Sp[0]*np.ones_like(t) # DC\n", "sp = Sp[0]*np.ones_like(t) # DC\n",
"\n", "\n",
"fig,axs = plt.subplots(2,1); colors = ['grun', 'orange', 'magenta']; ax = axs[0];\n", "fig,axs = plt.subplots(2,1); colors = ['grun', 'magenta', 'orange']; ax = axs[0];\n",
"ax.plot(t,sp, 'rwth-50', linestyle='--', label=r'$S_\\mathrm{p}(0)$')\n", "ax.plot(t,sp, 'rwth-50', linestyle='--', label=r'$S_\\mathrm{p}(0)$')\n",
"legend = np.array([r'$k==0$'])\n", "legend = np.array([r'$k==0$'])\n",
"for kIter in k[1::]:\n", "for kIter in k[1::]:\n",
...@@ -156,13 +165,22 @@ ...@@ -156,13 +165,22 @@
"ax.set_xlim([-1.6,1.6]); ient_axis(ax);" "ax.set_xlim([-1.6,1.6]); ient_axis(ax);"
] ]
}, },
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Die verwendeten Koeffizienten erzeugen Signalanteile mit ansteigender Frequenz. \n",
"Obwohl für die Rekonstruktion nur vier Koeffizienten verwendet wurden, ist die Annäherung an das ursprüngliche Rechtecksignal zu erkennen. Für eine klarere Darstellung der Ecken im Signal fehlen die hochfrequenten Anteil der höheren Koeffizienten. In der folgenden Demonstration kann dieser Effekt anschaulich betrachtet werden. "
]
},
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"## Demo\n", "## Demo\n",
"\n", "\n",
"Demonstration für variable $N$ und $T_1$" "Die Demonstation ermöglicht die Untersuchung des Einflusses der Anzahl der zur Rekonstruktion verwendeten Koeffizienten $N$ und der Breite $T_1$ des verwendeten Rechtecks. \n",
"Über den Slider können verschiedene Werte für $N$ und $T_1$ eingestellt werden. Die gestrichelte schwarze Linie in der oberen Abbildung zeigt das zu approximierende Ausgangssignal, die blaue Linie die errechnete Annäherung unter Verwendung von $N$ Koeffizienten. Die verwendeten Koeffizienten sind in der unteren Abbildung dargestellt."
] ]
}, },
{ {
...@@ -216,6 +234,23 @@ ...@@ -216,6 +234,23 @@
" axs[1].set_xlim([-N+.5, N-.5])" " axs[1].set_xlim([-N+.5, N-.5])"
] ]
}, },
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Aufgaben\n",
"\n",
"* Variiere $N$ und halte $T_1=0.5$ konstant. Wieviele Koeffizienten erhält man für $N=10$ und wie sind diese angeordnet? Warum?\n",
"\n",
"* Ab welchem $N$ ist annähernd die Struktur des Ausgangssignals zu erkennen? \n",
"\n",
"* Setze $N=50$. Wie verhält sich das rekonstruierte Signal an den Ecken des Rechteckimpulses? Warum?\n",
"\n",
"* Variiere nun $T_1$. Setze $N=7$ und beobachte, was mit den Koeffizienten passiert, wenn $T_1$ kleine oder große Werte annimmt. Was passiert mit dem approximierten Signal?\n",
"\n",
"* Für welche Kombination der Werte $N$ und $T_1$ kann die angenäherte Stuktur des Ausgangssignal erkannt werden? Warum?"
]
},
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
......
...@@ -56,7 +56,11 @@ ...@@ -56,7 +56,11 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"metadata": {}, "metadata": {
"jupyter": {
"source_hidden": true
}
},
"outputs": [], "outputs": [],
"source": [ "source": [
"b = 2\n", "b = 2\n",
...@@ -132,7 +136,10 @@ ...@@ -132,7 +136,10 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"Da in diesem Fall der Konvergenzbereich links vom linkesten Pol liegt und somit nicht die imaginäre Achse beinhaltet, existiert die Fouriertransformierte nicht. " "Da in diesem Fall der Konvergenzbereich links vom linkesten Pol liegt und somit nicht die imaginäre Achse beinhaltet, existiert die Fouriertransformierte nicht. \n",
"\n",
"\n",
"Eine ausführlichere Demo zur Laplacetransformation findet man [hier](GDET3%20Laplace-Transformation%20GUI.ipynb)."
] ]
}, },
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment