GDET3 Zeitverschiebung-Dehnung GUI.ipynb 5.01 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "jupyter": {
     "source_hidden": true
    }
   },
   "outputs": [],
   "source": [
    "# Copyright 2019 Institut für Nachrichtentechnik, RWTH Aachen University\n",
    "%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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
    "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": [
    "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",
    "*Christian Rohlfing, Übungsbeispiele zur Vorlesung \"Grundgebiete der Elektrotechnik 3 - Signale und Systeme\"*, gehalten von Jens-Rainer Ohm, 2019, Institut für Nachrichtentechnik, RWTH Aachen University."
   ]
  }
 ],
 "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",
129
   "version": "3.8.1"
130
131
132
133
134
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}