GDET3 Elementarsignale.ipynb 10.9 KB
Newer Older
1
2
3
4
{
 "cells": [
  {
   "cell_type": "code",
5
   "execution_count": null,
Christian Rohlfing's avatar
Christian Rohlfing committed
6
   "metadata": {
7
8
9
10
    "hide_input": false,
    "jupyter": {
     "source_hidden": true
    }
Christian Rohlfing's avatar
Christian Rohlfing committed
11
   },
12
13
   "outputs": [],
   "source": [
14
    "# Copyright 2020 Institut für Nachrichtentechnik, RWTH Aachen University\n",
15
    "%matplotlib widget\n",
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
    "\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",
    "# Elementarsignale\n",
Iris Heisterklaus's avatar
Iris Heisterklaus committed
33
    "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",
34
    "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",
35
    "\n",
Christian Rohlfing's avatar
Christian Rohlfing committed
36
    "Im Folgenden werden einige Elementarsignale aufgeführt."
37
38
39
40
41
42
43
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Signale\n",
44
    "       \n",
45
46
47
    "\n",
    "### Gauß-Signal\n",
    "\n",
48
    "Ein Beispiel für ein Elementarsignal, das durch einen algebraischen Ausdruck ausgedrückt wird, ist das Gaußsignal $\\displaystyle s(t) = \\mathrm{e}^{\\pi t^2}$."
49
50
51
52
   ]
  },
  {
   "cell_type": "code",
53
   "execution_count": null,
54
   "metadata": {},
55
   "outputs": [],
56
   "source": [
57
    "fig,ax = plt.subplots(1,1); ax.plot(t, gauss(t), 'rwth');\n",
58
59
60
61
62
63
64
65
66
    "ax.set_xlabel(r'$\\rightarrow t$'); ax.set_ylabel(r'$\\uparrow s(t)=\\mathrm{e}^{-\\pi t^2}$', bbox=ient_wbbox)\n",
    "ax.axis('equal'); ax.set_xlim([-2.75, 2.75]); ient_grid(ax); ient_axis(ax);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Sprungfunktion\n",
67
    "Die Sprungfunktion wird beschrieben durch\n",
68
69
70
    "$\\epsilon(t)=\\begin{cases}\n",
    "    0\\quad\\text{für}\\ t<0 \\\\\n",
    "    1\\quad\\text{für}\\ t\\geq 0 \\text{ .}\n",
71
72
73
    "\\end{cases}$\n",
    "\n",
    "Ein Beispiel für eine Sprungfunktion ist der Spannungsverlauf an einem Ohm’schen Widerstand, der zur Zeit $t= 0$ an eine Gleichspannungsquelle geschaltet wird. "
74
75
76
77
   ]
  },
  {
   "cell_type": "code",
78
   "execution_count": null,
79
   "metadata": {},
80
   "outputs": [],
81
   "source": [
82
    "fig,ax = plt.subplots(1,1); ax.plot(t, unitstep(t), 'rwth'); \n",
83
84
85
86
87
88
89
90
91
    "ax.set_xlabel(r'$\\rightarrow t$'); ax.set_ylabel(r'$\\uparrow s(t)=\\epsilon(t)$', bbox=ient_wbbox)\n",
    "ax.axis('equal'); ax.set_xlim([-2.25,2.25]); ient_grid(ax); ient_axis(ax);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Rechteckimpuls\n",
92
    "Der Rechteckimpuls wird definiert als \n",
93
94
95
96
97
98
99
100
    "$\\mathrm{rect}(t) = \\begin{cases}\n",
    "    1\\quad\\text{für}\\ |t| \\leq 1/2\\\\\n",
    "    0\\quad\\text{für}\\ |t| > 1/2\\text{ .}\n",
    "\\end{cases}$"
   ]
  },
  {
   "cell_type": "code",
101
   "execution_count": null,
102
   "metadata": {},
103
   "outputs": [],
104
   "source": [
105
    "fig,ax = plt.subplots(1,1); ax.plot(t, rect(t), 'rwth');\n",
106
107
108
109
110
111
112
113
114
    "ax.set_xlabel(r'$\\rightarrow t$'); ax.set_ylabel(r'$\\uparrow s(t)=\\mathrm{rect}(t)$', bbox=ient_wbbox)\n",
    "ax.axis('equal'); ax.set_xlim([-2.25,2.25]); ient_grid(ax); ient_axis(ax);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Dreieckimpuls\n",
115
    "Der Dreieckimpuls wird definiert als\n",
116
117
118
119
120
121
122
123
    "$\\Lambda(t) = \\begin{cases}\n",
    "  1-|t|\\quad\\text{für}\\ |t|\\leq 1\\\\\n",
    "  0\\quad\\text{für}\\ |t| > 1\\text{ .}\n",
    "\\end{cases}$"
   ]
  },
  {
   "cell_type": "code",
124
   "execution_count": null,
125
   "metadata": {},
126
   "outputs": [],
127
   "source": [
128
    "fig,ax = plt.subplots(1,1); ax.plot(t, tri(t), 'rwth');\n",
129
130
131
132
133
134
135
136
    "ax.set_xlabel(r'$\\rightarrow t$'); ax.set_ylabel(r'$\\uparrow s(t)=\\Lambda(t)$', bbox=ient_wbbox)\n",
    "ax.axis('equal'); ax.set_xlim([-2.25,2.25]); ient_grid(ax); ient_axis(ax);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
137
138
    "### si-Funktion\n",
    "Die si-Funktion ist definiert als $\\displaystyle \\mathrm{si}(t) = \\frac{\\sin(t)}{t}$\n",
139
140
    "\n",
    "Die si-Funktion ist auch als Spaltfunktion bekannt, da in optischen Systemen und Antennensystemen ein Spalt als räumliche rect-Funktion beschrieben werden kann (Bracewell, 1986). Sie hat außerdem die besondere Eigenschaft, sich bei Faltung mit sich selbst zu reproduzieren: $\\mathrm{si*\\pi}(t)=\\mathrm{si*\\pi}(t)*\\mathrm{si*\\pi}(t)$."
141
142
143
144
   ]
  },
  {
   "cell_type": "code",
145
   "execution_count": null,
146
   "metadata": {},
147
   "outputs": [],
148
   "source": [
149
    "fig,ax = plt.subplots(1,1); ax.plot(t, si(np.pi*t), 'rwth');\n",
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
    "ax.set_xlabel(r'$\\rightarrow t$'); ax.set_ylabel(r'$\\uparrow s(t)=\\mathrm{si}(\\pi t)$', bbox=ient_wbbox)\n",
    "ax.set_xlim([-5.5,5.5]); ient_grid(ax); ient_axis(ax);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Zeitverschiebung, -dehnung und -spiegelung"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
165
166
167
168
169
170
171
172
173
    "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",
    "### Zeitverschiebung\n",
    "Als Beispiel wird ein verschobener Rechteckimpuls $s(t) = \\mathrm{rect}\\left(t-\\frac{1}{2}\\right)$ betrachtet. Die Funktion $\\mathrm{rect}(t)$ hat die Breite 1 und ist um $0$ zentriert, der um $t_0=\\frac{1}{2}$ verschobene Rechteckimpuls ist in Abbildung 6 dargestellt. \n",
    "\n",
    "#### Aufgabe\n",
    "Verändere den Wert $t_0$. Wie ändert sich die geplottete Funktion? Was passiert für negative Werte von $t_0$?"
174
175
176
177
   ]
  },
  {
   "cell_type": "code",
178
   "execution_count": null,
179
   "metadata": {},
180
   "outputs": [],
181
182
183
184
   "source": [
    "s = lambda t: rect(t-1/2)\n",
    "\n",
    "# Plot\n",
185
    "fig,ax = plt.subplots(1,1); ax.plot(t, s(t), 'rwth');\n",
186
187
188
189
190
191
192
193
    "ax.set_xlabel(r'$\\rightarrow t$'); ax.set_ylabel(r'$\\uparrow s(t)$', bbox=ient_wbbox)\n",
    "ax.axis('equal'); ax.set_xlim([-2.25,2.25]); ient_grid(ax); ient_axis(ax);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
194
195
196
197
198
199
200
201
202
203
204
205
    "### Dehnung/Stauchung\n",
    "Als nächstes wird die Dehnung eines Rechteckimpulses betrachet. Dies geschieht über den Faktor $T$. Die folgende Abbildung zeigt den mit $T=2$ gedehnten Rechteckimpuls $s(t) = \\mathrm{rect}\\left(\\frac{t}{2}\\right)$. Der normale Rechteckimpuls hat die Breite 1, der hier dargestellte erhält entsprechend die Breite $T*1=2$. \n",
    "\n",
    "#### Aufgabe\n",
    "Ändere den Wert für $T$. Was passiert mit der dargestellten Funktion? Was passiert für Werte von $|T| < 1$?\n",
    "\n",
    "Ersetze den Rechteckimpuls durch einen Dreiecksimpuls $\\Lambda(t) = \\begin{cases}\n",
    "  1-|t|\\quad\\text{für}\\ |t|\\leq 1\\\\\n",
    "  0\\quad\\text{für}\\ |t| > 1\\text{ .}\n",
    "\\end{cases}$. \n",
    "\n",
    "Ersetze hierfür rect durch tri. Wie breit wird die dargestellte Funktion für $T=2$?"
206
207
208
209
   ]
  },
  {
   "cell_type": "code",
210
   "execution_count": null,
211
   "metadata": {},
212
   "outputs": [],
213
214
215
216
   "source": [
    "s = lambda t: rect(t/2)\n",
    "\n",
    "# Plot\n",
217
    "fig,ax = plt.subplots(1,1); ax.plot(t, s(t), 'rwth');\n",
218
219
220
221
222
223
224
225
    "ax.set_xlabel(r'$\\rightarrow t$'); ax.set_ylabel(r'$\\uparrow s(t)$', bbox=ient_wbbox)\n",
    "ax.axis('equal'); ax.set_xlim([-2.25,2.25]); ient_grid(ax); ient_axis(ax);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
226
    "### Zeitspiegelung\n",
227
    "Zur Verdeutlichung der Zeitspiegelung wird das in der folgenden Abbildung dargestellte Signal $s(t) = t \\cdot \\mathrm{rect}\\left(t-\\frac{1}{2}\\right)$ betrachtet."
228
229
230
231
   ]
  },
  {
   "cell_type": "code",
232
   "execution_count": null,
233
   "metadata": {},
234
   "outputs": [],
235
236
237
238
   "source": [
    "s = lambda t: rect(t-0.5)*t\n",
    "\n",
    "# Plot\n",
239
    "fig,ax = plt.subplots(1,1); ax.plot(t, s(t), 'rwth');\n",
240
241
242
243
244
245
246
247
    "ax.set_xlabel(r'$\\rightarrow t$'); ax.set_ylabel(r'$\\uparrow s(t)$', bbox=ient_wbbox)\n",
    "ax.axis('equal'); ax.set_xlim([-2.25,2.25]); ient_grid(ax); ient_axis(ax);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
248
    "Betrachte nun $s(-t)$ in der folgenden Abbildung. Das negative Vorzeichen bewirkt eine Spiegelung des Signals an der y-Achse. "
249
250
251
252
   ]
  },
  {
   "cell_type": "code",
253
   "execution_count": null,
254
   "metadata": {},
255
   "outputs": [],
256
257
   "source": [
    "# Plot\n",
258
    "fig,ax = plt.subplots(1,1); ax.plot(t, s(-t), 'rwth');\n",
259
260
261
262
263
264
265
266
    "ax.set_xlabel(r'$\\rightarrow t$'); ax.set_ylabel(r'$\\uparrow s(-t)$', bbox=ient_wbbox)\n",
    "ax.axis('equal'); ax.set_xlim([-2.25,2.25]); ient_grid(ax); ient_axis(ax);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
267
    "Zur Verdeutlichung von Zeitspiegelung, -dehnung und -spiegelung ist zusätzlich eine [interaktive Demo](GDET3%20Zeitverschiebung-Dehnung%20GUI.ipynb) verfügbar."
268
269
270
271
   ]
  },
  {
   "cell_type": "markdown",
272
273
   "metadata": {},
   "source": [
274
    "---\n",
275
276
277
    "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",
278
    "*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."
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
   ]
  }
 ],
 "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",
298
   "version": "3.8.1"
299
300
301
  }
 },
 "nbformat": 4,
302
 "nbformat_minor": 4
303
}