# Messtechnik HS2021 - Tutorial 3



```python
import numpy as np
import matplotlib.pyplot as plt 

# Fourier transformation 
def compute_fft(t,X):
    """ Manually compute the FT of a simple signal"""
    t = np.atleast_1d(t)
    X = np.atleast_1d(X)
    # Construct grid of points for spectrum
    N = np.size(t)
    grid = np.arange(N)
    dt = (max(t) - min(t))/(N - 1)
    # Frequency axis
    omega = 4*np.pi/N*grid
    # Shift zero-frequency component to center of spectrum
    omega = omega - 0.5*max(omega)
    # Scale by Nyquist criterion
    omega = omega/(2*dt)
    # Calculate Fourier transform operator
    FToperator = np.exp(-1j*np.outer(omega.T,t))
    # Transform signal
    Y = FToperator@X
    return omega,Y

# Inverse Fourier transformation 
def compute_ifft(t,omega,X):
    """ Manually compute the FT of a simple signal"""
    t = np.atleast_1d(t)
    omega = np.atleast_1d(omega)
    X = np.atleast_1d(X)
    # Calculate Fourier transform operator
    FToperator = np.exp(+1j*np.outer(t,omega.T))
    # Transform signal
    Y = FToperator@X
    return Y


```

# Aufgabe 1: Lineare Antwort
----------------------


Gegeben ist einen Input EM-Puls $ x(t) $ der durch einen Kabel zum Spektrometer geschickt wird. Am Ende des Kabels wird der Output Puls $ y(t) $ neu gemessen. 
Die Input und Output Pulsen sind in der Numpy-formattierte Datei `pulses.npz` gespeichert.  

1) Plotten Sie die gemessene Pulsen. Welche Unterschieden sehen Sie? 
2) Berechnen und vergleichen Sie die Pulsen im Frequenzbereich. Benutzen Sie dafür die vorgegebene Funktion `compute_fft`.
3) Berechnen Sie die Antwortsfunktion des Kabels. Benutzen Sie dafür die vorgegebene Funktion `compute_ifft`. 
4) Wie würden Sie die gewünschte Puls-Form im Spektrometer erreichen?   



```python
# Load external data file
data = np.load('pulses.npz')
# Extract the variables
t = data['t']
pulse_input = data['input']
pulse_output = data['output']
```

## Aufgabe 2: Faltung
--------------------

Berechnen Sie numerisch die Faltung einer Rechteckfunktion (box function) mit einer identischen Rechteckfunktion (a) sowie die Faltung einer Rechteckfunktion mit einer Gauss-Funktion (b):  

<center>

</center>

Benutzen Sie dazu die Numpy-Funktion ``convolve``. Definieren Sie alle Ausgangfunktionen zwischen $ t = -10 $ und $ t=10 $ mit 2001 Punkten. Konstruieren Sie eine Rechteckfunktion die eine Breite von 18.0 hat und eine Gauss-Funktion mit einer Standardabweichung $ \sigma = 1 $. Die Zeitachse der Faltung soll explizit berechnet werden.\\
\textit{Hinweis:} Um den Vektor $ t $ zu kreieren können Sie den Befehl ``t = np.linspace(-10,10,2001)`` verwenden. Für die Gaussfunktion brauchen sie die foglende Definition: 

\begin{equation}
f(x,\mu,\sigma) = \frac{1}{\sigma \sqrt{2\pi}}\exp\left(-\frac{(x - \mu)^2}{2\sigma^2} \right)
\end{equation}


```python

```

## Aufgabe 3: Fourier-Transformation
--------------------


Berechnen Sie numerisch die Fourier Transformierten der folgenden Funktionen:

(a) Rechteckfunktion mit der Breite $ \Delta t = 25.0 $, zentriert um $ t=0 $.

(b) Rechteckfunktion mit der Breite $ \Delta t = 5.0 $, zentriert um $ t = 0 $.

(c) Rechteckfunktion mit der Breite $ \Delta t = 25.0 $, zentriert um $ t=0 $, multipliziert mit einer harmonischen Funktion $ \cos(2\pi t) $, mit $ \nu = 1.0 $.

(d) Rechteckfunktion mit der Breite $ \Delta t = 5.0 $, zentriert um $ t=25 $.

*Hinweis:* Verwenden Sie für Ihre Berechnungen die folgende Zeitachse: 
``t = np.linspace(-50,50,4096); # Zeitachse der Fourier Transformation``

<center>

</center>


```python

```

d7699a21bd30b5611caf3f3d5ca977527695e173
ipynb
Jupyter Notebook
tutorial_3_linear_response/tutorial_3_blank.ipynb
JeschkeLab/messtechnikpy
0ba4ecd8858edad77c2a1dae1daa0af25df75c58
MIT
tutorial_3_linear_response/tutorial_3_blank.ipynb
JeschkeLab/messtechnikpy
0ba4ecd8858edad77c2a1dae1daa0af25df75c58
MIT
tutorial_3_linear_response/tutorial_3_blank.ipynb
JeschkeLab/messtechnikpy
0ba4ecd8858edad77c2a1dae1daa0af25df75c58
MIT
Qwen/Qwen-72B
1. YES
2. YES