1257 lines
232 KiB
Plaintext
1257 lines
232 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "7b5ee112",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "slide"
|
|
},
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"# DSP Basics"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "f8999dbc",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "fragment"
|
|
},
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"\"**D**igital **S**ignal **P**rocessing\""
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "aada2375",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
},
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"We can think of signals as _functions_ over time, for example \"what voltage is present at the antenna at time $t$?"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "2ca73e1f",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"We can represent (continuous) time only in _discrete_ steps:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "a71d9181",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "fragment"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"[0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09]"
|
|
]
|
|
},
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"sampling_rate = 100 # Hz\n",
|
|
"sample_distance = 1 / sampling_rate\n",
|
|
"\n",
|
|
"# 100 samples -> 1 second\n",
|
|
"T = [i * sample_distance for i in range(100)]\n",
|
|
"\n",
|
|
"T[:10]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "27cd6d08",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"We can now represent a signal as the values (so-called *samples*) that it has at the respective point in time:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "ee0efab9",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "skip"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"from math import pi, sin, cos\n",
|
|
"import matplotlib.pyplot as plt"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"id": "9185d60d",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"f = 3 # Hz, frequency\n",
|
|
"x = [sin(2 * pi * f * t) for t in T] # signal\n",
|
|
"plt.scatter(T, x);"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "f4e9af21",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "skip"
|
|
}
|
|
},
|
|
"source": [
|
|
"If the frequency gets too high, we run into a problem:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"id": "37e7a30e",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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paWlVnZ2NreJN1NL13rJkiVWRESE9corr1hlZWX+7cyZM+01hZDR0rX+R9xF1XwtXevDhw9b3bp1s2bOnGnt27fPevPNN62YmBjrmWeeaa8phIyWrnV2drbVrVs36w9/+IN14MAB691337X69u1r3Xvvve01hZBx5swZ69NPP7U+/fRTS5K1cuVK69NPP7W+/vpry7Isa/78+dakSZP8/c/fJv7YY49ZpaWlVm5uLreJdwTPPfec9dOf/tSKiIiwhg0bZn388cf+92699VZr8uTJAf3/+Mc/Wj/72c+siIgI6+c//7n11ltvtXHFoasla33NNddYki7YsrOz277wENTSv9d/j4DTMi1d648++shyu92W3W63+vTpYz377LPWuXPn2rjq0NSSta6rq7OefPJJq2/fvlZkZKSVkJBgPfTQQ9bf/va3ti88xLz33nuN/v/3/PpOnjzZuvXWWy/YZ8iQIVZERITVp08f66WXXrqsNdksi/NuAADALFyDAwAAjEPAAQAAxiHgAAAA4xBwAACAcQg4AADAOAQcAABgHAIOAAAwDgEHAAAYh4ADAACMQ8ABAADGIeAAAADjEHAAAIBx/j9qhKUmIQmcxgAAAABJRU5ErkJggg==",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"x = [sin(2 * pi * 50 * t) for t in T] # f = 50 Hz?\n",
|
|
"plt.ylim(-1.1, 1.1)\n",
|
|
"plt.scatter(T, x);"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "2b9a74a0",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "skip"
|
|
}
|
|
},
|
|
"source": [
|
|
"For $f = 50\\text{Hz}$, we only hit the zeroes!"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "0bc9e6e2",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"```{prf:theorem} Nyquist-Shannon sampling theorem\n",
|
|
"With a sampling rate of $f_s$, we can uniquely represent $x$ with discrete samples only if it contains no frequency larger than $f_s / 2$.\n",
|
|
"```"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "1d444245",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "fragment"
|
|
}
|
|
},
|
|
"source": [
|
|
"So we have to ensure that our sampling rate is at least twice as high as the highest frequency in the signal."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "cde3df85",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "slide"
|
|
}
|
|
},
|
|
"source": [
|
|
"## Excursion: Complex Numbers"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "2c93c683",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"\n",
|
|
"```{figure} img/complex.svg\n",
|
|
"---\n",
|
|
"name: fig:complex.en\n",
|
|
"height: 400px\n",
|
|
"```"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "61325c1c",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "skip"
|
|
}
|
|
},
|
|
"source": [
|
|
"We can think of complex numbers as vectors $\\begin{pmatrix}x \\\\ y\\end{pmatrix}$, which we write as $x + yi$.\n",
|
|
"\n",
|
|
"Intuitively: \"$x$ to the right plus $y$ upwards\".\n",
|
|
"\n",
|
|
"Addition works as expected:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "5826f800",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"$$\n",
|
|
"(a + bi) + (c + di) = (a + c) + (b + d)i\n",
|
|
"$$"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "0b64997b",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "skip"
|
|
}
|
|
},
|
|
"source": [
|
|
"For multiplication, it is easier to use _polar coordinates_.\n",
|
|
"\n",
|
|
"$r = |x + yi| = \\sqrt{x^2 + y^2}$ is the magnitude of the vector, and $\\phi = \\texttt{atan2}(y, x)$ is the angle to the real axis."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "30a87e63",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"$$\n",
|
|
"(r, \\phi) \\cdot (s, \\psi) = (r \\cdot s, \\phi + \\psi)\n",
|
|
"$$"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "93c066b9",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "slide"
|
|
}
|
|
},
|
|
"source": [
|
|
"## Signal Analysis"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "bb326e90",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "fragment"
|
|
}
|
|
},
|
|
"source": [
|
|
"From which frequencies is the following signal constructed?"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"id": "63e0f4b8",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
},
|
|
"tags": [
|
|
"remove-cell"
|
|
]
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Cell-Tag \"remove-cell\" -> wird im Buch nicht angezeigt\n",
|
|
"import json\n",
|
|
"x = [sin(2 * pi * 2 * t) # 2 Hz\n",
|
|
" + sin(2 * pi * 3 * t) # 3 Hz\n",
|
|
" + sin(2 * pi * 7 * t) # 7 Hz\n",
|
|
" for t in T]\n",
|
|
"\n",
|
|
"with open(\"mystery_signal.json\", \"w\") as f:\n",
|
|
" json.dump(list(x), f)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"id": "19850623",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiIAAAGdCAYAAAAvwBgXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAu30lEQVR4nO3df3BU5Rno8WdBk2CbrPJzA8YfhFEbsaJYMIAVHVLRDqUzd9TRyoXeFi1C51Y6rVBaU2oVUaY6g9S21EpnsNIfV6UqNy0C1oGG8UrIjDSiTQClwFKJdjeiBMi+94/0hGSzv87m/Hjfc76fmfyRZcOenOzZ87zv87zPG1FKKQEAAPDBIL8PAAAAhBeBCAAA8A2BCAAA8A2BCAAA8A2BCAAA8A2BCAAA8A2BCAAA8A2BCAAA8M1Zfh9ALqlUSg4fPizl5eUSiUT8PhwAAFAApZR0dHTI6NGjZdCg3HMeWgcihw8flqqqKr8PAwAAFOHgwYNy/vnn53yO1oFIeXm5iHT/IhUVFT4fDQAAKEQymZSqqqqe+3guWgciVjqmoqKCQAQAAMMUUlZBsSoAAPANgQgAAPANgQgAAPANgQgAAPANgQgAAPANgQgAAPANgQgAAPANgQgAAPCN1g3NTNSVUvLG/g/l3x0nZGR5mUy6eKgMHsQ+OQAAZEIg4qCGPUdk+UstciRxouexymiZ1M+qkZnjK308MgAA9ERqxiENe47IgvVNfYIQEZF44oQsWN8kDXuO+HRkAADoi0DEAV0pJctfahGV4d+sx5a/1CJdqUzPAAAgvAhEHPDG/g/7zYT0pkTkSOKEvLH/Q+8OCgAAA1AjMgBWYer/LTDt8u+O7MEKAABhRCBSpEyFqfmMLC9z8YgAADAPgUgRrMLUQis+IiISi3Yv5QUAAGdQI2JTrsLUTKwOIvWzaugnAgBAGmZEbMpXmJouRh8RAACyIhCxqdCC0/9Ze6HcPL6SzqoAAORAIGJToQWnN4+vlNrqYdKVUtLY1k7LdwAAMiAQsWnSxUOlMlom8cSJjHUivQtTafkOAEBuFKvaNHhQROpn1YjImUJUS+/C1M0tcVq+AwCQB4FIEWaOr5Sn7rpaYtG+aZpYtEyeuutqqauJ0fIdAIACkJop0szxlVJXE5M39n/Yr/6jsa294JbvtdXDvDtoAHCA1VWa2jc4gUBkAAYPimQMJApdWUPLdwCmyVT7FqsolTsmXSAXDf8MgQlsczUQWbFihTz//POyd+9eGTJkiEyZMkVWrlwpl156qZsv67tCV9bQ8h2ASbJ1lY4nO+XxV//Z8z1F+bDD1RqRv/3tb7Jw4ULZuXOnbN68WU6dOiVf+tKX5Pjx426+rO+slTXZxgMR6b5QafkOwBR2ukpTlA87XJ0RaWho6PP9unXrZOTIkbJr1y754he/6OZL+8paWbNgfZNERPpcuLR8B2AiO12llXR/1i1/qUXqamJ81iEnT1fNJBIJEREZOjTzTEBnZ6ckk8k+X6bKt7KGKUsAJrFb09a7KB/IxbNi1VQqJd/5zndk6tSpMn78+IzPWbFihSxfvtyrQ3JdrpU1AGCSYmvaKMpHPp4FIgsXLpQ9e/bI9u3bsz5n6dKlsnjx4p7vk8mkVFVVeXF4rsm2sgYATJKvq3Q2FOUjH09SM4sWLZKXX35Ztm3bJueff37W55WWlkpFRUWfLwCA/3J1lc6EonwUytVARCklixYtkhdeeEG2bt0qF198sZsvBwBwUbbat3QU5cMOV1MzCxculN/97neyceNGKS8vl3g8LiIi0WhUhgwZ4uZLAwBckF77duDYJ/LcG+9LPNmrwRl9RGBDRCnl2oYnkUjmSPiZZ56RefPm5f35ZDIp0WhUEomE72kaWhoDQGZ8PiKdnfu3qzMiLsY4nsrU0pjOgQDQjaJ8DAS77+ZhtTROb+RD50AAAAaOQCSHXC2NrceWv9QiXalgzPwAAOA1ApEc8rU0pnMggKDrSilpbGuXjc2HpLGtnYEXHOdZQzMTFdoR0G7nQAq7AJiA+jh4gUAkh0I7AtrpHMiFDcAEVn1c+vyHVR/HnllwCqmZHKyWxtnmKux2DqTwFYAJqI+DlwhEcsjV0thu50AubACmcKI+jtoSFIrUTB5WS+P0dIrdzoF2LmzW4wPw00Dr40hBww4CkQKktzQupsDUrcJXAHDaQOrjqC2BXQQiBRpo50A3Cl8BwA1WfVw8cSJjOjki3bPC6fVx+VLQEelOQdfVxFgpiB7UiHjE6cJXt6Xnd0+eTpHvBUKi2Po4ei+hGMyIeMS6sBesb5KISJ8Rg25bZmfK7w6KiPSOPcj3AsFWTH0cKWgUg0DEQ04VvropW343fQKEfC8QfHbr40hBoxgEIh5zovDVLbnyu+nI9wLhYKc+rtjaEoQbNSI+sC7s2RPGSG31MG1u4vnyu+nI9wLozcneSwgPAhH0KDZvS74XgMVKQceifdMvsWgZqVxkRGoGPYrN25LvBdCbzilo6IdABD3y5XfTke8FkM1Aey8hPEjNoEeu/G468r0AACcQiKCPbPnd9FiDfC8AwAmkZtBPpvzuxAvPk13vfUS+FwDgKAIRSFdKZSwqS8/vku8FADiNQCTk2K4bAOAnakRCzGrnnt7EzGrf3rDniE9HBgAICwKRkMq3XbdId/t2dtkFALiJQCSknNiuuyulpLGtXTY2H5LGtnaCFgCAbdSIhNRAt+umtgQA4ARmREJqINt1U1sCAHAKgYgG/EhxWO3cs3UCiUj3DEd6+3ZqSwAATiI14zO/UhxWO/cF65skItInsMjVvt1ObQl9RwDzZOsrBLiFQMRHVoojfe7ASnG43ULdaueeHgjFcgRCA60tAaAvar/gBwIRn+RLcUSkO8VRVxNzdTRid7vugdSWANCX3wMjhBc1Ij5xYvmsU6x27rMnjJHa6mE5A59ia0sA6IvaL/iJQMQnpqY4rNoSEekXjOSqLQGgL50GRggfAhGfmJzisGpLYtG+xxaLljF9CxjI1IERgoEakSzcrhy3UhzxxImM06ER6b6x65risFtbAkBfJg+MYD4CkQy8qBwvdvmsTqzaEgBmM31gBLORmknjZddQUhwAdEDtF/wUUUppWwadTCYlGo1KIpGQiooK11+vK6Vk2sqtWYu2rFHB9vtvdPSCpIEQAB3QRwROsXP/JjXTi19dQ71OcRD4AMiE2i/4gUCklzBUjjPiAZCLWwMjBkDIhkCkl6BXjtM5EYAfGAAhF4pVewly11A6JwLwg5cLAGAmApFeglw5TudEAF5jAIRCEIikCeqS2jDUvwDQCwMgFIIakQyCWDke9PoXAPphAIRCEIhkEbSuoXROBOA1BkAoBKmZkAhy/QsAPQV5AQCcQyASIkGtfwGgJwZAKAQt3kOIxkIAvEQfkfCxc/8mEAFgG8Es7OI9Ey7sNQPANYxuUYygLQCAc6gR0VRXSkljW7tsbD4kjW3tNPyBFuiSCcBpzIhoiBEndJSvS2ZEurtk1tXEmHIHUDBmRDRj8oiTWZxgK7RL5uOb3+XvD6BgzIhoxOQRJ7M4wVdo98snt7XKk9ta+fsDKAgzIhoxdV8Gk2dxUDi73S/5+wMoBIGIRtzYl8HtdAm7a4ZHvi6Z6cL29yc1CRSH1IxGnN6XwYt0iZ1ZHJbumc3qkrlgfZNERDIGn+nC8vcnNQkUjxkRjTi5L4NX6RJ21wyXbNsE5BPkv3+2a+1I4oR8a32TPPjSP5ghAXIgENGIU/syeJkuYXfN8Jk5vlK233+jPDf/Wll0Q3VBPxPUv3+ua83y9I4DcsfanTJt5VbqZYAMCEQ048TGdF4WvbK7ZjhZXTLvq7s01H//fNdabxTvAplRI6KhmeMrpa4mVvS+DF6mS3LVDbC7ZnBk2yck7H9/O9eQ7kvwAb8QiGhqIPsyeJ0usWZx0ov1YhTrBUK+Qsww//3tXkO6Fe+yER10QCASQFa6JJ44kTF3HZHum4ST0+UDncWBnqxCzPT3kZVmsNKFYf3757vWstGheJeVPtCFqzUir7/+usyaNUtGjx4tkUhEXnzxRTdfDv/lVNFrMa9bWz1MZk8YI7XVwwJ/Ewo6u0XPYfz757rWcvG7eJcmhNCJq4HI8ePH5corr5Q1a9a4+TLIwImiV4SbqZ1+vWZnSbMOxbs0IYRuXE3N3HzzzXLzzTe7+RLIIazT5XAGPWIK1/ta29wSl9/sOKBt8S5NCKEbrWpEOjs7pbOzs+f7ZDLp49HopdiisoEUvSLc6BGTXbbrsbZ6mNRWD5NJFw/VtniXABO60SoQWbFihSxfvtzvw9AORWXwgx9FzyYo5HrUeTaSABO60aqh2dKlSyWRSPR8HTx40O9D8p2dojI23YKT/Cp61pmd61HX4l2aEEI3Ws2IlJaWSmlpqd+HoY18RWW9myNtbokzawLHhblHSDo716MuQUcmYW9CB/1oFYigr0KLyp7c2ipPvPpu3l4PQDF0TjN4yYkiT10aiBFgQieuBiIff/yxtLa29ny/f/9+aW5ulqFDh8oFF1zg5ksHQqHFYs/s2G/8KA16K6boWZebrlMGWuSpW60XASZ04Wog8uabb8oNN9zQ8/3ixYtFRGTu3Lmybt06N186EAotFvvPp6ey/htL8eAH3W66ThhIkWehHWq9xqo66MDVYtXp06eLUqrfF0FIYfIVldnBUjx4JahdO4st8qSBGJCbVqtm0Fex7aMzYSkevBDkm26xq4joUAvkRiCiOTvtozNhKR68FPSbbjFbJ9BADMiNVTMG6F1UtqP1A3lyW1tBP8dSPHgtDDddu0WeNBADciMQMYRVVGbnA5ylePBaWG66doo86VAL5EZqxjCFfoD/6Mufk+3330gQAk/RtbM/OtQCuRGIGKbQD/p5Uy/mgw2e46abWTG1JUBYRJRS2pavJ5NJiUajkkgkpKKiwu/D0Ya1PFIkc3tmPtjgtyD2EXFC0Jq8AdnYuX8TiBiKD3rojpsuEF4EIjaZ+oFp6nEDAILNzv079KtmTJ5ZoD0zAJMxmIJIyAMRXfd/AICgM3kQCGeFdtVMkFtRAwPRlVLS2NYuG5sPSWNbO9cAHBfU/YhQnNDOiNhpRU36A2HBKBVuyzcIjEj3ILCuJkaaJiRCOyMShlbUgB2MUuGFoO9HBPtCG4iEpRU1UAhSlfAKg0CkC20gQitq4AxGqfAKg0CkC20gQitq4AxGqdlRvOssBoFIF9piVZEz+z+kF+exay3ChlFqZm4X74axj4Y1CFywvkkiknmbCgaB4UJnVQnnhwHQW1dKybSVW/NuVb/9/htDc21k6zPk1J5OYV+hFPbfP+ho8Q7ANjZTPMMKzLLVzQw0MHM7yDEFg8DgsnP/Dm2NCLxBft0cbFV/hpvFu36uUNLterS2qZg9YYzUVg8jCAmpUNeIwF1MvZpn5vhKqauJhX6U6mbxrl/NFLkeoStmROAKmmOZi1Gqu8W7fqxQ4nqEzghE4DiaY8F0bi4x9XqFEtcjdEcgAsfRHAumc7PPkNd9NLgeoTsCETiO5lgIAreKd71upsj1CN1RrArH0RwLQeFW8a6XzRS5HqE7AhE4zpp6ztccixbO4WNi3wireNdpXq1Q4nqE7ghE4DhaOCMTlo/251aQk/4aXI/QGTUicAXNsdAby0f9xfUIndHiHa4ycSoeznK7XToKx/UIr9i5f5Oagau8mHqG3vzqJIr+uB6hI1IzAFzF8lEAuRCIAHAVy0cB5EIgAsBVXncSBWAWAhEArvK6kygAsxCIAHAdy0cBZMOqGQCe8KqTKACzEIgA8AzLRwGkIxABAI3QdAxhQyACAJpgPx6EEcWqAKAB9uNBWBGIAIDPulJKlr/UIpk2/rIeW/5Si3SltN0aDCgagQgA+MzOfjxA0BCIAIDP2I8HYUaxKhByrNLwH/vxIMwIRIAQY5WGHqz9eOKJExnrRCLS3YWW/XgQRKRmgJBilYY+3NiPpyulpLGtXTY2H5LGtnYKXaEtZkSAEMq3SiMi3as06mpioUvT+JWqsvbjSZ+hihUxQ8VMF0xCIAKEkJ1VGmFqye73DdyJ/Xisma70INOa6WKTQeiG1AwQQqzS6E+XVJW1H8/sCWOktnqY7XQM/UhgGgIRIIRYpdFXUG7g9COBiQhEgBCyVmlkG2tHpDslEZZVGkG5gTPTBRMRiAAh5MYqDZMF5QbOTBdMRCAChJS1SiMW7XtTikXLQlfQGJQbODNdMBGrZoAQc2KVRhAEpaGYNdO1YH2TRET6/C5hnOmCGZgRAUJuIKs0giJIqSpmumCaiFJK2zLwZDIp0WhUEomEVFRU+H04AALO7z4imRTbYI09hOAnO/dvAhEA6EWnG7iOgRFQCAIRADBctg6pVkhEmgU6s3P/pkYEADQTlAZrxWCzvvBh1QwAaCasewGRigonZkQAQDNBabBmhy57/cB7zIgADtGpyBFms9tgzfT3Xr5UVES6U1F1NTGjfi8UJpSBiOkXLfTDlHJxuBYzs9NgLQjvvbCmotDNk0BkzZo18thjj0k8Hpcrr7xSVq9eLZMmTfLipfsJwkULvWRb3WBNKbO6ITOuxewK7ZC6uSUeiPdeGFNROMP1GpHf//73snjxYqmvr5empia58sor5aabbpJ///vfbr90P+Qg4aSulJId/zwmS/7PW6Fc3TAQXIv55eqQuubOq6S89OzAvPeCstcPiuN6H5HJkyfLF77wBXnyySdFRCSVSklVVZV8+9vfliVLluT8WSf7iHSllExbuTXr9J811bn9/huZGkZemUbzuTw3/1qmlP+La9Ge9PTVR8dPyoOvBOu9Z70n8qWieE+YQ5s+IidPnpRdu3bJjBkzzrzgoEEyY8YMaWxs7Pf8zs5OSSaTfb6cYicHCeSSbTSfC1PKZ3At2tN7L6DEpydl4e+C994L0l4/sM/VQOTYsWPS1dUlo0aN6vP4qFGjJB6P93v+ihUrJBqN9nxVVVU5dizkIPVgerOiXNX9uTClfAbXYnGC/t5js77w0mrVzNKlS2Xx4sU93yeTSceCEXKQ/gtCcWK+0Xw6U7aP9xLXYnHC8N6bOb5S6mpirKQKGVcDkeHDh8vgwYPl6NGjfR4/evSoxGKxfs8vLS2V0tJSV47FznI4OC8oK0vsjNKZUs6Ma7E4YXnvWakohIerqZmSkhKZOHGibNmypeexVColW7ZskdraWjdfuh9ykP4J0r4Zdkbp1uqG6JASY1NRbuBaLI7d954pwT3gempm8eLFMnfuXLnmmmtk0qRJ8sQTT8jx48fl61//utsv3Y+Vg0xPD8QMSw+YJkjNivKN5kVEzh1ytqz52tWS+ORUv9UNpqWi3MK1aJ+d9961Y4cRyMEYrgcit99+u3zwwQfywAMPSDwelwkTJkhDQ0O/AlavkIP0XpCKEwtpNPXI/7hCOk6ckoW/Mz8V5SauRXsKfe9NHTfch6MDiud6H5GBcLKPCPzT2NYud6zdmfd5JvQ7sOQqvK2ridEnA64JQtE3gs/O/VurVTMIpiAWJ+YazTe2tQcmFQX9MJOEoCEQgesK3TfDtA/SbNX9QUpFQU+sLEGQuL7XDCASrmZF9MkAgMIxIwLPhGVKOYipKABwC4EIPBWGKeWgpqIAwA2kZgAX6JqKMn2vHwDBw4wIUID0rdgLSSnplopi2ScAHdFHBMgjCDfwbHv9WCFR0AqGAfjLzv2b1AyQg3UDT+8LYnVIbdhzxKcjK1yQ9vpxGqkqwH+kZoAs8t3AI9J9A6+riWldeBqkvX6cFISZLiAImBEBsrBzA9cZDdb6C8JMFxAUBCJAFkG5gdNgrS9SVYBeCESALIJyA7carGVLHkWkOyURlgZrQZnpAoKCQATIIig3cKvBmoj0+13C2GAtKDNdQFAQiABZuHED92uVhq4N1vwQlJkuIChYNQPkYN3A01dXxIpYXeH3Kg3dGqz5hb2AAL3Q0AwoQDGdVXujoZherL+HSOa9gPh7AANDQzPAYdZmfbMnjJHa6mG20zGs0tALqSpAH6RmAJfRUExPpKoAPRCIAC5jlYa+rJkuAP4hNQO4jFUaAJAdgQjgsqD0IwEANxCIAC6joRgAZEcgAniAVRoAkBnFqoBHWKUBAP0RiAAeYpUGAPRFIAJAKwPtYgvALAQiALTh9348ALxHsSoALVj7v6R3oY0nTsiC9U3SsOeIT0cGwE0EIgB8x348QHgRiADwnZ39eAAEC4EIAN+xHw8QXgQiAHzHfjxAeLFqBkjD8lHvWfvxxBMnMtaJRKS7Cy378YQP12PwEYgAvbB81B/WfjwL1jdJRKRPMMJ+POHF9RgOpGaA/2L5qL/Yjwe9cT2GR0Qppe16uGQyKdFoVBKJhFRUVPh9OAiwrpSSaSu3Zl25YaUGtt9/o+Ojcqae++J8wM/rEc6wc/8mNQOIveWjTu4V4/bUs4k3dfbjgV/XI/xBIAKIP8tHrann9ClJa+p5oOkI8uswFcu5w4UaEUC8Xz7qdidR8uswGcu5w4VABJAzy0ezJS0i0j2b4NTyUTc7idIuHabz+nqEvwhEADmzfFRE+n34ubF81M2pZ9qlw3ReX4/wF4EI8F9eLh91c+qZ/Hp2XSkljW3tsrH5kDS2tTMrpDGWc4cHxapALzPHV0pdTcz1lSZudhIlv54Zxbvm8ep6hL8IROA73ZaYerF81M1OorRL78/tFUpwD8u5g49ABL4K8yjVmnpO//1jA/z9aZfeV77i3Yh0F+/W1cRCc04AEX0GgXRWhW+yjVKtyyAso1S3PgzCHOT11tjWLnes3Zn3ec/Nv5aRN0LD7c8HOqtCe4xSz3Br6pn8ejeKd4G+dEtVEojAF7Rw9gb5dYp3gd50HASyfBe+YJQKr9AcCzhDxz5DBCLwBaNUeIXmWMAZOg4CCUTgC0ap8BLNsYBuOg4CqRGBL1hiCq9RvAvo2WeIGRH4hlEqvGYV786eMEZqq4cRhCB0dExV0kcEvtOlqQ4AFMPEzzCd+ogQiAAAUCSTGwe6GUARiAAIFBNHnAg+ukNnR2dVwGDcdPsyecSJ4NKxMZipCEQAjXDT7Uu3VtSAhe7QzmHVDKAJ66ab/uFm3XQb9hzx6cj8kW/EKdI94uxKaZtdRkB1pZTsaD1W0HPpDp0fgQigAW66/enYihpo2HNEpq3cKk9uay3o+XSHzo9ABNCAEzfdrpSSxrZ22dh8SBrb2o0PWnRsRY1wyzZrmc3Qz5wt8eSJQFyPbqJGBNDAQG+6Qawt0bEVNcIr16xlNh8ePyX3/b5ZRMy/Ht3EjAiggYHcdINaW8J+RNBJvlnLfEy/Ht1EIAJooNibbpBrS3RsRY3wKnTW8rOlgzM+bvr16CbXApGHHnpIpkyZIuecc46ce+65br0MEAjF3nSDXtDJfkTQRaGzlh93dmX9N9OvR7e4ViNy8uRJufXWW6W2tlaefvppt14GGDBdGohZN930Wo9YjtxyGAo62TUXOihk19rokLPlP5+eyvt/mXw9usG1QGT58uUiIrJu3Tq3XgIYMN2KPO3edMNS0GntmmuHLgEmgsGatVywvkkiIn2CEetd9fWpF8njr/4z7/9l+vXoNFbNILR07dpp56ZbyCgtFsKCTt0CTARDvlnLupqYbPh/B7kebdIqEOns7JTOzs6e75PJpI9HgyALyj4RhYzSwlbQqWuAiWDIN2vJ9WifrWLVJUuWSCQSyfm1d+/eog9mxYoVEo1Ge76qqqqK/r+AXEwr8szVrIyCzjOCvIoI+rBmLWdPGCO11cP6BBZcj/bZmhH57ne/K/Pmzcv5nLFjxxZ9MEuXLpXFixf3fJ9MJglG4AqTijwLSTNQ0NmNjcigA65He2wFIiNGjJARI0a4dSxSWloqpaWlrv3/gMWUIs9saYYjiRPyrfVN8o2pF8mMmljPh1zYb64mBZgwQ7FFz1yPhXOtRuT999+XDz/8UN5//33p6uqS5uZmEREZN26cfPazn3XrZYGCmFDkWUhL6ad3HJCndxygEPO/TAkwYQaKnr3hWkOzBx54QK666iqpr6+Xjz/+WK666iq56qqr5M0333TrJYGCmdC1005LadpHd6MtPJwS1K0TdORaILJu3TpRSvX7mj59ulsvCdiie1GZnfRB2AoxsxXvmhBgYuDc3mmaomdvabV8F/CazkVldtMHYSnEzDddXkyHWpjDi3QJRc/eIhBB6OlaVJavjiWbIBdiFtojROcAE8XzqkeMG0XPdPrNjkAE0FSuZmW5BLUQ024TOl0DTBTHyyaEThc9U/Sam2s1IgAGLlsdSyZBL8QsdLr88c3vulI3AH952YTQyaJnil7zIxABNDdzfKVsv/9GeW7+tfK/pl4kIuEsxCx0GvzJba1yx9qdMm3lVj7kA8TLHjFOFT1T9FoYAhHAAFaa4YFZl8svNF7p4ya7KSdGnMHidY8YJ1bVmbaVhF+oEQEME9ZCTLvFuyZtXoj8/GhCONBrjU6/hWFGBDBQrk23girXdHk2jDiDw68eMQO51uj0WxgCEQDGsFO821vYR5xBoXsTwnR0+i0MqRkARuk9Xb6j9QN5cltb3p8J+4gzSExKTeZagh+GAvNCMSMCwDjWdPl9dZcy4gwhk1KTps3i+IEZEQDGYsQJE5g0i+OHiFJK2wXMyWRSotGoJBIJqaio8PtwAGiKzpWAXuzcv5kRgZbYlwF2MOIEzEUgAu0wukUx2FsGA8UAyB8EItCKV7trAkBvDID8w6oZaIN9GQD4gY3p/EUgAm2wLwMArzEA8h+BCLTBvgwAvBaWAVBXSkljW7tsbD4kjW3tWgVW1IhAG+zLAMBrYRgA6V7/wowItMG+DAC8FvQBkAn1LwQi0IZfu2sCCK8gD4BMqX8hEIFW2JcBgJeCPAAypf6FGhFohy6ZALxkDYDS6yhiGtVRFMOU+hcCEWjJrS6ZdE4EkEkQB0Cm1L8QiCA0dK8cB+Avr7cJcHtgZNW/xBMnMtaJRKR71sfv+hcCEYQCreMB6MSLgZFV/7JgfZNERPp8/ulU/0KxKgLPlMpxAOHg5ZJaExYAMCOCwLNTOc7urYB5TKr9yjcwikj3wKiuJubY76B7/QuBCALPlMpxAPaZVvvl18DI6/oXO0jNIPBMqRwHYI8JXUPTMTDqj0AEgRfkzolAWJla+8XAqD8CEQRekDsnAmHlRNdQP3akZWDUHzUiCIWgdk4EwmqgKQ6/aktMWVLrJQIRhIbuleMACjeQFIfffYUYGPVFIIJQ0blyHEDhiu0a6sfy2UwYGJ1BjQgAwDjF1n7ptCOtNTCaPWGM1FYPC2UQIkIgAgAwVDFdQ1k+qx9SMwAAY9lNcbB8Vj8EIgAAo9mp/TJlR9owITUDAAgN+grph0AEABAqJuxIGyakZgAAocPyWX0QiAAAAqcrpfoEGRMvPE92vfdRv6CDvkL+IxABAARKpvbtgyIivbeS8aKdOwpDjQgAIDCs9u3pTcvS97Oz2rk37Dni4dEhEwIRAEAg5Grfns56zvKXWjzZdRfZEYjACH5s1w3ALPnat6fzsp07sqNGBNrza7tuAGYpti077dz9xYwItJYt30t+F0C6Ytuy087dXwQi0Fa+7bpFyO8COMNq315oJ5CIdM+u6tLOPawpaFIz0Jad7bqz9QJI7yVAwyIguKz27QvWN0lEJGfRqm7t3MOcgiYQgbYGul13mC9sIKys9u35+ojENPossFLQ6YGTlYIOett5AhFoayDbdYf9wgbCLFP79mydVf2WLwUdke4UdF1NTIvjdQOBCLRV7HbdXNgAMrVv17GduxMpaNNRrAptFbtdt50LGwD8NNAUdDYmFb4yIwKtZcv35srvunVhA4DTBpKCzsa0+jgCEWjP7nbdblzYAOCGYlPQ2ZhYH0dqBkaw8r2zJ4yR2uphOWs78vUS0K13AIDwKjYFnYmpvZcIRBA4Tl7YAOA2KwUdi/adpY1Fy2zNYJhaH0dqBoFUTG0JAPjFbgo6E1Pr4whEEFhOXNgA4JVMS47tMLU+jkAEgTbQCxsATOF04atXqBEBACAATK2PIxABACAgnCp89RKpGRiLnXUBoD/T6uNcC0QOHDggDz74oGzdulXi8biMHj1a7rrrLlm2bJmUlJS49bIIiUydA2MVpXLHpAvkouGf0f7CAwA3mVQf51ogsnfvXkmlUvLLX/5Sxo0bJ3v27JH58+fL8ePHZdWqVW69LEIga+fAZKc8/uo/e77XuaUxAKBbRCnlWYu1xx57TJ566inZt29fQc9PJpMSjUYlkUhIRUWFy0cHE3SllExbuTVn0x6LNReia14UAILKzv3b02LVRCIhQ4dmXzbU2dkpyWSyzxfQW77Ogb3p3NIYANDNs0CktbVVVq9eLffcc0/W56xYsUKi0WjPV1VVlVeHB0PY7Qioa0tjAChEV0pJY1u7bGw+JI1t7YEcVNkORJYsWSKRSCTn1969e/v8zKFDh2TmzJly6623yvz587P+30uXLpVEItHzdfDgQfu/EQKt2I6AurU0BoB8GvYckWkrt8oda3fK/97QLHes3SnTVm6Vhj1H/D40R9muEfnggw+kvb0953PGjh3bszLm8OHDMn36dLn22mtl3bp1MmhQ4bEPNSJIZ9WIZOscmM1z8681poIcALIV5ZtS+2bn/m171cyIESNkxIgRBT330KFDcsMNN8jEiRPlmWeesRWEAJlYnQMXrG+SiEjeYETXlsYAkE1XSsnyl1oyfr4p6f5cW/5Si9TVxALRosC1yODQoUMyffp0ueCCC2TVqlXywQcfSDwel3g87tZLIiSydQ5Mp3NLYwDIJl9RftBq31zrI7J582ZpbW2V1tZWOf/88/v8m4crhhFQ6Z0DDxz7RJ57432JJ3s1OKOPCAADFVrTFpTaN9cCkXnz5sm8efPc+u+Bfp0DF904zpiWxgCQTaFF+dbzTN/ugr1mEBgmtTQGgGwmXTxUKqNlWYvye9e+ZdruwrSu0lSPAgCgEasoX+RMrZuld+3b5pa4LFjf1K+eJJ44IQvWNxmzzJdABAAAzWQryo9Fy+Spu66WuppYzpU1IuZ0lSY1AwCAhtKL8keWl8nEC8+TXe99JI9vfqfglTW6p6wJRAAA0FTv2reGPUfk+se2FbzflogZK2sIRAAA0Fy2Tqv5FLsthpcIRAAA0FiuTqvZmNRVmmJVAAA0lq/TajrTukozIwIAgMbs1nmY1lWaQAQAAI0VWuex6IZxMnXccDqrAgAA5xTaafW+ukuMCkAs1IgAAKCxQjutmhiEiBCIAACgvXydVk2pB8mE1AwAAAbI1GnVtHqQTAhEAAAwRBB3GSc1AwAAfEMgAgAAfEMgAgAAfEMgAgAAfEMgAgAAfEMgAgAAfEMgAgAAfEMgAgAAfEMgAgAAfKN1Z1WluvcZTCaTPh8JAAAolHXftu7juWgdiHR0dIiISFVVlc9HAgAA7Oro6JBoNJrzORFVSLjik1QqJYcPH5by8nKJRJzd1CeZTEpVVZUcPHhQKioqHP2/0Rfn2juca+9wrr3DufaOU+daKSUdHR0yevRoGTQodxWI1jMigwYNkvPPP9/V16ioqOCN7RHOtXc4197hXHuHc+0dJ851vpkQC8WqAADANwQiAADAN6ENREpLS6W+vl5KS0v9PpTA41x7h3PtHc61dzjX3vHjXGtdrAoAAIIttDMiAADAfwQiAADANwQiAADANwQiAADAN4EORNasWSMXXXSRlJWVyeTJk+WNN97I+fw//vGPctlll0lZWZlcccUVsmnTJo+O1Hx2zvXatWvluuuuk/POO0/OO+88mTFjRt6/Dc6w+762bNiwQSKRiHz1q1919wADxO65/s9//iMLFy6UyspKKS0tlUsuuYTPkQLZPddPPPGEXHrppTJkyBCpqqqS++67T06cOOHR0Zrr9ddfl1mzZsno0aMlEonIiy++mPdnXnvtNbn66qultLRUxo0bJ+vWrXP2oFRAbdiwQZWUlKjf/OY36h//+IeaP3++Ovfcc9XRo0czPn/Hjh1q8ODB6tFHH1UtLS3qhz/8oTr77LPVW2+95fGRm8fuub7zzjvVmjVr1O7du9Xbb7+t5s2bp6LRqPrXv/7l8ZGbx+65tuzfv1+NGTNGXXfddWr27NneHKzh7J7rzs5Odc0116hbbrlFbd++Xe3fv1+99tprqrm52eMjN4/dc/3ss8+q0tJS9eyzz6r9+/erv/zlL6qyslLdd999Hh+5eTZt2qSWLVumnn/+eSUi6oUXXsj5/H379qlzzjlHLV68WLW0tKjVq1erwYMHq4aGBseOKbCByKRJk9TChQt7vu/q6lKjR49WK1asyPj82267TX35y1/u89jkyZPVPffc4+pxBoHdc53u9OnTqry8XP32t7916xADo5hzffr0aTVlyhT161//Ws2dO5dApEB2z/VTTz2lxo4dq06ePOnVIQaG3XO9cOFCdeONN/Z5bPHixWrq1KmuHmfQFBKIfP/731eXX355n8duv/12ddNNNzl2HIFMzZw8eVJ27dolM2bM6Hls0KBBMmPGDGlsbMz4M42NjX2eLyJy0003ZX0+uhVzrtN98skncurUKRk6dKhbhxkIxZ7rn/zkJzJy5Ej5xje+4cVhBkIx5/rPf/6z1NbWysKFC2XUqFEyfvx4efjhh6Wrq8urwzZSMed6ypQpsmvXrp70zb59+2TTpk1yyy23eHLMYeLFvVHrTe+KdezYMenq6pJRo0b1eXzUqFGyd+/ejD8Tj8czPj8ej7t2nEFQzLlOd//998vo0aP7vdnRVzHnevv27fL0009Lc3OzB0cYHMWc63379snWrVvla1/7mmzatElaW1vl3nvvlVOnTkl9fb0Xh22kYs71nXfeKceOHZNp06aJUkpOnz4t3/rWt+QHP/iBF4ccKtnujclkUj799FMZMmTIgF8jkDMiMMcjjzwiGzZskBdeeEHKysr8PpxA6ejokDlz5sjatWtl+PDhfh9O4KVSKRk5cqT86le/kokTJ8rtt98uy5Ytk1/84hd+H1rgvPbaa/Lwww/Lz3/+c2lqapLnn39eXnnlFXnwwQf9PjQUIZAzIsOHD5fBgwfL0aNH+zx+9OhRicViGX8mFovZej66FXOuLatWrZJHHnlEXn31Vfn85z/v5mEGgt1z3dbWJgcOHJBZs2b1PJZKpURE5KyzzpJ33nlHqqur3T1oQxXzvq6srJSzzz5bBg8e3PPY5z73OYnH43Ly5EkpKSlx9ZhNVcy5/tGPfiRz5syRb37zmyIicsUVV8jx48fl7rvvlmXLlsmgQYyxnZLt3lhRUeHIbIhIQGdESkpKZOLEibJly5aex1KplGzZskVqa2sz/kxtbW2f54uIbN68Oevz0a2Ycy0i8uijj8qDDz4oDQ0Ncs0113hxqMaze64vu+wyeeutt6S5ubnn6ytf+YrccMMN0tzcLFVVVV4evlGKeV9PnTpVWltbe4I9EZF3331XKisrCUJyKOZcf/LJJ/2CDSsAVGyf5ihP7o2Olb1qZsOGDaq0tFStW7dOtbS0qLvvvlude+65Kh6PK6WUmjNnjlqyZEnP83fs2KHOOusstWrVKvX222+r+vp6lu8WyO65fuSRR1RJSYn605/+pI4cOdLz1dHR4devYAy75zodq2YKZ/dcv//++6q8vFwtWrRIvfPOO+rll19WI0eOVD/96U/9+hWMYfdc19fXq/LycvXcc8+pffv2qb/+9a+qurpa3XbbbX79Csbo6OhQu3fvVrt371Yion72s5+p3bt3q/fee08ppdSSJUvUnDlzep5vLd/93ve+p95++221Zs0alu/asXr1anXBBReokpISNWnSJLVz586ef7v++uvV3Llz+zz/D3/4g7rkkktUSUmJuvzyy9Urr7zi8RGby865vvDCC5WI9Puqr6/3/sANZPd93RuBiD12z/Xf//53NXnyZFVaWqrGjh2rHnroIXX69GmPj9pMds71qVOn1I9//GNVXV2tysrKVFVVlbr33nvVRx995P2BG2bbtm0ZP3+t8zt37lx1/fXX9/uZCRMmqJKSEjV27Fj1zDPPOHpMEaWYxwIAAP4IZI0IAAAwA4EIAADwDYEIAADwDYEIAADwDYEIAADwDYEIAADwDYEIAADwDYEIAADwDYEIAADwDYEIAADwDYEIAADwDYEIAADwzf8Hm52AJggyAjsAAAAASUVORK5CYII=",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"import json\n",
|
|
"with open(\"mystery_signal.json\", \"r\") as f:\n",
|
|
" x = json.load(f)\n",
|
|
"\n",
|
|
"plt.scatter(T, x);"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "12fa321e",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "skip"
|
|
}
|
|
},
|
|
"source": [
|
|
"We can deconstruct the signal using the so-called _Fourier Transform_:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"id": "03cb329c",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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aXPRbQ4dOqQhQ4aoZcuWio+P1zPPPKMzZ8406vW2b9+uO+64Q23atFFsbKyeeOIJnTp1yoffoL4vvvhCQ4cOVVxcnKKjo3X77bdr/fr1PtfdsGGDQkJCLrps3brVgc6/99///d9KT09XZGSk2rZtq3vuucex2tdcc80Fvc+YMcOx+pJUXV2tm266SSEhIdq5c6djde+++2516tRJERERSkpK0sMPP6ySkhKf6x48eFCjR49WSkqKIiMj1bVrV02bNk01NTUOdP29huxj3nj55Zd1zTXXKCIiQunp6frkk098b1LSxo0bddddd6l9+/YKCQnR22+/7UhdScrJydFtt92mqKgoxcfH65577lFRUZFj9RcsWKCePXt6buKUkZGh9957z7H655oxY4ZCQkI0YcIER+r96le/umC/TE1NdaT2WUeOHNFDDz2k2NhYRUZG6sYbb9S2bdt8rnuxvykhISHKzs52oGuptrZWzz33XL398ze/+U2DvvekISoqKjRhwgR17txZkZGR6tu3b6P/nl9p/zHG6Pnnn1dSUpIiIyOVmZmp/fv3+9R/UIePmpoa3XfffRo7duxFH6+trdWQIUNUU1OjTZs26bXXXtPixYv1/PPPe/1aJSUlyszM1LXXXqstW7ZozZo12rNnjx599FEff4v/c+edd+rMmTP68MMPVVhYqF69eunOO+9UaWmpT3X79u2ro0eP1lt++tOfKiUlRbfeeqsjvb/11lt6+OGHNWrUKH366af6+OOP9eCDDzpS+6xf//rX9X6HcePGOVr/2WefVfv27R2tKUn9+/fXX/7yFxUVFemtt97Sl19+qXvvvdfnuvv27VNdXZ0WLVqkPXv2aM6cOVq4cKH+/d//3YGuv3elfcwbb775piZOnKhp06Zp+/bt6tWrl7KysnTs2DGfa1dWVqpXr156+eWXfa51vvz8fGVnZ2vz5s1at26dTp8+rUGDBqmystKR+h07dtSMGTNUWFiobdu2acCAARo6dKj27NnjSP2ztm7dqkWLFqlnz56O1v3BD35Qb7/86KOPHKt94sQJ9evXTy1atNB7772nvXv36j/+4z/Utm1bn2tv3bq1Xt/r1q2TJN13330+15ak3//+91qwYIFeeuklff755/r973+vmTNnat68eY7U/+lPf6p169bpz3/+s3bv3q1BgwYpMzNTR44c8brWlfafmTNnau7cuVq4cKG2bNmiVq1aKSsrS1VVVY3/BUwTkJuba1wu1wXr3333XRMaGmpKS0s96xYsWGCio6NNdXW1V6+xaNEiEx8fb2praz3rdu3aZSSZ/fv3N7r3s7799lsjyWzcuNGzzu12G0lm3bp1Ptc/V01NjWnXrp359a9/7Ui906dPmw4dOpj//M//dKTexXTu3NnMmTPHb/Xfffddk5qaavbs2WMkmR07dvjttd555x0TEhJiampqHK89c+ZMk5KS4njdS+1j3ujdu7fJzs72/FxbW2vat29vcnJyfOyuPklm5cqVjtY817Fjx4wkk5+f77fXaNu2raP7U0VFhbnuuuvMunXrzD/90z+Z8ePHO1J32rRpplevXo7UupjJkyeb22+/3W/1zzV+/HjTtWtXU1dX50i9IUOGmMcee6zeumHDhpkRI0b4XPu7774zzZo1M6tXr663/pZbbjG/+MUvfKp9/v5TV1dnEhMTzaxZszzrTp48acLDw82yZcsa/TpBfeTjSgoKCnTjjTcqISHBsy4rK0tut9vr/6uorq5WWFhYvS/LiYyMlCRHkn5sbKxuuOEGvf7666qsrNSZM2e0aNEixcfHKy0tzef65/rb3/6mf/zjHxo1apQj9bZv364jR44oNDRUN998s5KSkjR48GB99tlnjtQ/a8aMGYqNjdXNN9+sWbNmNfr02fnKysr0+OOP689//rNatmzpSM1LOX78uJYuXaq+ffuqRYsWjtcvLy9XTEyM43V9VVNTo8LCQmVmZnrWhYaGKjMzUwUFBQHszHvl5eWS5Jdxrq2t1fLly1VZWamMjAzH6mZnZ2vIkCH1xt8p+/fvV/v27dWlSxeNGDFChw4dcqz23/72N91666267777FB8fr5tvvlmvvPKKY/XPqqmp0ZIlS/TYY4816AtNG6Jv377Ky8vTF198IUn69NNP9dFHH2nw4ME+1z5z5oxqa2sVERFRb31kZKSjR54kqbi4WKWlpfX+7bhcLqWnp/u07zbp8FFaWloveEjy/OztqYwBAwaotLRUs2bNUk1NjU6cOKEpU6ZIko4ePepzryEhIfrggw+0Y8cORUVFKSIiQrNnz9aaNWscOcR4rldffVVZWVmN+gK/i/nqq68kfX/+95e//KVWr16ttm3b6p//+Z91/PhxR17j5z//uZYvX67169frZz/7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q6KiwtObJDN79myzY8cO8/XXX/tce+zYscblcpkNGzbUG+PvvvvO59rGGDNlyhSTn59viouLza5du8yUKVNMSEiIef/99x2pfz4nT7tMmjTJbNiwwRQXF5uPP/7YZGZmmri4OHPs2DFH6n/yySemefPm5oUXXjD79+83S5cuNS1btjRLlixxpH5tba3p1KmTmTx5siP1zjVy5EjToUMHs3r1alNcXGz++te/mri4OPPss886Un/NmjXmvffeM1999ZV5//33Ta9evUx6enqjrqK70v4zY8YM06ZNG/POO++YXbt2maFDh5qUlBTzP//zP43uP6jDx8iRIy96vnr9+vWebQ4ePGgGDx5sIiMjTVxcnJk0aZI5ffp0o17v4YcfNjExMSYsLMz07NnTvP766w79Jt/bunWrGTRokImJiTFRUVGmT58+ns+mOOEnP/mJ6du3r2P1zlVTU2MmTZpk4uPjTVRUlMnMzDSfffaZI7ULCwtNenq6cblcJiIiwnTr1s387ne/8/nN+2KcDh+7du0y/fv3NzExMSY8PNxcc801ZsyYMeabb77xuXZubu4lP7PhlIbsY96YN2+e6dSpkwkLCzO9e/c2mzdvdqTP9evXX7TPkSNH+lz7UmOcm5vrc21jjHnsscdM586dTVhYmGnXrp0ZOHCg34KHMc6Gj/vvv98kJSWZsLAw06FDB3P//febAwcOOFL7rFWrVpkePXqY8PBwk5qaav74xz86Vnvt2rVGkikqKnKs5llut9uMHz/edOrUyURERJguXbqYX/ziF17f5uFS3nzzTdOlSxcTFhZmEhMTTXZ2tjl58mSjal1p/6mrqzPPPfecSUhIMOHh4WbgwIE+j1mIMQ7dbg0AAKABmvSltgAA4OpD+AAAAFYRPgAAgFWEDwAAYBXhAwAAWEX4AAAAVhE+AACAVYQPAABgFeEDAABYRfgAAABWET4AAIBVhA8AAGDV/wIaWQnAIWj8ZwAAAABJRU5ErkJggg==",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"import numpy as np\n",
|
|
"X = np.fft.fft(x) # spectrum\n",
|
|
"f = np.fft.fftfreq(len(x), d=sample_distance)\n",
|
|
"plt.xlim(-10.5, 10.5)\n",
|
|
"plt.xticks(np.arange(-10, 10+1))\n",
|
|
"plt.scatter(f, np.abs(X)); # complex number -> magnitude"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "f88c740a",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "skip"
|
|
}
|
|
},
|
|
"source": [
|
|
"We see peaks at $\\pm$2, 3, and 7 Hz.\n",
|
|
"If we add sine waves with respective frequencies, we obtain the same signal:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"id": "05be9581",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.scatter(T, [\n",
|
|
" sin(2 * pi * 2 * t)\n",
|
|
" for t in T\n",
|
|
"]);"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"id": "1c670b5b",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.scatter(T, [\n",
|
|
" sin(2 * pi * 2 * t)\n",
|
|
" + sin(2 * pi * 3 * t)\n",
|
|
" for t in T\n",
|
|
"]);"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"id": "46b64d31",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.scatter(T, [\n",
|
|
" sin(2 * pi * 2 * t)\n",
|
|
" + sin(2 * pi * 3 * t)\n",
|
|
" + sin(2 * pi * 7 * t)\n",
|
|
" for t in T\n",
|
|
"]);"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "ebb9686a",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"Intuitively, value of the spectrum means:\n",
|
|
"- real part $\\mathfrak{Re}(X[f])$ = \"how much cosine with frequency $f$ is contained in $x$?\"\n",
|
|
"- imaginary part $\\mathfrak{Im}(X[f])$ = \"how much sine with frequency $f$ is contained in $x$?\""
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "074d0173",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"Or in polar coordinates:\n",
|
|
"- magnitude $|X[f]|$ = \"how stronlgy is $f$ contained in $x$?\"\n",
|
|
"- Winkel $\\arg(X[f])$ = \"with what phase is $f$ contained in $x$?\""
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "9174b1ee",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "skip"
|
|
}
|
|
},
|
|
"source": [
|
|
"Formally:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "d0293fd2",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"```{prf:definition} Fourier Transformation\n",
|
|
"For a signal $x$ with $n$ samples, we call\n",
|
|
"\n",
|
|
"$$\n",
|
|
"\\begin{align*}\n",
|
|
"X[f] &\\mathrel{\\vcenter{:}}= \\sum_{m=0}^{n-1} x[m] \\exp\\!\\left(-j 2\\pi f \\frac{m}{n}\\right)\n",
|
|
"\\end{align*}\n",
|
|
"$$\n",
|
|
"\n",
|
|
"the (discrete) _spectrum_ of $x$.\n",
|
|
"The calculation by which we obtain it is called _Fourier Transformation_\n",
|
|
"\n",
|
|
"We also write $x[t] \\,\\circ\\!\\!-\\!\\!\\bullet\\, X[f]$\n",
|
|
"```"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "5db55997",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "skip"
|
|
}
|
|
},
|
|
"source": [
|
|
"```{note}\n",
|
|
"Engineers often use $j$ instead of $i$ and $\\exp(x)$ instead of $e^x$.\n",
|
|
"That's why you can use `1j` in Python to obtain $i$.\n",
|
|
"```"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "8ba9001d",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"### Example"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"id": "2fbba675",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"x = [\n",
|
|
" # Pure sine, 5 Hz\n",
|
|
" 3 * sin(2 * pi * 5 * t)\n",
|
|
" \n",
|
|
" # Pure cosine, 7 Hz\n",
|
|
" + 2 * cos(2 * pi * 7 * t)\n",
|
|
" \n",
|
|
" # Pi/4 phase shifted, 3 Hz\n",
|
|
" + sin(2 * pi * 3 * t + pi/4)\n",
|
|
" \n",
|
|
" for t in T\n",
|
|
"]\n",
|
|
"X = np.fft.fft(x)\n",
|
|
"f = np.fft.fftfreq(len(x), d=sample_distance)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"id": "e66265d8",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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j0cTJkxwpN6///u/n7Bvdu7c2ZHakrR3717ddtttSkxMVGxsrC699FJ9/PHHjtSu63XF4/EoOzvbkfo1NTWaOnVq0P752GOPndHv1JyJ8vJyTZgwQe3bt1dsbKz69OnT4Nfz0+0/xhhNmzZNqampio2NVVZWlnbv3h1S/2d9QKmurtZNN92kMWPG1Hl7TU2NBg8erOrqan300UdatmyZli5dqmnTptX7sUpKSpSVlaWLL75YmzZtUm5urnbu3Kk777wzxGdx1HXXXacjR45o3bp1KigoUPfu3XXdddeptLQ05Np9+vTRvn37gpbf//73Sk9P1xVXXOFA99Krr76q22+/XSNHjtQnn3yiDz/8ULfeeqsjtSXp0UcfDep/3LhxjtU+5uGHH1ZaWprjda+++mr99a9/VWFhoV599VV9/fXX+u1vfxty3S+//FK1tbVatGiRdu7cqaeeekoLFy7Uv/7rvzrQ9VGn28fq4+WXX9YDDzyg6dOna+vWrerevbsGDhyo/fv3h1y7oqJC3bt31zPPPBNyreOtX79e2dnZ2rhxo9auXavDhw9rwIABqqiocKT+hRdeqJkzZ6qgoEAff/yxrrnmGt1www3auXOnI/WP2bJlixYtWqTLLrvM0bq//OUvg/bNDz74wJG6Bw8eVN++fdW8eXO99dZb+vzzz/XHP/5RrVq1cqT+li1bgvpeu3atJOmmm25ypP6sWbO0YMECzZ8/X1988YVmzZql2bNna968eY7U//3vf6+1a9fqL3/5iz777DMNGDBAWVlZ2rt3b71rnW7/mT17tubOnauFCxdq06ZNatGihQYOHKjKysqGPwFzjliyZInxer0njL/55psmIiLClJaWBsYWLFhg4uPjTVVVVb0eY9GiRSYpKcnU1NQExj799FMjyezevbvBvRtjzA8//GAkmQ0bNgTG/H6/kWTWrl0bUu26VFdXmzZt2phHH33UkXqHDx82F1xwgfnP//xPR+odr3379uapp54KS+1j3nzzTdO5c2ezc+dOI8ls27YtbI/1+uuvG4/HY6qrqx2vPXv2bJOenu543ZPtY/XRu3dvk52dHfi7pqbGpKWlmZycnBC7CybJrFq1ytGaP7d//34jyaxfvz5sj9GqVStH96fy8nLTqVMns3btWvOP//iPZvz48Y7UnT59uunevbsjtY43adIk069fv7DUrsv48eNNx44dTW1trSP1Bg8ebO66666gsRtvvNEMHz485No//fSTiYyMNGvWrAka79mzp/nDH/4QUu3j95/a2lqTkpJinnzyycDYoUOHTHR0tHnppZca/Dhn/RGU08nPz9ell16q5OTkwNjAgQPl9/vr/b+TqqoqRUVFBf0AUmxsrCSF/D+GxMRE/eIXv9ALL7ygiooKHTlyRIsWLVJSUpJ69eoVUu26vPHGG/rf//1fjRw50pF6W7du1d69exUREaEePXooNTVVgwYN0o4dOxypLx09NJ2YmKgePXroySefbPDHdHUpKyvT3Xffrb/85S8677zzHKtblwMHDmjFihXq06ePmjdv7nh9n8+nhIQEx+uGqrq6WgUFBcrKygqMRUREKCsrS/n5+U3YWf35fD5JCss819TUaOXKlaqoqFBmZqZjdbOzszV48OCg+XfK7t27lZaWpg4dOmj48OHas2ePI3XfeOMNXXHFFbrpppuUlJSkHj166LnnnnOk9vGqq6u1fPly3XXXXWf0I7Vnok+fPsrLy9OuXbskSZ988ok++OADDRo0KOTaR44cUU1NjWJiYoLGY2NjHTuCdUxRUZFKS0uDth2v16uMjIyQ9t1zPqCUlpYGhRNJgb/r+9HJNddco9LSUj355JOqrq7WwYMHNXnyZEnSvn37QurT4/Ho3Xff1bZt2xQXF6eYmBjNmTNHubm5jh3O/Lnnn39eAwcObNCPMtblm2++kXT08+h/+7d/05o1a9SqVSv90z/9kw4cOBBy/fvuu08rV67Ue++9p3vuuUdPPPGEHn744ZDrSkc/W73zzjt17733OvZxV10mTZqkFi1aKDExUXv27NHrr7/u+GN89dVXmjdvnu655x7Ha4fq73//u2pqaurcH534GLOx1NbWasKECerbt6+6devmWN3PPvtM559/vqKjo3Xvvfdq1apV6tq1qyO1V65cqa1btyonJ8eRej+XkZGhpUuXKjc3VwsWLFBRUZH+4R/+QeXl5SHX/uabb7RgwQJ16tRJb7/9tsaMGaP77rtPy5Ytc6DzYK+99poOHTrk2Ef2kjR58mTdcsst6ty5s5o3b64ePXpowoQJGj58eMi14+LilJmZqccee0wlJSWqqanR8uXLlZ+fH/L70fGO7Z+O77shHOVpMpMmTTKSTrl88cUXQfc52eHnu+++2wwYMCBorKKiwkgyb775Zr0fb8WKFSY5OdlERkaaqKgo8+CDD5rk5GQzc+bMkJ5LbW2tuf76682gQYPMBx98YAoKCsyYMWPMBRdcYEpKShydq+LiYhMREWH+67/+y7F/ixUrVhhJZtGiRYH7VlZWmtatW5uFCxc61vsxzz//vGnWrJmprKwMufenn37a9O3b1xw5csQYY0xRUdEZfcRT3/5/+OEHU1hYaN555x3Tt29f85vf/Oakh5IbMjfff/+96dixoxk1atQp+25o/VA/4tm7d6+RZD766KOg8Yceesj07t27wXXrojB+xHPvvfea9u3bm+LiYkfrVlVVmd27d5uPP/7YTJ482bRu3drs3Lkz5Lp79uwxSUlJ5pNPPgmMOfkRz/EOHjxo4uPjHfl4qnnz5iYzMzNobNy4ceaqq64KufbxBgwYYK677jpHa7700kvmwgsvNC+99JL59NNPzQsvvGASEhLM0qVLHan/1VdfmV/96ldGkomMjDRXXnmlGT58uOncuXNIdY/ffz788EMj6YT3optuusn87ne/a/DjNDvzKGOPiRMnnjbFdujQ4YxqpaSknHCWQFlZWeC2+j7erbfeqltvvVVlZWVq0aKFPB6P5syZc9J+zrT2unXrtGbNGh08eDDwk9bPPvus1q5dq2XLlgWO1DS0/s8tWbJEiYmJuv766095v/rUP5bYf/4/vujoaHXo0OGkh3tD+XfOyMjQkSNH9O233+oXv/hFSPXXrVun/Pz8E35r4oorrtDw4cNP+r+1+vbfunVrtW7dWpdccom6dOmitm3bauPGjXUexq9v7ZKSEl199dXq06ePFi9efMr7NaS+E1q3bq3IyMjA/ndMWVlZYF+03dixY7VmzRpt2LDBsaOPx0RFReniiy+WJPXq1UtbtmzR008/rUWLFoVUt6CgQPv371fPnj0DYzU1NdqwYYPmz5+vqqoqRUZGhvQYP9eyZUtdcskl+uqrr0KulZqaesJRpC5duujVV18NufbPfffdd3r33Xf1t7/9zdG6Dz30UOAoiiRdeuml+u6775STk6MRI0aEXL9jx45av369Kioq5Pf7lZqaqptvvtnxfffY/llWVqbU1NTAeFlZmS6//PIG13VlQGnTpo3atGnjSK3MzEzNmDFD+/fvV1JSkiRp7dq1io+PD2z4DXm8Y4e6/vznPysmJka//vWv61zvTGv/9NNPkhT0/ZZjf9fW1p70fvXt3RijJUuW6I477jij7z+caf1evXopOjpahYWF6tevnyTp8OHD+vbbb9W+fXtHev+57du3KyIiIvBvGkr9uXPn6vHHHw/8XVJSooEDB+rll19WRkZGyPXrcuzftKqqKuTae/fu1dVXX61evXppyZIlJ2xDodZ3SlRUlHr16qW8vLzA6ee1tbXKy8vT2LFjG7WX+jLGaNy4cVq1apXef/99paenh/0xa2trT7p91Ef//v312WefBY2NHDlSnTt31qRJkxwNJ5L0448/6uuvv9btt98ecq2+ffuecDr3rl27Tvqa0lBLlixRUlKSBg8e7Gjdn3766YT9MTIy8pSv6Q3RokULtWjRQgcPHtTbb7+t2bNnO1o/PT1dKSkpysvLCwQSv9+vTZs2hXZ2X4OPvbjEd999Z7Zt22YeeeQRc/7555tt27aZbdu2mfLycmOMMUeOHDHdunUzAwYMMNu3bze5ubmmTZs2ZsqUKQ16vHnz5pmCggJTWFho5s+fb2JjY83TTz8d8vP44YcfTGJiornxxhvN9u3bTWFhoXnwwQdN8+bNzfbt20Ouf8y77757yo9OQjF+/HhzwQUXmLffftt8+eWXZtSoUSYpKckcOHAgpLofffSReeqpp8z27dvN119/bZYvX27atGlj7rjjDoc6D3amH/GcqY0bN5p58+aZbdu2mW+//dbk5eWZPn36mI4dO57yI6oz8f3335uLL77Y9O/f33z//fdm3759gcUpp9vH6mPlypUmOjraLF261Hz++edm9OjRpmXLlkFn2TVUeXl5oDdJZs6cOWbbtm3mu+++C7n2mDFjjNfrNe+//37QHP/0008h1zbGmMmTJ5v169eboqIi8+mnn5rJkycbj8dj3nnnHUfqH8/Jj3gmTpxo3n//fVNUVGQ+/PBDk5WVZVq3bm32798fcu3NmzebZs2amRkzZpjdu3ebFStWmPPOO88sX77cgc6PqqmpMe3atTOTJk1yrOYxI0aMMBdccIFZs2aNKSoqMn/7299M69atzcMPP+xI/dzcXPPWW2+Zb775xrzzzjume/fuJiMjo0FnB55u/5k5c6Zp2bKlef31182nn35qbrjhBpOenm7+7//+r8H9n/UBZcSIEXV+fv7ee+8F1vn222/NoEGDTGxsrGndurWZOHGiOXz4cIMe7/bbbzcJCQkmKirKXHbZZeaFF15w6JkYs2XLFjNgwACTkJBg4uLizFVXXRX4noxT/vmf/9n06dPH0ZrHVFdXm4kTJ5qkpCQTFxdnsrKyzI4dO0KuW1BQYDIyMozX6zUxMTGmS5cu5oknngj5zf1knA4on376qbn66qtNQkKCiY6ONhdddJG59957zffffx9y7SVLlpz0OyROOZN9rD7mzZtn2rVrZ6Kiokzv3r3Nxo0bHenzvffeq7PPESNGhFz7ZHO8ZMmSkGsbY8xdd91l2rdvb6KiokybNm1M//79wxZOjHE2oNx8880mNTXVREVFmQsuuMDcfPPN5quvvnKktjHGrF692nTr1s1ER0ebzp07m8WLFztW2xhj3n77bSPJFBYWOlrXmKOXihg/frxp166diYmJMR06dDB/+MMf6n2Ji5N5+eWXTYcOHUxUVJRJSUkx2dnZ5tChQw2qdbr9p7a21kydOtUkJyeb6Oho079//5DnzGOMQ5esAwAAcMg5f5oxAACwDwEFAABYh4ACAACsQ0ABAADWIaAAAADrEFAAAIB1CCgAAMA6BBQAAGAdAgoAALAOAQUAAFiHgAIAAKxDQAEAANb5f/PeNLsv8UnOAAAAAElFTkSuQmCC",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.xlim(-10.5, 10.5)\n",
|
|
"plt.xticks(np.arange(-10, 11))\n",
|
|
"plt.scatter(f, np.real(X)); # real part -> cosine"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 14,
|
|
"id": "024c165a",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAGdCAYAAADnrPLBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAvmklEQVR4nO3de1xU9b7/8feAMqDBIHLPS6iVmmlqW0Jtn0wSzawedTxZVlqmW45WXsrLaZtZ2zQ92U4rdXdKbevJ2qddba0wUtFHhZdUMjVNC0MTsB3KoCUIfH9/9HO2o6hcZoQvvZ6Px3rUrPWdz/rMwHLerNs4jDFGAAAAlgqo7QYAAABqgjADAACsRpgBAABWI8wAAACrEWYAAIDVCDMAAMBqhBkAAGA1wgwAALBag9pu4GIoLy/XoUOHFBoaKofDUdvtAACASjDGqKioSPHx8QoIOPf+l99EmDl06JCaN29e220AAIBqOHDggJo1a3bO5b+JMBMaGirp1zcjLCyslrsBAACV4Xa71bx5c8/n+Ln8JsLMqUNLYWFhhBkAACxzoVNEOAEYAABYjTADAACsRpgBAABWI8wAAACrEWYAAIDVCDMAAMBqhBkAAGA1wgwAALDab+KmeUBZudGm7AIdLjqh6NBgdUuIUGAA39MFAPWBX/fMrF+/XgMGDFB8fLwcDofee+89r+VDhw6Vw+Hwmvr27es1pqCgQIMHD1ZYWJjCw8M1bNgwHTt2zJ9to55J25Grns+t0d2vbtCjy7N096sb1PO5NUrbkVvbrQEAfMCvYeb48ePq1KmTXn755XOO6du3r3Jzcz3Tm2++6bV88ODB2rlzp9LT07Vy5UqtX79eI0aM8GfbqEfSduQqdelW5Rae8JqfV3hCqUu3EmgAoB7w62Gmfv36qV+/fucd43Q6FRsbW+Gyr7/+Wmlpadq8ebOuvfZaSdK8efN0880367//+78VHx/v855Rf5SVG01bsUumgmVGkkPStBW7dFP7WA45AYDFav0E4IyMDEVHR+vKK69UamqqfvrpJ8+yzMxMhYeHe4KMJCUnJysgIEAbN248Z83i4mK53W6vCb89m7ILztojczojKbfwhDZlF1y8pgAAPlerYaZv37564403tHr1aj333HNat26d+vXrp7KyMklSXl6eoqOjvZ7ToEEDRUREKC8v75x1Z8yYIZfL5ZmaN2/u19eBuulw0bmDTHXGAQDqplq9mmnQoEGe/7/66qvVsWNHtW7dWhkZGerdu3e1606ePFnjxo3zPHa73QSa36Do0GCfjgMA1E21fpjpdK1atVJkZKT27dsnSYqNjdXhw4e9xpSWlqqgoOCc59lIv56HExYW5jXht6dbQoTiXME619kwDklxrl8v0wYA2KtOhZmDBw/qp59+UlxcnCQpKSlJR48e1ZYtWzxj1qxZo/LyciUmJtZWm7BEYIBDUwe0l6SzAs2px1MHtOfkXwCwnF/DzLFjx5SVlaWsrCxJUnZ2trKyspSTk6Njx47p8ccf14YNG7R//36tXr1at912m9q0aaOUlBRJUrt27dS3b18NHz5cmzZt0meffabRo0dr0KBBXMmESunbIU7z7+2iWJf3oaRYV7Dm39tFfTvE1VJnAABfcRhjKrpy1ScyMjLUq1evs+YPGTJE8+fP1+23365t27bp6NGjio+PV58+ffTMM88oJibGM7agoECjR4/WihUrFBAQoDvvvFNz587VJZdcUuk+3G63XC6XCgsLOeT0G8UdgAHAPpX9/PZrmKkrCDMAANinsp/fdeqcGQAAgKoizAAAAKsRZgAAgNUIMwAAwGqEGQAAYDXCDAAAsBphBgAAWI0wAwAArEaYAQAAViPMAAAAqxFmAACA1QgzAADAaoQZAABgNcIMAACwGmEGAABYjTADAACsRpgBAABWI8wAAACrEWYAAIDVCDMAAMBqhBkAAGA1wgwAALAaYQYAAFiNMAMAAKxGmAEAAFYjzAAAAKsRZgAAgNUIMwAAwGqEGQAAYDXCDAAAsBphBgAAWI0wAwAArEaYAQAAViPMAAAAqxFmAACA1QgzAADAaoQZAABgNcIMAACwGmEGAABYjTADAACsRpgBAABWI8wAAACrEWYAAIDVCDMAAMBqhBkAAGA1v4aZ9evXa8CAAYqPj5fD4dB7773ntdwYoyeffFJxcXEKCQlRcnKy9u7d6zWmoKBAgwcPVlhYmMLDwzVs2DAdO3bMn20DAACL+DXMHD9+XJ06ddLLL79c4fJZs2Zp7ty5WrBggTZu3KjGjRsrJSVFJ06c8IwZPHiwdu7cqfT0dK1cuVLr16/XiBEj/Nk2AACwiMMYYy7KihwOvfvuu7r99tsl/bpXJj4+XuPHj9djjz0mSSosLFRMTIwWL16sQYMG6euvv1b79u21efNmXXvttZKktLQ03XzzzTp48KDi4+MrtW632y2Xy6XCwkKFhYX55fUBAADfquznd62dM5Odna28vDwlJyd75rlcLiUmJiozM1OSlJmZqfDwcE+QkaTk5GQFBARo48aN56xdXFwst9vtNQEAgPqp1sJMXl6eJCkmJsZrfkxMjGdZXl6eoqOjvZY3aNBAERERnjEVmTFjhlwul2dq3ry5j7sHAAB1Rb28mmny5MkqLCz0TAcOHKjtlgAAgJ/UWpiJjY2VJOXn53vNz8/P9yyLjY3V4cOHvZaXlpaqoKDAM6YiTqdTYWFhXhMAAKifai3MJCQkKDY2VqtXr/bMc7vd2rhxo5KSkiRJSUlJOnr0qLZs2eIZs2bNGpWXlysxMfGi9wwAAOqeBv4sfuzYMe3bt8/zODs7W1lZWYqIiFCLFi00ZswY/elPf9Lll1+uhIQETZkyRfHx8Z4rntq1a6e+fftq+PDhWrBggU6ePKnRo0dr0KBBlb6SCQAA1G9+DTNffPGFevXq5Xk8btw4SdKQIUO0ePFiTZgwQcePH9eIESN09OhR9ezZU2lpaQoODvY8Z9myZRo9erR69+6tgIAA3XnnnZo7d64/2wYAABa5aPeZqU3cZwYAAPvU+fvMAAAA+AJhBgAAWI0wAwAArEaYAQAAViPMAAAAqxFmAACA1QgzAADAaoQZAABgNcIMAACwGmEGAABYjTADAACsRpgBAABWI8wAAACrEWYAAIDVCDMAAMBqhBkAAGA1wgwAALAaYQYAAFiNMAMAAKxGmAEAAFYjzAAAAKsRZgAAgNUIMwAAwGqEGQAAYDXCDAAAsBphBgAAWI0wAwAArEaYAQAAViPMAAAAqxFmAACA1QgzAADAaoQZAABgNcIMAACwGmEGAABYjTADAACsRpgBAABWI8wAAACrEWYAAIDVCDMAAMBqhBkAAGA1wgwAALAaYQYAAFiNMAMAAKxGmAEAAFYjzAAAAKvVeph56qmn5HA4vKa2bdt6lp84cUKjRo1S06ZNdckll+jOO+9Ufn5+LXYMAADqkloPM5J01VVXKTc31zN9+umnnmVjx47VihUr9Le//U3r1q3ToUOHdMcdd9RitwAAoC5pUNsNSFKDBg0UGxt71vzCwkK99tpr+t///V/deOONkqRFixapXbt22rBhg6677rqL3SoAAKhj6sSemb179yo+Pl6tWrXS4MGDlZOTI0nasmWLTp48qeTkZM/Ytm3bqkWLFsrMzDxnveLiYrndbq8JAADUT7UeZhITE7V48WKlpaVp/vz5ys7O1vXXX6+ioiLl5eUpKChI4eHhXs+JiYlRXl7eOWvOmDFDLpfLMzVv3tzPrwIAANSWWj/M1K9fP8//d+zYUYmJiWrZsqXefvtthYSEVKvm5MmTNW7cOM9jt9tNoAEAoJ6q9T0zZwoPD9cVV1yhffv2KTY2ViUlJTp69KjXmPz8/ArPsTnF6XQqLCzMawIAAPVTnQszx44d07fffqu4uDh17dpVDRs21OrVqz3L9+zZo5ycHCUlJdVilwAAoK6o9cNMjz32mAYMGKCWLVvq0KFDmjp1qgIDA3X33XfL5XJp2LBhGjdunCIiIhQWFqaHH35YSUlJXMkEAAAk1YEwc/DgQd1999366aefFBUVpZ49e2rDhg2KioqSJL3wwgsKCAjQnXfeqeLiYqWkpOiVV16p5a4BAEBd4TDGmNpuwt/cbrdcLpcKCws5fwYAAEtU9vO7zp0zAwAAUBWEGQAAYDXCDAAAsBphBgAAWI0wAwAArFbrl2YDOL+ycqNN2QU6XHRC0aHB6pYQocAAR223BQB1BmEGqMPSduRq2opdyi084ZkX5wrW1AHt1bdDXC12BgB1B4eZgDoqbUeuUpdu9QoykpRXeEKpS7cqbUduLXUGAHULYQaog8rKjaat2KWK7mh5at60FbtUVl7v73kJABdEmAHqoE3ZBWftkTmdkZRbeEKbsgsuXlMAUEcRZoA66HDRuYNMdcYBQH1GmAHqoOjQYJ+OA4D6jDAD1EHdEiIU5wrWuS7AdujXq5q6JURczLYAoE4izAB1UGCAQ1MHtJekswLNqcdTB7TnfjMAIMIMUGf17RCn+fd2UazL+1BSrCtY8+/twn1mAOD/46Z5QB3Wt0Ocbmofyx2AAeA8CDNAHRcY4FBS66a13QYA1FkcZgIAAFYjzAAAAKsRZgAAgNUIMwAAwGqEGQAAYDXCDAAAsBphBgAAWI0wAwAArEaYAQAAViPMAAAAqxFmAACA1QgzAADAaoQZAABgNcIMAACwGmEGAABYjTADAACsRpgBAABWI8wAAACrEWYAAIDVCDMAAMBqhBkAAGA1wgwAALAaYQYAAFiNMAMAAKxGmAEAAFYjzAAAAKsRZgAAgNUa1HYDdU1ZudGm7AIdLjqh6NBgdUuIUGCAo87X9nd9m3v3N3qvn/Vt7t3f6L1+1re5d2vCzMsvv6zZs2crLy9PnTp10rx589StWzefriNtR66mrdil3MITnnlxrmBNHdBefTvE1dna/q5vc+/+Ru/1s77NvfsbvdfP+jb3LkkOY4ypcRU/e+utt3T//fdrwYIFSkxM1J///Gf97W9/0549exQdHX3B57vdbrlcLhUWFiosLKzCMWk7cpW6dKvOfDNOZcb593ap9hvuz9r+rm9z7/5G7/Wzvs29+xu918/6dbn3ynx+S5acMzNnzhwNHz5cDzzwgNq3b68FCxaoUaNGev31131Sv6zcaNqKXWe90ZI886at2KWy8qrnPn/W9nd9m3v3N3qvn/Vt7t3f6L1+1re599PV+TBTUlKiLVu2KDk52TMvICBAycnJyszMrPA5xcXFcrvdXtP5bMou8Nr1dSYjKbfwhDZlF1S5f3/W9nd9m3v3N3qvn/Vt7t3f6L1+1re599PV+TDzz3/+U2VlZYqJifGaHxMTo7y8vAqfM2PGDLlcLs/UvHnz867jcNG53+jqjLtYtf1d3+be/Y3e62d9m3v3N3qvn/Vt7v10dT7MVMfkyZNVWFjomQ4cOHDe8dGhwZWqW9lxF6u2v+vb3Lu/0Xv9rG9z7/5G7/Wzvs29n67Oh5nIyEgFBgYqPz/fa35+fr5iY2MrfI7T6VRYWJjXdD7dEiIU5wrWuS4Qc+jXs667JURUuX9/1vZ3fZt79zd6r5/1be7d3+i9fta3uffT1fkwExQUpK5du2r16tWeeeXl5Vq9erWSkpJ8so7AAIemDmgvSWe94aceTx3QvlrXw/uztr/r29y7v9F7/axvc+/+Ru/1s77NvZ+uzocZSRo3bpxeffVVLVmyRF9//bVSU1N1/PhxPfDAAz5bR98OcZp/bxfFurx3dcW6gmt8WZo/a/u7vs29+xu918/6Nvfub/ReP+vb3PspVtxnRpJeeuklz03zrrnmGs2dO1eJiYmVem5lr1OXuLtibdS+GPX9id7rZ32be/c3eq+f9eti75X9/LYmzNREVcIMAACoG+rVTfMAAADOhTADAACsRpgBAABWI8wAAACrEWYAAIDVCDMAAMBqhBkAAGA1wgwAALAaYQYAAFiNMAMAAKxGmAEAAFYjzAAAAKsRZgAAgNUIMwAAwGqEGQAAYDXCDAAAsBphBgAAWI0wAwAArEaYAQAAViPMAAAAqxFmAACA1QgzAADAaoQZAABgNcIMAACwGmEGAABYjTADAACsRpgBAABWI8wAAACrNajtBgAAvldWbrQpu0CHi04oOjRY3RIiFBjgqO22AL8gzABAPZO2I1fTVuxSbuEJz7w4V7CmDmivvh3iarEzwD84zAQA9UjajlylLt3qFWQkKa/whFKXblXajtxa6gzwH8IMANQTZeVG01bskqlg2al501bsUll5RSMAexFmAKCe2JRdcNYemdMZSbmFJ7Qpu+DiNQVcBIQZAKgnDhedO8hUZxxgC8IMANQT0aHBPh0H2IIwAwD1RLeECMW5gnWuC7Ad+vWqpm4JERezLcDvCDMAUE8EBjg0dUB7STor0Jx6PHVAe+43g3qHMAMA9UjfDnGaf28Xxbq8DyXFuoI1/94u3GcG9RI3zQOAeqZvhzjd1D6WOwDjN4MwAwD1UGCAQ0mtm9Z2G8BFwWEmAABgNcIMAACwGmEGAABYjTADAACsRpgBAABWq9Uwc9lll8nhcHhNM2fO9Bqzfft2XX/99QoODlbz5s01a9asWuoWAADURbV+afbTTz+t4cOHex6HhoZ6/t/tdqtPnz5KTk7WggUL9NVXX+nBBx9UeHi4RowYURvtAgCAOqbWw0xoaKhiY2MrXLZs2TKVlJTo9ddfV1BQkK666iplZWVpzpw5hBkAACCpDpwzM3PmTDVt2lSdO3fW7NmzVVpa6lmWmZmp3//+9woKCvLMS0lJ0Z49e3TkyJFz1iwuLpbb7faaAABA/VSre2YeeeQRdenSRREREfr88881efJk5ebmas6cOZKkvLw8JSQkeD0nJibGs6xJkyYV1p0xY4amTZvm3+YBAECd4PM9M5MmTTrrpN4zp927d0uSxo0bpxtuuEEdO3bUyJEj9fzzz2vevHkqLi6uUQ+TJ09WYWGhZzpw4IAvXhoAAKiDfL5nZvz48Ro6dOh5x7Rq1arC+YmJiSotLdX+/ft15ZVXKjY2Vvn5+V5jTj0+13k2kuR0OuV0OqvWOAAAsJLPw0xUVJSioqKq9dysrCwFBAQoOjpakpSUlKQnnnhCJ0+eVMOGDSVJ6enpuvLKK895iAkAAPy21NoJwJmZmfrzn/+sL7/8Ut99952WLVumsWPH6t577/UElXvuuUdBQUEaNmyYdu7cqbfeeksvvviixo0bV1ttAwCAOqbWTgB2Op1avny5nnrqKRUXFyshIUFjx471Cioul0sff/yxRo0apa5duyoyMlJPPvkkl2UDAAAPhzHG1HYT/uZ2u+VyuVRYWKiwsLDabgcAAFRCZT+/a/0+MwAAADVBmAEAAFYjzAAAAKsRZgAAgNUIMwAAwGqEGQAAYDXCDAAAsBphBgAAWI0wAwAArEaYAQAAViPMAAAAqxFmAACA1QgzAADAaoQZAABgNcIMAACwGmEGAABYjTADAACsRpgBAABWI8wAAACrEWYAAIDVCDMAAMBqhBkAAGA1wgwAALAaYQYAAFiNMAMAAKxGmAEAAFYjzAAAAKsRZgAAgNUIMwAAwGqEGQAAYDXCDAAAsBphBgAAWI0wAwAArEaYAQAAViPMAAAAqxFmAACA1QgzAADAaoQZAABgNcIMAACwGmEGAABYjTADAACsRpgBAABWI8wAAACrEWYAAIDVCDMAAMBqfgsz06dPV/fu3dWoUSOFh4dXOCYnJ0f9+/dXo0aNFB0drccff1ylpaVeYzIyMtSlSxc5nU61adNGixcv9lfLAADAQn4LMyUlJRo4cKBSU1MrXF5WVqb+/furpKREn3/+uZYsWaLFixfrySef9IzJzs5W//791atXL2VlZWnMmDF66KGHtGrVKn+1DQAALOMwxhh/rmDx4sUaM2aMjh496jX/o48+0i233KJDhw4pJiZGkrRgwQJNnDhRP/74o4KCgjRx4kR98MEH2rFjh+d5gwYN0tGjR5WWllbpHtxut1wulwoLCxUWFuaT1wUAAPyrsp/ftXbOTGZmpq6++mpPkJGklJQUud1u7dy50zMmOTnZ63kpKSnKzMw8b+3i4mK53W6vCQAA1E+1Fmby8vK8gowkz+O8vLzzjnG73frll1/OWXvGjBlyuVyeqXnz5j7uHgAA1BVVCjOTJk2Sw+E477R7925/9VppkydPVmFhoWc6cOBAbbcEAAD8pEFVBo8fP15Dhw4975hWrVpVqlZsbKw2bdrkNS8/P9+z7NR/T807fUxYWJhCQkLOWdvpdMrpdFaqDwAAYLcqhZmoqChFRUX5ZMVJSUmaPn26Dh8+rOjoaElSenq6wsLC1L59e8+YDz/80Ot56enpSkpK8kkPAADAfn47ZyYnJ0dZWVnKyclRWVmZsrKylJWVpWPHjkmS+vTpo/bt2+u+++7Tl19+qVWrVumPf/yjRo0a5dmrMnLkSH333XeaMGGCdu/erVdeeUVvv/22xo4d66+2AQCAZfx2afbQoUO1ZMmSs+avXbtWN9xwgyTp+++/V2pqqjIyMtS4cWMNGTJEM2fOVIMG/9phlJGRobFjx2rXrl1q1qyZpkyZcsFDXWfi0mwAAOxT2c9vv99npi4gzAAAYJ86f58ZAAAAXyDMAAAAqxFmAACA1QgzAADAaoQZAABgNcIMAACwGmEGAABYjTADAACsRpgBAABWI8wAAACrEWYAAIDVCDMAAMBqhBkAAGA1wgwAALAaYQYAAFiNMAMAAKxGmAEAAFYjzAAAAKsRZgAAgNUIMwAAwGqEGQAAYDXCDAAAsBphBgAAWI0wAwAArEaYAQAAViPMAAAAqxFmAACA1QgzAADAaoQZAABgNcIMAACwGmEGAABYjTADAACsRpgBAABWI8wAAACrEWYAAIDVCDMAAMBqhBkAAGA1wgwAALAaYQYAAFiNMAMAAKxGmAEAAFYjzAAAAKsRZgAAgNUIMwAAwGoNarsBAABOV1ZutCm7QIeLTig6NFjdEiIUGOCo7bZQh/ltz8z06dPVvXt3NWrUSOHh4RWOcTgcZ03Lly/3GpORkaEuXbrI6XSqTZs2Wrx4sb9aBgDUsrQduer53Brd/eoGPbo8S3e/ukE9n1ujtB25td0a6jC/hZmSkhINHDhQqamp5x23aNEi5ebmeqbbb7/dsyw7O1v9+/dXr169lJWVpTFjxuihhx7SqlWr/NU2AKCWpO3IVerSrcotPOE1P6/whFKXbiXQ4Jz8dphp2rRpknTBPSnh4eGKjY2tcNmCBQuUkJCg559/XpLUrl07ffrpp3rhhReUkpLi034BALWnrNxo2opdMhUsM5Ickqat2KWb2sdyyAlnqfUTgEeNGqXIyEh169ZNr7/+uoz5169yZmamkpOTvcanpKQoMzPzvDWLi4vldru9JgBA3bUpu+CsPTKnM5JyC09oU3bBxWsK1qjVE4Cffvpp3XjjjWrUqJE+/vhj/ed//qeOHTumRx55RJKUl5enmJgYr+fExMTI7Xbrl19+UUhISIV1Z8yY4dkzBACo+w4XnTvIVGccfluqtGdm0qRJFZ60e/q0e/fuStebMmWKevTooc6dO2vixImaMGGCZs+eXeUXcabJkyersLDQMx04cKDGNQEA/hMdGuzTcfhtqdKemfHjx2vo0KHnHdOqVatqN5OYmKhnnnlGxcXFcjqdio2NVX5+vteY/Px8hYWFnXOvjCQ5nU45nc5q9wEAuLi6JUQozhWsvMITFZ4345AU6/r1Mm3gTFUKM1FRUYqKivJXL8rKylKTJk08QSQpKUkffvih15j09HQlJSX5rQcAwMUXGODQ1AHtlbp0qxySV6A5dbrv1AHtOfkXFfLbOTM5OTkqKChQTk6OysrKlJWVJUlq06aNLrnkEq1YsUL5+fm67rrrFBwcrPT0dD377LN67LHHPDVGjhypl156SRMmTNCDDz6oNWvW6O2339YHH3zgr7YBALWkb4c4zb+3i6at2OV1MnCsK1hTB7RX3w5xtdgd6jKHOf3yIR8aOnSolixZctb8tWvX6oYbblBaWpomT56sffv2yRijNm3aKDU1VcOHD1dAwL9O5cnIyNDYsWO1a9cuNWvWTFOmTLngoa4zud1uuVwuFRYWKiwsrKYvDQDgR9wBGKdU9vPbb2GmLiHMAABgn8p+ftf6fWYAAABqgjADAACsRpgBAABWI8wAAACrEWYAAIDVCDMAAMBqhBkAAGA1wgwAALAaYQYAAFjNb9/NVJecusmx2+2u5U4AAEBlnfrcvtCXFfwmwkxRUZEkqXnz5rXcCQAAqKqioiK5XK5zLv9NfDdTeXm5Dh06pNDQUDkcF/6yMrfbrebNm+vAgQM+/y4nf9b2d32be/d3fXqvn/Vt7t3f9em9ftava70bY1RUVKT4+HivL6E+029iz0xAQICaNWtW5eeFhYX57Ysp/Vnb3/Vt7t3f9em9fta3uXd/16f3+lm/LvV+vj0yp3ACMAAAsBphBgAAWI0wUwGn06mpU6fK6XRaVdvf9W3u3d/16b1+1re5d3/Xp/f6Wd/W3n8TJwADAID6iz0zAADAaoQZAABgNcIMAACwGmEGAABYjTBzmunTp6t79+5q1KiRwsPDKxyTk5Oj/v37q1GjRoqOjtbjjz+u0tLSaq1v69atuummmxQeHq6mTZtqxIgROnbsWA1egbdvvvlGt912myIjIxUWFqaePXtq7dq1PqmdkZEhh8NR4bR582afrOODDz5QYmKiQkJC1KRJE91+++0+qStJl1122Vl9z5w502f1TykuLtY111wjh8OhrKwsn9S89dZb1aJFCwUHBysuLk733XefDh065JPa+/fv17Bhw5SQkKCQkBC1bt1aU6dOVUlJiU/qV2Ybq4qXX35Zl112mYKDg5WYmKhNmzbVvElJ69ev14ABAxQfHy+Hw6H33nvPJ3VPmTFjhn73u98pNDRU0dHRuv3227Vnzx6f1J4/f746duzouSlZUlKSPvroI5/UrsjMmTPlcDg0ZswYn9R76qmnzto227Zt65PakvTDDz/o3nvvVdOmTRUSEqKrr75aX3zxhU9qV/TvisPh0KhRo2pcu6ysTFOmTPHaNp955pkLfmdRVRQVFWnMmDFq2bKlQkJC1L1792r/e36hbcgYoyeffFJxcXEKCQlRcnKy9u7dW+3eCTOnKSkp0cCBA5Wamlrh8rKyMvXv318lJSX6/PPPtWTJEi1evFhPPvlkldd16NAhJScnq02bNtq4caPS0tK0c+dODR06tIav4l9uueUWlZaWas2aNdqyZYs6deqkW265RXl5eTWu3b17d+Xm5npNDz30kBISEnTttdfWuP4777yj++67Tw888IC+/PJLffbZZ7rnnntqXPd0Tz/9tFf/Dz/8sE/rS9KECRMUHx/v05q9evXS22+/rT179uidd97Rt99+q3//93/3Se3du3ervLxcCxcu1M6dO/XCCy9owYIF+q//+i+f1L/QNlYVb731lsaNG6epU6dq69at6tSpk1JSUnT48OEa1z5+/Lg6deqkl19+uca1KrJu3TqNGjVKGzZsUHp6uk6ePKk+ffro+PHjNa7drFkzzZw5U1u2bNEXX3yhG2+8Ubfddpt27tzpg869bd68WQsXLlTHjh19Wveqq67y2jY//fRTn9Q9cuSIevTooYYNG+qjjz7Srl279Pzzz6tJkyY+qb9582avvtPT0yVJAwcOrHHt5557TvPnz9dLL72kr7/+Ws8995xmzZqlefPm1bj2KQ899JDS09P117/+VV999ZX69Omj5ORk/fDDD1WudaFtaNasWZo7d64WLFigjRs3qnHjxkpJSdGJEyeq17zBWRYtWmRcLtdZ8z/88EMTEBBg8vLyPPPmz59vwsLCTHFxcZXWsXDhQhMdHW3Kyso887Zv324kmb1791a791N+/PFHI8msX7/eM8/tdhtJJj09vcb1z1RSUmKioqLM008/XeNaJ0+eNJdeeqn5n//5Hx90VrGWLVuaF154wW/1jfn196Vt27Zm586dRpLZtm2bX9bz/vvvG4fDYUpKSvxSf9asWSYhIcGnNc+1jVVFt27dzKhRozyPy8rKTHx8vJkxY0YNu/Mmybz77rs+rXmmw4cPG0lm3bp1fqnfpEkTn29PRUVF5vLLLzfp6enm3/7t38yjjz7qk7pTp041nTp18kmtM02cONH07NnTL7Ur8uijj5rWrVub8vLyGtfq37+/efDBB73m3XHHHWbw4ME1rm2MMT///LMJDAw0K1eu9JrfpUsX88QTT9So9pnbUHl5uYmNjTWzZ8/2zDt69KhxOp3mzTffrNY62DNTBZmZmbr66qsVExPjmZeSkiK3213lv3qKi4sVFBTk9cVZISEhkuSTv0KaNm2qK6+8Um+88YaOHz+u0tJSLVy4UNHR0eratWuN65/pH//4h3766Sc98MADNa61detW/fDDDwoICFDnzp0VFxenfv36aceOHT7o9F9mzpyppk2bqnPnzpo9e3a1DxdWJD8/X8OHD9df//pXNWrUyGd1z1RQUKBly5ape/fuatiwoV/WUVhYqIiICL/Urq6SkhJt2bJFycnJnnkBAQFKTk5WZmZmLXZWPYWFhZLk8/e5rKxMy5cv1/Hjx5WUlOTT2qNGjVL//v29fga+snfvXsXHx6tVq1YaPHiwcnJyfFL3H//4h6699loNHDhQ0dHR6ty5s1599VWf1D5TSUmJli5dqgcffLBSX3B8Id27d9fq1av1zTffSJK+/PJLffrpp+rXr1+Na0tSaWmpysrKFBwc7DU/JCTEZ3vGTsnOzlZeXp7X747L5VJiYmK1t1/CTBXk5eV5BRlJnsdVPXRz4403Ki8vT7Nnz1ZJSYmOHDmiSZMmSZJyc3Nr3KvD4dAnn3yibdu2KTQ0VMHBwZozZ47S0tJ8tkv1dK+99ppSUlKq9YWeZ/ruu+8k/Xrs/I9//KNWrlypJk2a6IYbblBBQUGN60vSI488ouXLl2vt2rX6wx/+oGeffVYTJkzwSW1jjIYOHaqRI0f65JBbRSZOnKjGjRuradOmysnJ0fvvv++X9ezbt0/z5s3TH/7wB7/Ur65//vOfKisrq3B79MVh1IupvLxcY8aMUY8ePdShQwef1Pzqq690ySWXyOl0auTIkXr33XfVvn17n9SWpOXLl2vr1q2aMWOGz2qekpiYqMWLFystLU3z589Xdna2rr/+ehUVFdW49nfffaf58+fr8ssv16pVq5SamqpHHnlES5Ys8UHn3t577z0dPXrUZ6cOTJo0SYMGDVLbtm3VsGFDde7cWWPGjNHgwYN9Uj80NFRJSUl65plndOjQIZWVlWnp0qXKzMz0yWfS6U5toz7dfmu078gCEydONJLOO3399ddezznXLvDhw4ebPn36eM07fvy4kWQ+/PDDKq9v2bJlJiYmxgQGBpqgoCDz2GOPmZiYGDNz5swav57y8nJz6623mn79+plPP/3UbNmyxaSmpppLL73UHDp0yKfv14EDB0xAQID5v//7P5/8LJYtW2YkmYULF3qee+LECRMZGWkWLFjg095Pee2110yDBg3MiRMnalz/xRdfND169DClpaXGGGOys7MveJipqr3/+OOPZs+ePebjjz82PXr0MDfffPN5d2VX5705ePCgad26tRk2bNg561a3dk0PM/3www9Gkvn888+95j/++OOmW7du1a5bEfn5MNPIkSNNy5YtzYEDB3xWs7i42Ozdu9d88cUXZtKkSSYyMtLs3LnTJ7VzcnJMdHS0+fLLLz3zfHmY6UxHjhwxYWFhPjlM1rBhQ5OUlOQ17+GHHzbXXXddjWufqU+fPuaWW27xWb0333zTNGvWzLz55ptm+/bt5o033jARERFm8eLFPlvHvn37zO9//3sjyQQGBprf/e53ZvDgwaZt27Y1qnvmNvTZZ58ZSWd9Fg0cOND8x3/8R7XW0aDyscdO48ePv2AybtWqVaVqxcbGnnW1RH5+vmdZVdd3zz336J577lF+fr4aN24sh8OhOXPmnLefytZfs2aNVq5cqSNHjni+Zv2VV15Renq6lixZ4tkLVN36p1u0aJGaNm2qW2+99bzPq2ztU38FnP6XpNPpVKtWrc67u7kmP+vExESVlpZq//79uvLKK2tUf82aNcrMzDzru0euvfZaDR48uMK/Aqvae2RkpCIjI3XFFVeoXbt2at68uTZs2HDOQwlVrX/o0CH16tVL3bt311/+8pfzPs+X21hlRUZGKjAw0LP9nZKfn+/ZFm0wevRorVy5UuvXr/fJXs1TgoKC1KZNG0lS165dtXnzZr344otauHBhjWtv2bJFhw8fVpcuXTzzysrKtH79er300ksqLi5WYGBgjddzSnh4uK644grt27evxrXi4uLO2kPVrl07vfPOOzWufbrvv/9en3zyif7+97/7rObjjz/u2TsjSVdffbW+//57zZgxQ0OGDPHJOlq3bq1169bp+PHjcrvdiouL01133eXz7ffUNpqfn6+4uDjP/Pz8fF1zzTXVqlnvw0xUVJSioqJ8UispKUnTp0/X4cOHFR0dLUlKT09XWFiYZwOpzvpO7Wp7/fXXFRwcrJtuuumcYytb/+eff5Ykr3NyTj0uLy+vcf1TjDFatGiR7r///gues1HZ2l27dpXT6dSePXvUs2dPSdLJkye1f/9+tWzZ0me9ny4rK0sBAQGen2tN6s+dO1d/+tOfPI8PHTqklJQUvfXWW0pMTKxR7Yqc+nkWFxefc0xV6v/www/q1auXunbtqkWLFp31O1ST2r4SFBSkrl27avXq1Z5L9svLy7V69WqNHj36ovZSHcYYPfzww3r33XeVkZGhhIQEv66vvLz8vL8fVdG7d2999dVXXvMeeOABtW3bVhMnTvRpkJGkY8eO6dtvv9V9991X41o9evQ46xL4b7755rz/rlTHokWLFB0drf79+/us5s8//3zWthgYGHjef8+rq3HjxmrcuLGOHDmiVatWadasWT6tn5CQoNjYWK1evdoTXtxutzZu3Fj9Kx2rv+Oo/vn+++/Ntm3bzLRp08wll1xitm3bZrZt22aKioqMMcaUlpaaDh06mD59+pisrCyTlpZmoqKizOTJk6u1vnnz5pktW7aYPXv2mJdeesmEhISYF1980Sev5ccffzRNmzY1d9xxh8nKyjJ79uwxjz32mGnYsKHJysryyTqMMeaTTz457+Gb6nr00UfNpZdealatWmV2795thg0bZqKjo01BQUGNa3/++efmhRdeMFlZWebbb781S5cuNVFRUeb+++/3Qednq8xhpsrasGGDmTdvntm2bZvZv3+/Wb16tenevbtp3br1eQ+RVdbBgwdNmzZtTO/evc3BgwdNbm6uZ/KFC21jVbF8+XLjdDrN4sWLza5du8yIESNMeHi419WG1VVUVOTpTZKZM2eO2bZtm/n+++9rXNsYY1JTU43L5TIZGRle7/HPP/9c49qTJk0y69atM9nZ2Wb79u1m0qRJxuFwmI8//tgHnVfMl4eZxo8fbzIyMkx2drb57LPPTHJysomMjDSHDx+uce1NmzaZBg0amOnTp5u9e/eaZcuWmUaNGpmlS5f6oPNflZWVmRYtWpiJEyf6rKYxxgwZMsRceumlZuXKlSY7O9v8/e9/N5GRkWbChAk+W0daWpr56KOPzHfffWc+/vhj06lTJ5OYmFitKyUvtA3NnDnThIeHm/fff99s377d3HbbbSYhIcH88ssv1eqdMHOaIUOGVHi8f+3atZ4x+/fvN/369TMhISEmMjLSjB8/3pw8ebJa67vvvvtMRESECQoKMh07djRvvPGGj17JrzZv3mz69OljIiIiTGhoqLnuuus85/b4yt133226d+/u05rG/Hqp9/jx4010dLQJDQ01ycnJZseOHT6pvWXLFpOYmGhcLpcJDg427dq1M88++6xPwkBFfBlmtm/fbnr16mUiIiKM0+k0l112mRk5cqQ5ePBgzRs1v57LUtE24Ku/eyqzjVXFvHnzTIsWLUxQUJDp1q2b2bBhg0/6XLt2bYV9DhkyxCf1z/UeL1q0qMa1H3zwQdOyZUsTFBRkoqKiTO/evf0aZIzxbZi56667TFxcnAkKCjKXXnqpueuuu8y+fft8UtsYY1asWGE6dOhgnE6nadu2rfnLX/7is9rGGLNq1SojyezZs8endd1ut3n00UdNixYtTHBwsGnVqpV54oknqnxbkPN56623TKtWrUxQUJCJjY01o0aNMkePHq1WrQttQ+Xl5WbKlCkmJibGOJ1O07t37xq9Zw5jfHj7QAAAgIuMS7MBAIDVCDMAAMBqhBkAAGA1wgwAALAaYQYAAFiNMAMAAKxGmAEAAFYjzAAAAKsRZgAAgNUIMwAAwGqEGQAAYDXCDAAAsNr/A0bA3UyJIZXgAAAAAElFTkSuQmCC",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.xlim(-10.5, 10.5)\n",
|
|
"plt.xticks(np.arange(-10, 11))\n",
|
|
"plt.scatter(f, np.imag(X)); # imaginary part -> sine"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "115fbb27",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "skip"
|
|
}
|
|
},
|
|
"source": [
|
|
"We can undo the Fourier transformation using the so-called _inverse transformation_:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "624b22e7",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"$$\n",
|
|
"\\begin{align*}\n",
|
|
"x[t] = \\frac{1}{n} \\sum_{m=0}^{n-1} X[m] \\exp\\!\\left(j 2\\pi \\frac{m}{n} t\\right)\n",
|
|
"\\end{align*}\n",
|
|
"$$"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "40a18e0a",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"```{note}\n",
|
|
"The only difference is a factor of $\\frac{1}{n}$ and the sign in $\\exp$.\n",
|
|
"```"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "9f70ff44",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "skip"
|
|
}
|
|
},
|
|
"source": [
|
|
"The Fourier transformation is _linear_:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "26d84954",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"$$\n",
|
|
"a \\cdot x[t] + b \\cdot y[t] \\,\\circ\\!\\!-\\!\\!\\bullet\\, a \\cdot X[f] + b \\cdot Y[f] \\quad (a, b \\in \\mathbb{C})\n",
|
|
"$$"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "d4df26ce",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "skip"
|
|
}
|
|
},
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "b7c974d1",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"$$\n",
|
|
"x[a \\cdot t] \\,\\circ\\!\\!-\\!\\!\\bullet\\, \\frac{1}{|a|}X\\left[\\frac{f}{a}\\right]\n",
|
|
"$$"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "14c90553",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "slide"
|
|
}
|
|
},
|
|
"source": [
|
|
"## Convolution"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "de295080",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "skip"
|
|
}
|
|
},
|
|
"source": [
|
|
"The so-called *convolution* is an operation that combines two signals.\n",
|
|
"It looks like this:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "4537b596",
|
|
"metadata": {},
|
|
"source": [
|
|
"```{figure} img/convolution.gif\n",
|
|
"---\n",
|
|
"name: fig:convolution.en\n",
|
|
"---\n",
|
|
"Convolution\n",
|
|
"([source](https://commons.wikimedia.org/wiki/File:Convolution_of_spiky_function_with_box.gif), [cc](https://creativecommons.org/licenses/by-sa/3.0/deed.en))\n",
|
|
"```"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "c46c64df",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "skip"
|
|
}
|
|
},
|
|
"source": [
|
|
"Formally:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "aab54caa",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"```{prf:definition} Convolution\n",
|
|
"For signals $x$ and $y$, we call\n",
|
|
"\n",
|
|
"$$\n",
|
|
"\\begin{align*}\n",
|
|
"(x * y)[t] &\\mathrel{\\vcenter{:}}= \\sum_{m=-\\infty}^\\infty x[m] \\cdot y[t - m]\n",
|
|
"\\end{align*}\n",
|
|
"$$\n",
|
|
"\n",
|
|
"the _discrete convolution_ of $x$ with $y$.\n",
|
|
"```"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "fc676901",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"Intuitively:\n",
|
|
"- $y$ is mirrored and shifted by $t$\n",
|
|
"- Then, $(x * y)[t]$ equals the area where $x$ and $y$ overlap."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "24f005b4",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"### Example"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "94cdfcf2",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "skip"
|
|
}
|
|
},
|
|
"source": [
|
|
"Here is a simple signal $x$:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"id": "bb52d60c",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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7RtSud8IIhLRlZGEhASlpaWFjH3961/XN77xjeB4Xl6e7rnnHpWUlEiSCgsLtWrVKr3xxhtav369ysvLdebMGf3zP//zOE0BADCZ1qWlqPTpDL36i/Mhi1ndLoe2b0jVurQUg90hFo37HVg7OjoUF/eHCy5ZWVk6ePCgXn75Zb300kuaP3++Dh8+fEOoAQDEjnVpKVqb6uYOrBgXNsuybvkvg/v9frlcLvl8PjmdTtPtAACAURjt+zc/lAcAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAqIjCSGlpqdLT0+V0OuV0OpWZman3338/bH1ZWZlsNlvI5nA4xtw0AACYOqZFUjx79mzt3LlT8+fPl2VZ+pd/+Rdt3LhRzc3NWrx48bD7OJ1OXbhwIfjYZrONrWMAADClRBRGNmzYEPL47/7u71RaWqrGxsawYcRms8ntdkffIQAAmNKiXjMyODio8vJy9ff3KzMzM2xdX1+f5syZI4/Ho40bN+rcuXM3/duBQEB+vz9kAwAAU1PEYaS1tVV33nmn7Ha7nnvuOVVUVCg1NXXY2gULFujtt9/WkSNHdODAAQ0NDSkrK0uXL18e8RglJSVyuVzBzePxRNomAACIETbLsqxIdvj888/V0dEhn8+nn//853rrrbdUW1sbNpB82bVr17Ro0SLl5uZqx44dYesCgYACgUDwsd/vl8fjkc/nk9PpjKRdAABgiN/vl8vluun7d0RrRiRpxowZmjdvniRp2bJlOn36tHbv3q19+/bddN/p06fr/vvv18WLF0ess9vtstvtkbYGAABi0JjvMzI0NBRyFWMkg4ODam1tVUpKylgPCwAApoiIrowUFxfriSee0L333qve3l4dPHhQNTU1On78uCQpLy9P99xzj0pKSiRJr732mlasWKF58+bp6tWrev3113Xp0iVt3bp1/GcCAABiUkRhpKenR3l5eerq6pLL5VJ6erqOHz+utWvXSpI6OjoUF/eHiy2f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AKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAqIjDSF1dnTZs2KBZs2bJZrPp8OHDI9bX1NTIZrPdsHm93mh7BgAAU0jEYaS/v1/33Xef9u7dG9F+Fy5cUFdXV3BLSkqK9NAAAGAKmhbpDk888YSeeOKJiA+UlJSku+66K+L9AADA1DZpa0aWLl2qlJQUrV27Vh988MGItYFAQH6/P2QDAABT04SHkZSUFL355pt677339N5778nj8Wj16tVqamoKu09JSYlcLldw83g8E90mAAAwxGZZlhX1zjabKioqlJOTE9F+q1at0r333quf/exnwz4fCAQUCASCj/1+vzwej3w+n5xOZ7TtAgCASeT3++VyuW76/h3xmpHxsHz5cp08eTLs83a7XXa7fRI7AgAAphi5z0hLS4tSUlJMHBoAANxiIr4y0tfXp4sXLwYft7e3q6WlRYmJibr33ntVXFys3//+9/rXf/1XSdJPf/pTzZ07V4sXL9bAwIDeeustVVdX61e/+tX4zQIAAMSsiMPImTNn9MgjjwQf//CHP5Qkbd68WWVlZerq6lJHR0fw+c8//1x//dd/rd///vf62te+pvT0dP36178O+RsAAOD2NaYFrJNltAtgAADArWO079/8Ng0AADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjJpmugFTBocsnWq/op7eASUlOLR8bqLi42ym2wIA4LYT8ZWRuro6bdiwQbNmzZLNZtPhw4dvuk9NTY0yMjJkt9s1b948lZWVRdHq+Kls69LKXdXK3d+owvIW5e5v1Mpd1aps6zLaFwAAt6OIw0h/f7/uu+8+7d27d1T17e3tWr9+vR555BG1tLSoqKhIW7du1fHjxyNudjxUtnVp24EmdfkGQsa9vgFtO9BEIAEAYJLZLMuyot7ZZlNFRYVycnLC1rzwwgv65S9/qba2tuDY9773PV29elWVlZWjOo7f75fL5ZLP55PT6Yy2XQ0OWVq5q/qGIHKdTZLb5dDJFx7lIxsAAMZotO/fE76AtaGhQWvWrAkZy87OVkNDQ9h9AoGA/H5/yDYeTrVfCRtEJMmS1OUb0Kn2K+NyPAAAcHMTHka8Xq+Sk5NDxpKTk+X3+/XZZ58Nu09JSYlcLldw83g849JLT2/4IBJNHQAAGLtb8qu9xcXF8vl8wa2zs3Nc/m5SgmNc6wAAwNhN+Fd73W63uru7Q8a6u7vldDp1xx13DLuP3W6X3W4f916Wz01Uisshr29Awy2Uub5mZPncxHE/NgAAGN6EXxnJzMzUiRMnQsaqqqqUmZk50Ye+QXycTds3pEr6Inh82fXH2zeksngVAIBJFHEY6evrU0tLi1paWiR98dXdlpYWdXR0SPriI5a8vLxg/XPPPaff/e53+tGPfqQPP/xQ//RP/6R3331XP/jBD8ZnBhFal5ai0qcz5HaFfhTjdjlU+nSG1qWlGOkLAIDbVcRf7a2pqdEjjzxyw/jmzZtVVlamZ555Rh9//LFqampC9vnBD36g8+fPa/bs2frbv/1bPfPMM6M+5nh9tffLuAMrAAATa7Tv32O6z8hkmYgwAgAAJtYtc58RAACAkRBGAACAUYQRAABgFGEEAAAYRRgBAABGEUYAAIBRhBEAAGAUYQQAABhFGAEAAEZN+K/2jofrN4n1+/2GOwEAAKN1/X37Zjd7j4kw0tvbK0nyeDyGOwEAAJHq7e2Vy+UK+3xM/DbN0NCQPvnkEyUkJMhmG78fs/P7/fJ4POrs7Jyyv3kz1efI/GLfVJ8j84t9U32OEzk/y7LU29urWbNmKS4u/MqQmLgyEhcXp9mzZ0/Y33c6nVPyP7Avm+pzZH6xb6rPkfnFvqk+x4ma30hXRK5jASsAADCKMAIAAIy6rcOI3W7X9u3bZbfbTbcyYab6HJlf7Jvqc2R+sW+qz/FWmF9MLGAFAABT1219ZQQAAJhHGAEAAEYRRgAAgFGEEQAAYNSUDyN79+7Vt771LTkcDj300EM6derUiPWHDh3SwoUL5XA4tGTJEh07dmySOo1eJHMsKyuTzWYL2RwOxyR2G5m6ujpt2LBBs2bNks1m0+HDh2+6T01NjTIyMmS32zVv3jyVlZVNeJ/RinR+NTU1N5w/m80mr9c7OQ1HqKSkRA8++KASEhKUlJSknJwcXbhw4ab7xcrrMJr5xdprsLS0VOnp6cEbYmVmZur9998fcZ9YOX9S5POLtfP3VTt37pTNZlNRUdGIdZN9Dqd0GPn3f/93/fCHP9T27dvV1NSk++67T9nZ2erp6Rm2vr6+Xrm5udqyZYuam5uVk5OjnJwctbW1TXLnoxfpHKUv7rLX1dUV3C5dujSJHUemv79f9913n/bu3Tuq+vb2dq1fv16PPPKIWlpaVFRUpK1bt+r48eMT3Gl0Ip3fdRcuXAg5h0lJSRPU4djU1tYqPz9fjY2Nqqqq0rVr1/T444+rv78/7D6x9DqMZn5SbL0GZ8+erZ07d+rs2bM6c+aMHn30UW3cuFHnzp0btj6Wzp8U+fyk2Dp/X3b69Gnt27dP6enpI9YZOYfWFLZ8+XIrPz8/+HhwcNCaNWuWVVJSMmz9n/3Zn1nr168PGXvooYesv/qrv5rQPsci0jm+8847lsvlmqTuxpckq6KiYsSaH/3oR9bixYtDxp566ikrOzt7AjsbH6OZ33/8x39YkqxPP/10Unoabz09PZYkq7a2NmxNLL4OrxvN/GL5NXjdzJkzrbfeemvY52L5/F030vxi9fz19vZa8+fPt6qqqqxVq1ZZhYWFYWtNnMMpe2Xk888/19mzZ7VmzZrgWFxcnNasWaOGhoZh92loaAipl6Ts7Oyw9aZFM0dJ6uvr05w5c+TxeG76L4BYE2vnMFpLly5VSkqK1q5dqw8++MB0O6Pm8/kkSYmJiWFrYvkcjmZ+Uuy+BgcHB1VeXq7+/n5lZmYOWxPL528085Ni8/zl5+dr/fr1N5yb4Zg4h1M2jPzP//yPBgcHlZycHDKenJwc9vN1r9cbUb1p0cxxwYIFevvtt3XkyBEdOHBAQ0NDysrK0uXLlyej5QkX7hz6/X599tlnhroaPykpKXrzzTf13nvv6b333pPH49Hq1avV1NRkurWbGhoaUlFRkR5++GGlpaWFrYu11+F1o51fLL4GW1tbdeedd8put+u5555TRUWFUlNTh62NxfMXyfxi8fyVl5erqalJJSUlo6o3cQ5j4ld7MX4yMzNDEn9WVpYWLVqkffv2aceOHQY7w2gsWLBACxYsCD7OysrSRx99pJ/85Cf62c9+ZrCzm8vPz1dbW5tOnjxpupUJMdr5xeJrcMGCBWppaZHP59PPf/5zbd68WbW1tWHfsGNNJPOLtfPX2dmpwsJCVVVV3dILbadsGPnmN7+p+Ph4dXd3h4x3d3fL7XYPu4/b7Y6o3rRo5vhV06dP1/3336+LFy9ORIuTLtw5dDqduuOOOwx1NbGWL19+y7/BFxQU6OjRo6qrq9Ps2bNHrI2116EU2fy+KhZegzNmzNC8efMkScuWLdPp06e1e/du7du374baWDx/kczvq27183f27Fn19PQoIyMjODY4OKi6ujrt2bNHgUBA8fHxIfuYOIdT9mOaGTNmaNmyZTpx4kRwbGhoSCdOnAj7WWBmZmZIvSRVVVWN+NmhSdHM8asGBwfV2tqqlJSUiWpzUsXaORwPLS0tt+z5syxLBQUFqqioUHV1tebOnXvTfWLpHEYzv6+Kxdfg0NCQAoHAsM/F0vkLZ6T5fdWtfv4ee+wxtba2qqWlJbg98MAD2rRpk1paWm4IIpKhczhhS2NvAeXl5ZbdbrfKysqs8+fPW3/5l39p3XXXXZbX67Usy7K+//3vWy+++GKw/oMPPrCmTZtm/fjHP7Z+85vfWNu3b7emT59utba2mprCTUU6x1dffdU6fvy49dFHH1lnz561vve971kOh8M6d+6cqSmMqLe312pubraam5stSdY//MM/WM3NzdalS5csy7KsF1980fr+978frP/d735nfe1rX7Oef/556ze/+Y21d+9eKz4+3qqsrDQ1hRFFOr+f/OQn1uHDh63f/va3Vmtrq1VYWGjFxcVZv/71r01NYUTbtm2zXC6XVVNTY3V1dQW3//u//wvWxPLrMJr5xdpr8MUXX7Rqa2ut9vZ267/+67+sF1980bLZbNavfvUry7Ji+/xZVuTzi7XzN5yvfpvmVjiHUzqMWJZl/eM//qN17733WjNmzLCWL19uNTY2Bp9btWqVtXnz5pD6d9991/rOd75jzZgxw1q8eLH1y1/+cpI7jlwkcywqKgrWJicnW08++aTV1NRkoOvRuf5V1q9u1+e0efNma9WqVTfss3TpUmvGjBnWt7/9beudd96Z9L5HK9L57dq1y/qjP/ojy+FwWImJidbq1aut6upqM82PwnBzkxRyTmL5dRjN/GLtNfgXf/EX1pw5c6wZM2ZYd999t/XYY48F36gtK7bPn2VFPr9YO3/D+WoYuRXOoc2yLGvirrsAAACMbMquGQEAALGBMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMCo/wfZgo6THeYY0wAAAABJRU5ErkJggg==",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"x = [1, 2, 3, 4, 5]\n",
|
|
"plt.scatter(range(len(x)), x);"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "c08b749f",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "skip"
|
|
}
|
|
},
|
|
"source": [
|
|
"We convolve $x$ with a signal that has one peak, and is zero everywhere else:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 20,
|
|
"id": "fe64e534",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAdGElEQVR4nO3df5BV9X3/8dfuKrvYwEZDWUDXYtIfSlAQkB00aWu7FZuUjjP9YYwJhCZ24qBFd5oKUSDWyKqpDq2gVEZrZlJHkrS2SbVk7KbG2uBgIHTC+GtSNTLqLjI2uwQrpLv3+4d10/0KykXWz1328Zg5f3g85973x5PMfc65P7auUqlUAgBQSH3pAQCA0U2MAABFiREAoCgxAgAUJUYAgKLECABQlBgBAIoSIwBAUceUHuBQDAwM5MUXX8y4ceNSV1dXehwA4BBUKpXs2bMnU6ZMSX39we9/jIgYefHFF9Pa2lp6DADgMOzcuTMnnXTSQf/9iIiRcePGJXl9MePHjy88DQBwKPr6+tLa2jr4On4wIyJG3nhrZvz48WIEAEaYt/uIhQ+wAgBFiREAoCgxAgAUJUYAgKLECABQlBgBAIoSIwBAUWIEAChqRPzoGYwk/QOVbHn2leza81omjmvK3FNOSEO9v6kEcDBV3xl5+OGHs2DBgkyZMiV1dXX5h3/4h7c956GHHsqsWbPS2NiYX/zFX8zdd999GKNC7du046V86MZv56INj2bpvdtz0YZH86Ebv51NO14qPRpAzao6Rvbu3ZsZM2Zk3bp1h3T8s88+m49+9KM599xzs3379lxxxRX5zGc+k29961tVDwu1bNOOl3LpV7blpd7Xhuzv7n0tl35lmyABOIi6SqVSOeyT6+py33335YILLjjoMVdddVXuv//+7NixY3Dfxz72sfz4xz/Opk2bDul5+vr60tzcnN7eXn+bhprUP1DJh2789ptC5A11SSY1N+WRq37DWzbAqHGor9/D/gHWzZs3p729fci++fPnZ/PmzQc9Z9++fenr6xuyQS3b8uwrBw2RJKkkean3tWx59pV3byiAEWLYY6S7uzstLS1D9rW0tKSvry///d//fcBzOjs709zcPLi1trYO95jwjuzac/AQOZzjAEaTmvxq7/Lly9Pb2zu47dy5s/RI8JYmjms6oscBjCbD/tXeSZMmpaenZ8i+np6ejB8/PmPHjj3gOY2NjWlsbBzu0eCImXvKCZnc3JTu3tdyoA9hvfGZkbmnnPBujwZQ84b9zsi8efPS1dU1ZN+DDz6YefPmDfdTw7umob4uqxZMS/J6ePxfb/zzqgXTfHgV4ACqjpGf/OQn2b59e7Zv357k9a/ubt++Pc8//3yS199iWbhw4eDxn/3sZ/PMM8/kz/7sz/Lkk0/mtttuy1e/+tVceeWVR2YFUCPOnz45t39iViY1D30rZlJzU27/xKycP31yockAalvVX+196KGHcu65575p/6JFi3L33XfnU5/6VJ577rk89NBDQ8658sor8/jjj+ekk07KihUr8qlPfeqQn9NXexlJ/AIrwOsO9fX7Hf3OyLtFjADAyFMzvzMCAPBWxAgAUJQYAQCKEiMAQFFiBAAoSowAAEWJEQCgKDECABQlRgCAosQIAFCUGAEAihIjAEBRYgQAKEqMAABFiREAoCgxAgAUJUYAgKLECABQlBgBAIoSIwBAUWIEAChKjAAARYkRAKAoMQIAFCVGAICixAgAUJQYAQCKEiMAQFFiBAAoSowAAEWJEQCgKDECABQlRgCAosQIAFCUGAEAihIjAEBRYgQAKEqMAABFiREAoCgxAgAUJUYAgKLECABQlBgBAIoSIwBAUWIEAChKjAAARYkRAKAoMQIAFCVGAICixAgAUJQYAQCKEiMAQFFiBAAoSowAAEWJEQCgKDECABQlRgCAog4rRtatW5epU6emqakpbW1t2bJly1sev2bNmvzKr/xKxo4dm9bW1lx55ZV57bXXDmtgAODoUnWMbNy4MR0dHVm1alW2bduWGTNmZP78+dm1a9cBj7/nnnuybNmyrFq1Kk888UTuvPPObNy4MZ///Off8fAAwMhXdYzccsstueSSS7J48eJMmzYt69evz3HHHZe77rrrgMd/97vfzTnnnJOPf/zjmTp1as4777xcdNFFb3s3BQAYHaqKkf3792fr1q1pb2//2QPU16e9vT2bN28+4Dlnn312tm7dOhgfzzzzTB544IF85CMfOejz7Nu3L319fUM2AODodEw1B+/evTv9/f1paWkZsr+lpSVPPvnkAc/5+Mc/nt27d+dDH/pQKpVK/ud//ief/exn3/Jtms7Ozlx77bXVjAYAjFDD/m2ahx56KKtXr85tt92Wbdu25e///u9z//3357rrrjvoOcuX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KD3KqPXCCy/kE5/4RN73vvdl7NixOf300/O9732v9FijVn9/f1asWJFTTjklY8eOzQc+8IFcd911b/v3Vzi4URsjGzduTEdHR1atWpVt27ZlxowZmT9/fnbt2lV6tFHnO9/5TpYsWZJHH300Dz74YH7605/mvPPOy969e0uPNuo99thj+eu//uucccYZpUcZtf7rv/4r55xzTo499tj88z//cx5//PHcfPPNOf7440uPNmrdeOONuf3227N27do88cQTufHGG3PTTTfl1ltvLT3aiDVqv9rb1taWs846K2vXrk3y+t+/aW1tzeWXX55ly5YVnm50e/nllzNx4sR85zvfya/+6q+WHmfU+slPfpJZs2bltttuyxe/+MXMnDkza9asKT3WqLNs2bL8+7//e/7t3/6t9Cj8r9/5nd9JS0tL7rzzzsF9v/d7v5exY8fmK1/5SsHJRq5ReWdk//792bp1a9rb2wf31dfXp729PZs3by44GUnS29ubJDnhhBMKTzK6LVmyJB/96EeH/P+Ed983vvGNzJkzJ3/wB3+QiRMn5swzz8yGDRtKjzWqnX322enq6srTTz+dJPmP//iPPPLII/nt3/7twpONXCPiD+Udabt3705/f39aWlqG7G9pacmTTz5ZaCqS1+9QXXHFFTnnnHMyffr00uOMWvfee2+2bduWxx57rPQoo94zzzyT22+/PR0dHfn85z+fxx57LH/yJ3+SMWPGZNGiRaXHG5WWLVuWvr6+nHrqqWloaEh/f3+uv/76XHzxxaVHG7FGZYxQu5YsWZIdO3bkkUceKT3KqLVz584sXbo0Dz74YJqamkqPM+oNDAxkzpw5Wb16dZLkzDPPzI4dO7J+/XoxUshXv/rV/O3f/m3uueeefPCDH8z27dtzxRVXZMqUKa7JYRqVMTJhwoQ0NDSkp6dnyP6enp5MmjSp0FRcdtll+ad/+qc8/PDDOemkk0qPM2pt3bo1u3btyqxZswb39ff35+GHH87atWuzb9++NDQ0FJxwdJk8eXKmTZs2ZN9pp52Wv/u7vys0EZ/73OeybNmyfOxjH0uSnH766fnRj36Uzs5OMXKYRuVnRsaMGZPZs2enq6trcN/AwEC6uroyb968gpONTpVKJZdddlnuu+++fPvb384pp5xSeqRR7Td/8zfzgx/8INu3bx/c5syZk4svvjjbt28XIu+yc845501fdX/66afzC7/wC4Um4tVXX019/dCXz4aGhgwMDBSaaOQblXdGkqSjoyOLFi3KnDlzMnfu3KxZsyZ79+7N4sWLS4826ixZsiT33HNP/vEf/zHjxo1Ld3d3kqS5uTljx44tPN3oM27cuDd9Xufnfu7n8r73vc/neAq48sorc/bZZ2f16tX5wz/8w2zZsiV33HFH7rjjjtKjjVoLFizI9ddfn5NPPjkf/OAH8/3vfz+33HJL/uiP/qj0aCNXZRS79dZbKyeffHJlzJgxlblz51YeffTR0iONSkkOuP3N3/xN6dH4X7/2a79WWbp0aekxRq1vfvOblenTp1caGxsrp556auWOO+4oPdKo1tfXV1m6dGnl5JNPrjQ1NVXe//73V66++urKvn37So82Yo3a3xkBAGrDqPzMCABQO8QIAFCUGAEAihIjAEBRYgQAKEqMAABFiREAoCgxAgAUJUYAgKLECABQlBgBAIoSIwBAUf8Prv9DxkdFrisAAAAASUVORK5CYII=",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"y = [0, 0, 0, 1, 0, 0, 0, 0, 0, 0]\n",
|
|
"plt.scatter(range(len(y)), y);"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"id": "7de101ef",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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5cr4wAc+EI8++mjeY+XqmmuuiUOHDsV3v/vdiIj4t3/7t3jmmWfixhtvzHmyytHb2xsDAwNTnkfFYjHWrVvndfdNSqVSVFVVxTve8Y68R5lX8/4jZKn98Ic/jLGxsVi1atWU5atWrYoXXnghp6kqx/j4eOzYsSOuvfbaaG1tzXucXD3++OPR3d0dx44dy3uUivEf//Ef0dnZGXfccUf8+Z//eRw7diz+5E/+JJYuXRpbt27Ne7xcfPrTn46hoaF4//vfHzU1NTE2Nhaf/exnY/PmzXmPVjEGBgYiIqZ93Z3424VuZGQk7rzzzrjlllsW/Q+T/awFHxa8tfb29jhx4kQ888wzeY+Sq76+vti+fXscPHgwamtr8x6nYoyPj8fatWvjc5/7XEREfOADH4gTJ07EQw89dMGGxd///d/HV77ylXjsscfi8ssvj56entixY0esXr36gt0nlOeNN96Ij33sY5FlWXR2duY9zrxb8IdC3vWud0VNTU289tprU5a/9tpr0dDQkNNUleH222+PJ554Ip566qk5/an6heD48eMxODgYa9asiSVLlsSSJUvi8OHDcd9998WSJUtibGws7xFz0djYGC0tLVOW/cqv/Eq88sorOU2Uvz/7sz+LT3/60/EHf/AHccUVV8Qf/uEfxqc+9ano6OjIe7SKMfHa6nX3bBNR8YMf/CAOHjx4wX1aEbEIwmLp0qVx9dVXx6FDhyaXjY+Px6FDh2L9+vU5TpafLMvi9ttvj3379sWTTz4Zzc3NeY+Uu+uvvz6ef/756OnpmbytXbs2Nm/eHD09PVFTU5P3iLm49tprz/oq8ne/+914z3vek9NE+fvJT34S1dVTXxprampifHw8p4kqT3NzczQ0NEx53R0aGornnnvugn3djfi/qHjppZfin//5n2PFihV5j5SLRXEo5I477oitW7fG2rVro62tLb7whS/E6dOn47bbbst7tFy0t7fHY489Ft/85jejrq5u8phnsViMZcuW5TxdPurq6s46x+Siiy6KFStWXNDnnnzqU5+Ka665Jj73uc/Fxz72sejq6opHHnkkHnnkkbxHy82mTZvis5/9bFxyySVx+eWXx7/+67/GvffeGx//+MfzHm1evf766/G9731v8n5vb2/09PREfX19XHLJJbFjx47467/+63jf+94Xzc3Ncdddd8Xq1avj5ptvzm/oOfZW+6SxsTF+7/d+L7q7u+OJJ56IsbGxydfe+vr6WLp0aV5jz7+8v5aSyv33359dcskl2dKlS7O2trbs6NGjeY+Um4iY9valL30p79Eqiq+bnrF///6stbU1KxQK2fvf//7skUceyXukXA0NDWXbt2/PLrnkkqy2tjZ773vfm/3FX/xFNjo6mvdo8+qpp56a9nVk69atWZad+crpXXfdla1atSorFArZ9ddfn7344ov5Dj3H3mqf9Pb2zvja+9RTT+U9+rzys+kAQDIL/hwLAKByCAsAIBlhAQAkIywAgGSEBQCQjLAAAJIRFgBAMsICAEhGWAAAyQgLACAZYQEAJCMsAIBk/j+p6GR7Hr8+IgAAAABJRU5ErkJggg==",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"z = np.convolve(x, y)\n",
|
|
"plt.scatter(range(len(z)), z);"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "a0c4af49",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "skip"
|
|
}
|
|
},
|
|
"source": [
|
|
"And with two peaks:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 18,
|
|
"id": "4a3d9da1",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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5uaD7rds2bL09fUN3Xbu3PkuTgkAvJuOqWbniRMnprGxMb29vcO29/b2ZvLkyW957F/8xV/klltuyT//8z/nzDPPfMt9m5qa0tTUVM1oAMAIVdWVkbFjx2bWrFnp7u4e2jY4OJju7u7MnTv3oMfddtttufHGG7Nhw4bMnj378KcFAOpOVVdGkqSzszMLFy7M7NmzM2fOnKxatSp79+7NokWLkiQLFizISSedlK6uriTJrbfemuuvvz73339/pk6dOvTekve85z15z3vecwSXAgCMRFXHyMUXX5yXX345119/fXp6ejJz5sxs2LBh6E2tO3bsSEPDzy+43H333dm/f39+//d/f9j9rFixIl/4whfe2fQAwIhX9feMlOB7RgBg5Dkq3zMCAHCkiREAoCgxAgAUJUYAgKLECABQlBgBAIoSIwBAUWIEAChKjAAARYkRAKAoMQIAFCVGAICixAgAUJQYAQCKEiMAQFFiBAAoSowAAEWJEQCgKDECABQlRgCAosQIAFCUGAEAihIjAEBRYgQAKEqMAABFiREAoCgxAgAUJUYAgKLECABQlBgBAIoSIwBAUWIEAChKjAAARYkRAKAoMQIAFCVGAICixAgAUJQYAQCKEiMAQFFiBAAoSowAAEWJEQCgKDECABQlRgCAosQIAFCUGAEAihIjAEBRYgQAKEqMAABFiREAoCgxAgAUJUYAgKLECABQlBgBAIoSIwBAUceUHqCUgcFKNj/3SnbteS2TxjdnzqknpLFhTOmxqlYv66gn9XJOrKO2WEdtqZd11IrDipE1a9bk9ttvT09PT2bMmJE777wzc+bMOej+X/va17J8+fI8//zz+eVf/uXceuut+chHPnLYQ79TG7a/lBu++URe6nttaNuUluasmD8tF06fUmyuatXLOupJvZwT66gt1lFb6mUdtaTql2nWr1+fzs7OrFixIlu3bs2MGTMyb9687Nq164D7f/e7380ll1yST3/60/nBD36Qiy66KBdddFG2b9/+joc/HBu2v5TLv7J12D+iJOnpey2Xf2VrNmx/qchc1aqXddSTejkn1lFbrKO21Ms6ak3VMbJy5cpcdtllWbRoUaZNm5a1a9fmuOOOy3333XfA/f/yL/8yF154YT73uc/l9NNPz4033pizzz47q1evfsfDV2tgsJIbvvlEKgf4uze23fDNJzIweKA9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NWtWuru7h7YNDg6mu7s7c+fOLTjZ6FSpVHLFFVfkwQcfzLe//e2ceuqppUca1X7zN38zP/zhD7Nt27ah2+zZs3PppZdm27ZtQuRddt55573po+7PPPNMfumXfqnQRLz66qtpaBj+9NnY2JjBwcFCE418o/LKSJJ0dnZm4cKFmT17dubMmZNVq1Zl7969WbRoUenRRp3Fixfn/vvvzz/8wz9k/Pjx6enpSZK0tLRk3LhxhacbfcaPH/+m9+v8wi/8Qt73vvd5H08BV199dc4999zcfPPN+cM//MNs3rw599xzT+65557So41a8+fPz0033ZRTTjklH/zgB/ODH/wgK1euzB/90R+VHm3kqoxid955Z+WUU06pjB07tjJnzpzK9773vdIjjUpJDnj7m7/5m9Kj8b9+/dd/vbJkyZLSY4xa3/zmNyvTp0+vNDU1VU477bTKPffcU3qkUa2/v7+yZMmSyimnnFJpbm6uvP/9769ce+21lX379pUebcQatd8zAgDUhlH5nhEAoHaIEQCgKDECABQlRgCAosQIAFCUGAEAihIjAEBRYgQAKEqMAABFiREAoCgxAgAUJUYAgKL+L/78SoDxdAtEAAAAAElFTkSuQmCC",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"y = [0, 0, 1, 0, 0, 0, 0, 0, 0, 1]\n",
|
|
"plt.scatter(range(len(y)), y);"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 19,
|
|
"id": "d9bf528b",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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tamk9VNJs0AlONe/34sKi/OxFGEBACytc/377UPIAIBkhAUAkIywAACSERYAQDLCAgBIRlgAAMkICwAgGWEBACQjLACAZFYs9x2efqPPUqm03HcNACzS6b/bP+4Nu5c9LCYmJiIioq2tbbnvGgA4TxMTE1EoFBb8/rJ/VsjMzEy89tpr0djYGDU16T7Qp1QqRVtbW4yMjPgMkrdxXM7kmJzJMZmf43Imx+RMF8sxybIsJiYmYu3atVFbu/ArKZb9EYva2tq4/PLLl+z3NzU1XdD/YRfLcTmTY3Imx2R+jsuZHJMzXQzH5GyPVJzmxZsAQDLCAgBI5oIJi/r6+ujp6Yn6+vq8R6kojsuZHJMzOSbzc1zO5JicyTGZa9lfvAkAXLgumEcsAID8CQsAIBlhAQAkIywAgGQumLB4+OGH493vfnc0NDTEddddF/39/XmPlJve3t74+Z//+WhsbIzVq1fH7bffHi+99FLeY1WUe++9N2pqamL37t15j5K7//zP/4zt27fHpZdeGqtWrYqrr746vvnNb+Y9Vm6mp6fjnnvuifb29li1alW8973vjT/90z/9sZ+PcKE5evRobN26NdauXRs1NTXx13/913O+n2VZfOpTn4rW1tZYtWpVbNq0KV5++eV8hl0mZzsmb775Ztx9991x9dVXxyWXXBJr166Nj33sY/Haa6/lN3BOLoiw+MpXvhJ79uyJnp6eGBgYiHXr1sWtt94a4+PjeY+WiyNHjkRXV1c899xzcejQoXjzzTfjwx/+cJw6dSrv0SrCsWPH4tFHH41rrrkm71Fy9z//8z9x4403xk/8xE/E3//938eJEyfiz//8z+Od73xn3qPl5r777ou+vr546KGH4lvf+lbcd9998dnPfjYefPDBvEdbVqdOnYp169bFww8/PO/3P/vZz8YDDzwQjzzySDz//PNxySWXxK233hqTk5PLPOnyOdsx+cEPfhADAwNxzz33xMDAQHzta1+Ll156KX7lV34lh0lzll0ANm7cmHV1dc1+PT09na1duzbr7e3NcarKMT4+nkVEduTIkbxHyd3ExET2/ve/Pzt06FD2S7/0S9muXbvyHilXd999d3bTTTflPUZFue2227KPf/zjc2779V//9Wzbtm05TZS/iMj2798/+/XMzEzW0tKS3X///bO3ff/738/q6+uzL3/5yzlMuPx+9JjMp7+/P4uI7Lvf/e7yDFUhqv4Rix/+8Idx/Pjx2LRp0+xttbW1sWnTpvjGN76R42SVo1gsRkREc3NzzpPkr6urK2677bY5/79czP72b/82NmzYEB/5yEdi9erV8cEPfjAef/zxvMfK1Q033BCHDx+Ob3/72xER8S//8i/x7LPPxpYtW3KerHIMDw/H2NjYnHVUKBTiuuuuc959m2KxGDU1NfGOd7wj71GW1bJ/CFlq3/ve92J6ejrWrFkz5/Y1a9bEiy++mNNUlWNmZiZ2794dN954Y3R2duY9Tq6efPLJGBgYiGPHjuU9SsX493//9+jr64s9e/bEH/3RH8WxY8fi93//92PlypWxY8eOvMfLxSc/+ckolUrxgQ98IOrq6mJ6ejo+/elPx7Zt2/IerWKMjY1FRMx73j39vYvd5ORk3H333XHHHXdc8B9M9qOqPiw4u66urhgaGopnn30271FyNTIyErt27YpDhw5FQ0ND3uNUjJmZmdiwYUN85jOfiYiID37wgzE0NBSPPPLIRRsWX/3qV+NLX/pSPPHEE3HVVVfF4OBg7N69O9auXXvRHhPK8+abb8ZHP/rRyLIs+vr68h5n2VX9UyGXXXZZ1NXVxeuvvz7n9tdffz1aWlpymqoy3HXXXfHUU0/FM888s6QfVV8Njh8/HuPj47F+/fpYsWJFrFixIo4cORIPPPBArFixIqanp/MeMRetra3R0dEx57af/dmfjVdffTWnifL3h3/4h/HJT34yfvM3fzOuvvrq+K3f+q34xCc+Eb29vXmPVjFOn1udd890Oiq++93vxqFDhy66RysiLoCwWLlyZVx77bVx+PDh2dtmZmbi8OHDcf311+c4WX6yLIu77ror9u/fH08//XS0t7fnPVLubr755njhhRdicHBwdtuwYUNs27YtBgcHo66uLu8Rc3HjjTeecSnyt7/97fjpn/7pnCbK3w9+8IOorZ17aqyrq4uZmZmcJqo87e3t0dLSMue8WyqV4vnnn79oz7sR/xcVL7/8cvzjP/5jXHrppXmPlIsL4qmQPXv2xI4dO2LDhg2xcePG+PznPx+nTp2KO++8M+/RctHV1RVPPPFE/M3f/E00NjbOPudZKBRi1apVOU+Xj8bGxjNeY3LJJZfEpZdeelG/9uQTn/hE3HDDDfGZz3wmPvrRj0Z/f3889thj8dhjj+U9Wm62bt0an/70p+OKK66Iq666Kv75n/85Pve5z8XHP/7xvEdbVm+88UZ85zvfmf16eHg4BgcHo7m5Oa644orYvXt3/Nmf/Vm8//3vj/b29rjnnnti7dq1cfvtt+c39BI72zFpbW2N3/iN34iBgYF46qmnYnp6evbc29zcHCtXrsxr7OWX92UpqTz44IPZFVdcka1cuTLbuHFj9txzz+U9Um4iYt7tC1/4Qt6jVRSXm77lwIEDWWdnZ1ZfX5994AMfyB577LG8R8pVqVTKdu3alV1xxRVZQ0ND9p73vCf74z/+42xqairv0ZbVM888M+95ZMeOHVmWvXXJ6T333JOtWbMmq6+vz26++ebspZdeynfoJXa2YzI8PLzgufeZZ57Je/Rl5WPTAYBkqv41FgBA5RAWAEAywgIASEZYAADJCAsAIBlhAQAkIywAgGSEBQCQjLAAAJIRFgBAMsICAEhGWAAAyfw/N2asl4XyUyIAAAAASUVORK5CYII=",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"z = np.convolve(x, y)\n",
|
|
"plt.scatter(range(len(z)), z);"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "c5aea429",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "skip"
|
|
}
|
|
},
|
|
"source": [
|
|
"We observe: every peak of $y$ results in a _copy_ of $x$!"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "e60b8922",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"### How is this related to signal processing?"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "3edb1cfe",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "skip"
|
|
}
|
|
},
|
|
"source": [
|
|
"The Fourier transformation connects multiplication with convolution:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "5e7a4611",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"$$\n",
|
|
"\\begin{align*}\n",
|
|
" x[t] * y[t] \\,&\\circ\\!\\!-\\!\\!\\bullet\\, X[f] \\cdot Y[f] \\\\\n",
|
|
" x[t] \\cdot y[t] \\,&\\circ\\!\\!-\\!\\!\\bullet\\, X[f] * Y[f] \\\\\n",
|
|
"\\end{align*}\n",
|
|
"$$"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "feb1446d",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"Using this property, we can efficiently work on signals (and their spectra).\n",
|
|
"We'll see how in the project."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "aeeb1557",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"```{note}\n",
|
|
"The connection between convolution and multiplication is not only important for signal processing.\n",
|
|
"Convolution is also used in **artificial intelligence**, **image processing**, and **computer vision**.\n",
|
|
"In addition, we can use it to implement, for example, a **fast algorithm for polynomial multiplication**.\n",
|
|
"```"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "2ec9766f",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "slide"
|
|
}
|
|
},
|
|
"source": [
|
|
"## Recap"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "03074ac1",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "fragment"
|
|
}
|
|
},
|
|
"source": [
|
|
"- We represent signals as **samples** at a fixed **sampling rate**."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "6dd62280",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "fragment"
|
|
}
|
|
},
|
|
"source": [
|
|
"- This rate must be **twice as high** as the highest frequency in the signal."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "943c15ca",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "fragment"
|
|
}
|
|
},
|
|
"source": [
|
|
"- Using the **fourier transformation**, we can decompose a signal into its **spectrum**."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "9faf5ca3",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "fragment"
|
|
}
|
|
},
|
|
"source": [
|
|
"- The spectrum indicates how strongly sine and cosine contribute to the signal..."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "d59296b4",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "fragment"
|
|
}
|
|
},
|
|
"source": [
|
|
"- ...even if the signal is not directly constructed from sine and cosine."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "9af7afe6",
|
|
"metadata": {
|
|
"slideshow": {
|
|
"slide_type": "subslide"
|
|
}
|
|
},
|
|
"source": [
|
|
"The fourier transformation has multiple useful properties:\n",
|
|
"\n",
|
|
"$$\n",
|
|
"\\begin{array}{lrr}\n",
|
|
"\\hline \\textbf{Eigenschaft} & \\textbf{Signal} & \\textbf{Spektrum} \\\\\n",
|
|
"\\hline\n",
|
|
"\\text{linear} & \\sum_i a_i x_i[t] & \\sum_i a_i X_i[f] \\\\\n",
|
|
"\\text{dual} & X[-t] & x[f] \\\\\n",
|
|
" & X[t] & x[-f] \\\\\n",
|
|
"\\text{Skalierung} & x[at] & \\frac{1}{|a|} X \\left[\\frac{f}{a}\\right] \\\\\n",
|
|
"\\text{Faltung} & x[t] * y[t] & X[f] \\cdot Y[f] \\\\\n",
|
|
" & x[t] \\cdot y[t] & X[f] * Y[f] \\\\\n",
|
|
"\\hline\n",
|
|
"\\end{array}\n",
|
|
"$$"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"celltoolbar": "Slideshow",
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"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",
|
|
"version": "3.11.13"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|