Commit a87cce94 authored by Hafiz Emin Kosar's avatar Hafiz Emin Kosar
Browse files

- added Amplitudenfaktor to Elementarsignale and Demo Zeitverschiebung

parent 2162210b
%% Cell type:code id: tags:
``` python
# Copyright 2020 Institut für Nachrichtentechnik, RWTH Aachen University
%matplotlib widget
from ipywidgets import interact, interactive
import ipywidgets as widgets
import matplotlib.pyplot as plt
import numpy as np
import rwth_nb.plots.mpl_decorations as rwth_plots
from rwth_nb.misc.signals import *
```
%% Cell type:markdown id: tags:
<div>
<img src="figures/rwth_ient_logo@2x.png" style="float: right;height: 5em;">
</div>
# Elementarsignale
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.
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.
Im Folgenden werden einige Elementarsignale aufgeführt.
%% Cell type:markdown id: tags:
## Signale
### Gauß-Signal
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}$.
%% Cell type:code id: tags:
``` python
fig,ax = plt.subplots(1,1); ax.plot(t, gauss(t), 'rwth:blue');
ax.set_xlabel(r'$\rightarrow t$'); ax.set_ylabel(r'$\uparrow s(t)=\mathrm{e}^{-\pi t^2}$', bbox=rwth_plots.wbbox)
ax.axis('equal'); ax.set_xlim([-2.75, 2.75]); rwth_plots.grid(ax); rwth_plots.axis(ax);
```
%% Cell type:markdown id: tags:
### Sprungfunktion
Die Sprungfunktion wird beschrieben durch
$\epsilon(t)=\begin{cases}
0\quad\text{für}\ t<0 \\
1\quad\text{für}\ t\geq 0 \text{ .}
\end{cases}$
Ein Beispiel für eine Sprungfunktion ist der Spannungsverlauf an einem Ohm’schen Widerstand, der zur Zeit $t= 0$ an eine Gleichspannungsquelle geschaltet wird.
%% Cell type:code id: tags:
``` python
fig,ax = plt.subplots(1,1); ax.plot(t, unitstep(t), 'rwth:blue');
ax.set_xlabel(r'$\rightarrow t$'); ax.set_ylabel(r'$\uparrow s(t)=\epsilon(t)$', bbox=rwth_plots.wbbox)
ax.axis('equal'); ax.set_xlim([-2.25,2.25]); rwth_plots.grid(ax); rwth_plots.axis(ax);
```
%% Cell type:markdown id: tags:
### Rechteckimpuls
Der Rechteckimpuls wird definiert als
$\mathrm{rect}(t) = \begin{cases}
1\quad\text{für}\ |t| \leq 1/2\\
0\quad\text{für}\ |t| > 1/2\text{ .}
\end{cases}$
%% Cell type:code id: tags:
``` python
fig,ax = plt.subplots(1,1); ax.plot(t, rect(t), 'rwth:blue');
ax.set_xlabel(r'$\rightarrow t$'); ax.set_ylabel(r'$\uparrow s(t)=\mathrm{rect}(t)$', bbox=rwth_plots.wbbox)
ax.axis('equal'); ax.set_xlim([-2.25,2.25]); rwth_plots.grid(ax); rwth_plots.axis(ax);
```
%% Cell type:markdown id: tags:
### Dreieckimpuls
Der Dreieckimpuls wird definiert als
$\Lambda(t) = \begin{cases}
1-|t|\quad\text{für}\ |t|\leq 1\\
0\quad\text{für}\ |t| > 1\text{ .}
\end{cases}$
%% Cell type:code id: tags:
``` python
fig,ax = plt.subplots(1,1); ax.plot(t, tri(t), 'rwth:blue');
ax.set_xlabel(r'$\rightarrow t$'); ax.set_ylabel(r'$\uparrow s(t)=\Lambda(t)$', bbox=rwth_plots.wbbox)
ax.axis('equal'); ax.set_xlim([-2.25,2.25]); rwth_plots.grid(ax); rwth_plots.axis(ax);
```
%% Cell type:markdown id: tags:
### si-Funktion
Die si-Funktion ist definiert als $\displaystyle \mathrm{si}(t) = \frac{\sin(t)}{t}$
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)}$
%% Cell type:code id: tags:
``` python
fig,ax = plt.subplots(1,1); ax.plot(t, si(np.pi*t), 'rwth:blue');
ax.set_xlabel(r'$\rightarrow t$'); ax.set_ylabel(r'$\uparrow s(t)=\mathrm{si}(\pi t)$', bbox=rwth_plots.wbbox)
ax.set_xlim([-5.5,5.5]); rwth_plots.grid(ax); rwth_plots.axis(ax);
```
%% Cell type:markdown id: tags:
## Zeitverschiebung, -dehnung und -spiegelung
%% Cell type:markdown id: tags:
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
$\displaystyle s\left(\pm\frac{t-t_0}{T}\right)$
gewählt. Hierbei steht $t_0$ für die Verschiebung des Signals, $T$ für die Dehnung/Stauchung und $\pm$ beschreibt die Spiegelung.
### Zeitverschiebung
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.
#### Aufgabe
Verändere den Wert $t_0$. Wie ändert sich die geplottete Funktion? Was passiert für negative Werte von $t_0$?
%% Cell type:code id: tags:
``` python
s = lambda t: rect(t-1/2)
# Plot
fig,ax = plt.subplots(1,1); ax.plot(t, s(t), 'rwth:blue');
ax.set_xlabel(r'$\rightarrow t$'); ax.set_ylabel(r'$\uparrow s(t)$', bbox=rwth_plots.wbbox)
ax.axis('equal'); ax.set_xlim([-2.25,2.25]); rwth_plots.grid(ax); rwth_plots.axis(ax);
```
%% Cell type:markdown id: tags:
### Dehnung/Stauchung
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 \cdot 1=2$.
#### Aufgabe
Ändere den Wert für $T$. Was passiert mit der dargestellten Funktion? Was passiert für Werte von $|T| < 1$?
Ersetze den Rechteckimpuls durch einen Dreiecksimpuls $\Lambda(t) = \begin{cases}
1-|t|\quad\text{für}\ |t|\leq 1\\
0\quad\text{für}\ |t| > 1\text{ .}
\end{cases}$.
Ersetze hierfür rect durch tri. Wie breit wird die dargestellte Funktion für $T=2$?
%% Cell type:code id: tags:
``` python
s = lambda t: rect(t/2)
# Plot
fig,ax = plt.subplots(1,1); ax.plot(t, s(t), 'rwth:blue');
ax.set_xlabel(r'$\rightarrow t$'); ax.set_ylabel(r'$\uparrow s(t)$', bbox=rwth_plots.wbbox)
ax.axis('equal'); ax.set_xlim([-2.25,2.25]); rwth_plots.grid(ax); rwth_plots.axis(ax);
```
%% Cell type:markdown id: tags:
### Zeitspiegelung
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.
%% Cell type:code id: tags:
``` python
s = lambda t: rect(t-0.5)*t
# Plot
fig,ax = plt.subplots(1,1); ax.plot(t, s(t), 'rwth:blue');
ax.set_xlabel(r'$\rightarrow t$'); ax.set_ylabel(r'$\uparrow s(t)$', bbox=rwth_plots.wbbox)
ax.axis('equal'); ax.set_xlim([-2.25,2.25]); rwth_plots.grid(ax); rwth_plots.axis(ax);
```
%% Cell type:markdown id: tags:
Betrachte nun $s(-t)$ in der folgenden Abbildung. Das negative Vorzeichen bewirkt eine Spiegelung des Signals an der y-Achse.
%% Cell type:code id: tags:
``` python
# Plot
fig,ax = plt.subplots(1,1); ax.plot(t, s(-t), 'rwth:blue');
ax.set_xlabel(r'$\rightarrow t$'); ax.set_ylabel(r'$\uparrow s(-t)$', bbox=rwth_plots.wbbox)
ax.axis('equal'); ax.set_xlim([-2.25,2.25]); rwth_plots.grid(ax); rwth_plots.axis(ax);
```
%% Cell type:markdown id: tags:
Zur Verdeutlichung von Zeitspiegelung, -dehnung und -spiegelung ist zusätzlich eine [interaktive Demo](GDET3%20Zeitverschiebung-Dehnung%20GUI.ipynb) verfügbar.
## Amplitudenfaktor
Bisher wurde bei allen Signalen $a \cdot s(\frac{t-t_0}{T})$ angenommen, dass der Amplitudenfaktor $a = 1$ beträgt.
Durch Ändern von $a$ kann eine Dehnung/Stauchung der Ordinate bewirkt werden.
%% Cell type:code id: tags:
``` python
a = 3/2
# Plot
fig,ax = plt.subplots(1,1); ax.plot(t, a * rect(t), 'rwth:blue');
ax.set_xlabel(r'$\rightarrow t$'); ax.set_ylabel(r'$\uparrow a \cdot s(t)$', bbox=rwth_plots.wbbox)
ax.axis('equal'); ax.set_xlim([-2.25,2.25]); rwth_plots.grid(ax); rwth_plots.axis(ax);
```
%% Cell type:markdown id: tags:
Zur Verdeutlichung des Amplitudenfaktors sowie der Zeitverschiebung, -dehnung und -spiegelung ist zusätzlich eine [interaktive Demo](GDET3%20Zeitverschiebung-Dehnung%20GUI.ipynb) verfügbar.
%% Cell type:markdown id: tags:
---
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).
Please attribute the work as follows:
*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.
......
%% Cell type:code id: tags:
``` python
# Copyright 2020 Institut für Nachrichtentechnik, RWTH Aachen University
%matplotlib widget
from ipywidgets import interact, interactive
import ipywidgets as widgets
import matplotlib.pyplot as plt
import numpy as np
import rwth_nb.plots.mpl_decorations as rwth_plots
from rwth_nb.misc.signals import *
```
%% Cell type:markdown id: tags:
<div>
<img src="figures/rwth_ient_logo@2x.png" style="float: right;height: 5em;">
</div>
# Demo Zeitverschiebung & Zeitdehnung
Die Demo wird im Menü gestartet mit Run <span class="fa-chevron-right fa"></span> Run All Cells.
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
$\displaystyle s\left(\pm\frac{t-t_0}{T}\right)$
gewählt. Hierbei steht $t_0$ für die Verschiebung des Signals, $T$ für die Dehnung/Stauchung und $\pm$ beschreibt die Spiegelung.
$\displaystyle a \cdot s\left(\pm\frac{t-t_0}{T}\right)$
gewählt. Hierbei steht $a$ für den Amplitudenfaktor, $t_0$ für die Verschiebung des Signals, $T$ für die Dehnung/Stauchung und $\pm$ beschreibt die Spiegelung.
Das Ausgangssignal ist
$s(t) = t \cdot \mathrm{rect}\left(t-\frac{1}{2}\right)$.
%% Cell type:code id: tags:
``` python
s = lambda t: t*rect(t - 0.5)
```
%% Cell type:markdown id: tags:
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.
Mit den Schiebereglern können unterschiedliche Werte für den Amplitudenfaktor $a$, 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 id: tags:
``` python
# Plot & demo
fig, ax = plt.subplots(1, 1, figsize=(8, 4))
@widgets.interact(T=widgets.FloatSlider(min=-4, max=4, value=1, step=.1, description=r'Dehnung $T$', style=rwth_plots.wdgtl_style),
@widgets.interact(a=widgets.FloatSlider(min=-3, max=3, value=1, step=.1, description=r'Amplitudenfaktor $a$', style=rwth_plots.wdgtl_style),
T=widgets.FloatSlider(min=-4, max=4, value=1, step=.1, description=r'Dehnung $T$', style=rwth_plots.wdgtl_style),
t0=widgets.FloatSlider(min=-2, max=2, value=0, step=.1, description=r'Verschiebung $t_0$', style=rwth_plots.wdgtl_style),
reflection=widgets.Checkbox(value=False, description='Spiegelung', style=rwth_plots.wdgtl_style))
def update_signals(T, t0, reflection):
def update_signals(a, T, t0, reflection):
T = 0.1 if T==0 else T
T = -T if reflection else T
s_plot = s((t-t0)/T)
s_plot = a * s((t-t0)/T)
if not ax.lines: # plot s(t) and g(t)
ax.plot(t, s_plot, 'rwth:blue');
ax.set_xlabel(r'$\rightarrow t$'); ax.set_ylabel(r'$\uparrow s\left(\pm\frac{t-t_0}{T}\right)$')
ax.axis('equal'); ax.set_xlim([-4.75, 4.75]); rwth_plots.axis(ax); rwth_plots.grid(ax); ax.minorticks_on()
ax.set_xlabel(r'$\rightarrow t$'); ax.set_ylabel(r'$\uparrow a \cdot s\left(\pm\frac{t-t_0}{T}\right)$')
ax.axis('equal'); ax.set_xlim([-6.25, 6.25]); rwth_plots.axis(ax); rwth_plots.grid(ax); ax.minorticks_on()
else: # update lines
ax.lines[0].set_ydata(s_plot);
rwth_plots.update_ylim(ax, s_plot, dy=.19, ymax=10e5)
```
%% Cell type:markdown id: tags:
### Aufgaben
* Verändere den Wert für $a$. Wie verändert sich das Signal?
* Verändere den Wert für $t_0$. In welche Richtung bewegt sich das Signal?
* Verändere nun den Dehnungsfaktor $T$. Was passiert für $T<0$? Was passiert für Werte $T>0$?
* 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.
* Aktiviere und deaktivere die Spiegelung und beobachte, was passiert.
* Verschiebe nun das Signal mit $t_0=1$. Aktiviere und deaktiviere die Spiegelung. Wie lässt sich dieses Verhalten erklären?
* Ändere nun $T$. Wie ändert sich das Signal? Aktiviere nun die Spiegelung. Was passiert nun bei einer Änderung von $T$?
* 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 id: tags:
___
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).
Please attribute the work as follows:
*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.
......
Supports Markdown
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