# Introduction
## MATLAB vs. Python
| MATLAB | Python |
|:--------------------------------------------------------------:|:----------------------------------------------------------------------------------:|
| Commercial | Open Source |
| New functions via MATLAB Toolkits
(no package manager) | Installation of new modules with
package manager (conda or pip) |
| Mainly procedual programming
(Objects exists but are a hassle) | Object oriented |
| Mathematical Programming Language | Gernaeral Purpose Language with
many mathematical modules |
| No Namespaces for Core-Functions | Proper Namespaces (e.g. `plt.plot` instead of `plot`) |
| GUI included | Various GUIs available.
We recommend [Pycharm](https://www.jetbrains.com/pycharm/) |
| Download: [Mathworks](https://de.mathworks.com/downloads/) | Download: [Anaconda](https://www.anaconda.com/download/) |
### Numpy for MATLAB users
[https://docs.scipy.org/doc/numpy-1.15.0/user/numpy-for-matlab-users.html](https://docs.scipy.org/doc/numpy-1.15.0/user/numpy-for-matlab-users.html)
## Common Libraries
* Numpy (Vector and Matrix operations, Numeric computing)
* Matplotlib (Plotting)
* Pandas (Table operations)
* Scikit-Learn (Machine Learning)
* Tensorflow / PyTorch (Neural Networks)
* SymPy (Symbolic computations)
* Seaborn (Advanced Plotting)
* ...
## Quickstart
```python
import numpy as np
import matplotlib.pyplot as plt
U_0 = 3 # V
u_peak = 2 # V
f_0 = 50 # 1/s
# Timevector in s (Sequence of numbers)
t = np.arange(start=0, stop=0.04, step=0.001)
u = U_0 + u_peak * np.sin(2 * np.pi * f_0 * t)
plt.plot(t, u, 'o--')
plt.xlabel('Zeit $t$ / s')
plt.ylabel('Spannung $u(t)$ / V')
plt.grid(True)
```
![Quickstart.png](../_static/Quickstart.png)