GDET3 Zeitverschiebung-Dehnung GUI.ipynb 5.02 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "jupyter": {
     "source_hidden": true
    }
   },
   "outputs": [],
   "source": [
13
    "# Copyright 2020 Institut für Nachrichtentechnik, RWTH Aachen University\n",
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
    "%matplotlib widget\n",
    "\n",
    "from ipywidgets import interact, interactive\n",
    "import ipywidgets as widgets\n",
    "\n",
    "from ient_nb.ient_plots import *\n",
    "from ient_nb.ient_signals import *"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div>\n",
    "    <img src=\"ient_nb/figures/rwth_ient_logo@2x.png\" style=\"float: right;height: 5em;\">\n",
    "</div>\n",
    "\n",
    "# Demo Zeitverschiebung & Zeitdehnung\n",
Iris Heisterklaus's avatar
Iris Heisterklaus committed
32
    "Die Demo wird im Menü gestartet mit Run <span class=\"fa-chevron-right fa\"></span> Run All Cells.\n",
33
34
35
36
37
38
    "\n",
    "Jedes Signal $s(t)$ kann verschoben, gedehnt/gestaucht und/oder gespiegelt werden. Im Folgenden werden die Effekte dieser Operationen auf das Signal verdeutlicht. Als grundlegende Form wird \n",
    "$\\displaystyle s\\left(\\pm\\frac{t-t_0}{T}\\right)$\n",
    "gewählt. Hierbei steht $t_0$ für die Verschiebung des Signals, $T$ für die Dehnung/Stauchung und $\\pm$ beschreibt die Spiegelung.\n",
    "\n",
    "Das Ausgangssignal ist\n",
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
    "$s(t) = t \\cdot \\mathrm{rect}\\left(t-\\frac{1}{2}\\right)$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "s = lambda t: t*rect(t - 0.5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
    "Mit den Schiebereglern können unterschiedliche Werte für den Dehnungsfaktor $T$ und die Zeitverschiebung $t_0$ ausgewählt werden. Die Spiegelung kann über den entsprechenden Button ein- und ausgeschaltet werden. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "jupyter": {
     "source_hidden": true
    }
   },
   "outputs": [],
   "source": [
    "# Plot & demo\n",
    "fig, ax = plt.subplots(1, 1, figsize=(8, 4))\n",
    "@widgets.interact(T=widgets.FloatSlider(min=-4, max=4, value=1, step=.1, description=r'Dehnung $T$', style=ient_wdgtl_style), \n",
    "                  t0=widgets.FloatSlider(min=-2, max=2, value=0, step=.1, description=r'Verschiebung $t_0$', style=ient_wdgtl_style),\n",
    "                  reflection=widgets.Checkbox(value=False, description='Spiegelung', style=ient_wdgtl_style))\n",
    "def update_signals(T, t0, reflection):\n",
    "    T = 0.1 if T==0 else T\n",
    "    T = -T if reflection else T\n",
    "    \n",
    "    s_plot = s((t-t0)/T)\n",
    "    \n",
    "    if not ax.lines: # plot s(t) and g(t)\n",
    "        ax.plot(t, s_plot, 'rwth');\n",
    "        ax.set_xlabel(r'$\\rightarrow t$'); ax.set_ylabel(r'$\\uparrow s\\left(\\pm\\frac{t-t_0}{T}\\right)$')\n",
    "        ax.axis('equal'); ax.set_xlim([-4.75, 4.75]); ient_axis(ax); ient_grid(ax); ax.minorticks_on()\n",
    "        \n",
    "    else: # update lines\n",
    "        ax.lines[0].set_ydata(s_plot); "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Aufgaben\n",
    "* Verändere den Wert für $t_0$. In welche Richtung bewegt sich das Signal?\n",
    "* Verändere nun den Dehnungsfaktor $T$. Was passiert für $T<0$? Was passiert für Werte $T>0$? \n",
    "* Setze die Werte zurück auf $T=1$ und $t_0=0$. Dies kann entweder über den Schieberegler oder durch erneutes Ausführen der Cell erfolgen.\n",
    "* Aktiviere und deaktivere die Spiegelung und beobachte, was passiert.\n",
    "* Verschiebe nun das Signal mit $t_0=1$. Aktiviere und deaktiviere die Spiegelung. Wie lässt sich dieses Verhalten erklären?\n",
    "* Ändere nun $T$. Wie ändert sich das Signal? Aktiviere nun die Spiegelung. Was passiert nun bei einer Änderung von $T$?\n",
    "* Teste abschließend verschiedene Kombinationen von $T$, $t_0$ und der Spiegelung und beobachte, welche Unterschiede die Reihenfolge der Ausführung der Operationen auf das Signal hat."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
106
    "___\n",
107
108
109
    "This notebook is provided as [Open Educational Resource](https://en.wikipedia.org/wiki/Open_educational_resources) (OER). Feel free to use the notebook for your own purposes. The code is licensed under the [MIT license](https://opensource.org/licenses/MIT). \n",
    "\n",
    "Please attribute the work as follows: \n",
110
    "*Christian Rohlfing, Übungsbeispiele zur Vorlesung \"Grundgebiete der Elektrotechnik 3 - Signale und Systeme\"*, gehalten von Jens-Rainer Ohm, 2020, Institut für Nachrichtentechnik, RWTH Aachen University."
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
130
   "version": "3.8.1"
131
132
133
134
135
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}