{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\"FMP\"\n", "\"AudioLabs\"\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\"C1\"\n", "

Discrete Fourier Transform (DFT)

\n", "
\n", "\n", "
\n", "\n", "

\n", "In this notebook, we introduce the discrete Fourier transform (DFT) and its basic properties. We then study the fast Fourier transform (FFT), which is an efficient algorithm to evaluate the DFT. In most parts, we closely follow Section 2.4 of [Müller, FMP, Springer 2015].\n", "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Inner Product\n", "\n", "An important concept for understanding the Fourier transform is the **inner product** for a complex vector space $\\mathbb{C}^N$ for $N \\in \\mathbb{N}$. Given two complex vectors $x, y \\in \\mathbb{C}^N$, the inner product between $x$ and $y$ is defined as follows:\n", "\n", "$$ \\langle x | y \\rangle := \\sum_{n=0}^{N-1} x(n) \\overline{y(n)}.$$\n", "\n", "The absolute value of the inner product may be interpreted as a measure of similarity between $x$ and $y$: if $x$ and $y$ point to the same direction (i.e., $x$ and $y$ are similar), the inner product $|\\langle x | y \\rangle|$ is large. If $x$ and $y$ are orthogonal (i.e., $x$ and $y$ are dissimilar), the inner product $|\\langle x | y \\rangle|$ is zero.\n", "\n", "Note that when using the function `np.vdot` to compute the inner product, the complex conjugate is performed on the first argument. Therefore, for computing $\\langle x | y \\rangle$ as defined above, one has to call `np.vdot(y, x)`." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T08:59:00.320533Z", "iopub.status.busy": "2024-02-15T08:59:00.320232Z", "iopub.status.idle": "2024-02-15T08:59:01.385530Z", "shell.execute_reply": "2024-02-15T08:59:01.384814Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Vectors of high similarity: 4.104875150354758\n", "Vectors of low similarity: 0.22360679774997913\n" ] } ], "source": [ "import numpy as np\n", "from numba import jit\n", "\n", "x = np.array([ 1.0, 1j, 1.0 + 1.0j ])\n", "y = np.array([ 1.1, 1j, 0.9 + 1.1j ])\n", "print('Vectors of high similarity:', np.abs(np.vdot(y, x)))\n", "\n", "x = np.array([ 1.0, 1j, 1.0 + 1j ])\n", "y = np.array([ 1.1, -1j, 0.1 ])\n", "print('Vectors of low similarity:', np.abs(np.vdot(y, x)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Definition of DFT\n", "\n", "Let $x\\in \\mathbb{C}^N$ be a vector of length $N\\in\\mathbb{N}$. In the music signal context, $x$ can be interpreted as a discrete signal with samples $x(0), x(1), ..., x(N-1)$. Note that we start indexing with the index $0$. The **discrete Fourier transform** (DFT) of $x$ is defined by:\n", "\n", "$$ X(k) := \\sum_{n=0}^{N-1} x(n) \\exp(-2 \\pi i k n / N) $$\n", "\n", "for $k \\in [0:N-1]$. The vector $X\\in\\mathbb{C}^N$ can be interpreted as frequency representation of the time-domain signal $x$. To obtain a geometric interpretation of the DFT, we define the vector $\\mathbf{u}_k\\in\\mathbb{C}^N$ by\n", "\n", "$$\\mathbf{u}_k(n) := \\exp(2 \\pi i k n / N) = \\cos(2 \\pi k n / N) + i \\sin(2 \\pi k n / N)$$\n", "\n", "for each $k \\in [0:N-1]$. This vector can be regarded as a sampled version of the exponential function of frequency $k/N$. Then, the DFT can be expressed as inner products\n", "\n", "$$ X(k) := \\sum_{n=0}^{N-1} x(n) \\overline{\\mathbf{u}_k} = \\langle x | \\mathbf{u}_k \\rangle$$\n", "\n", "of the signal $x$ and the sampled exponential functions $\\mathbf{u}_k$. The absolute value $|X(k)|$ indicates the degree of similarity between the signal $x$ and $\\mathbf{u}_k$.\n", "\n", "In the case that $x\\in \\mathbb{R}^N$ is a real-valued vector (which is always the case for our music signal scenario), we obtain:\n", "\n", "$$ X(k) := \\langle x |\\mathrm{Re}(\\mathbf{u}_k) \\rangle - i\\langle x | \\mathrm{Im}(\\mathbf{u}_k) \\rangle $$\n", "\n", "The following plot shows an example signal $x$ compared with functions $\\overline{\\mathbf{u}_k}$ for two different frequency parameters $k$. The real and imaginary part of $\\overline{\\mathbf{u}_k}$ are shown in red and blue, respectively." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T08:59:01.415997Z", "iopub.status.busy": "2024-02-15T08:59:01.415716Z", "iopub.status.idle": "2024-02-15T08:59:02.173141Z", "shell.execute_reply": "2024-02-15T08:59:02.172618Z" } }, "outputs": [ { "data": { "image/png": "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s88+W6Ft+5qweTaz6tXLNvpKS0t57733us99/vnnOXnyZA4bNoz//e9/WadOHQJgzZo1+d1336l+4nCQP/5INm3K0vR0bgZ4XFYWd+/eHZFrLCkpqTBR7tixI+1Hjqi+smuXmrVrjhrWryffey84A7xw+fXXXwmAHTp0qPDbk09W1Hs2hachTUaGsp6NQ/wJyAnQmGbChAkgid69e+O8884DACxZsqRiwg4dgBNPBPbvVx68Dx5UXrw1VZYfflC+/YuKVECPSD5Oh8OBF198ESUlJeWOl5SUYJlXwf36ASUlqpkdOFCxXhkZGWjRogXEOwpJQQHaPPKICk5w1lmmo5T07dsX55xzDjIzM93HTjvtNPTt29f8BXqSlaU81v/6K7BmDZCdDQwdGlpemrjj0CHg5JOBO++MTP779++vcCwzMxNt27Ytd8yzmW3bBtx8MzB7NnDoUBLef/99vPXWWwCA5557DldccQWeffZZvPjii9i/fz969uyJZcuW4dpLLgHOPVdF/BkwAFi5EknTp+Oh3r2xKz8fzz33XESucdq0aSgsLESdOnXc19WvXz8kpqUB1aoBf/yhXlCao4aMDBVrybPdegf2sJp58+YBALp27Vrht5deAjp2BN58E3AlM8fUqSpSSUEBkJAArF1rUW2jhC+pOV4+8baCbFgvjxw5knPnziUAtmvXzndiz5lTkyZqlq+psvz+O1m3buRn8gUFBezfv79P7xS+VmqNZpaSolaSfdXLWPXNBNgV4J0AszIzOcVrNdosht5z586dCYADrVwedDqV2seuXWpPXlPlMNQnfv2V7N8/cuWUlpa69elTU1ODNhp98cXyq2L//e9/K/S5lJQUTpo0qcwK14fu5MqVK5mYmMiEhAQuX77cqstzc8EFFxAAX3vtNf74448EwE6dOlVM+Oef5EcfadW+KsyaNeTtt8dGA8FoZ99//73fNLNnq9dyUZHavKi0mTmdSi+jQYO430mHVrEIj127djEhIYHJyck8ePAg8/LyKCJMTk5msRH2zBvjRfX+++Tjj0e3whpL2LKFfPVV9X+kx53du3ezY8eOBMAaNWrwrLPOMuVKx7Nef/yhnEN4Yrfbecl557mD2+QBvLxbt7CNilauXOkW3G1W35TPPyffecfaPDURx3Dhlp6uxsNI7qiOGjWKAHjyySdz4sSJoVnUU8WA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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from matplotlib import pyplot as plt\n", "%matplotlib inline\n", "\n", "N = 64\n", "n = np.arange(N)\n", "k = 3\n", "x = np.cos(2 * np.pi * (k * n / N) + (1.2*np.random.rand(N) - 0.0))\n", "\n", "plt.figure(figsize=(10, 5))\n", "\n", "plt.subplot(2, 1, 1)\n", "plt.plot(n, x, 'k', marker='.', markersize='10', linewidth=2.0, label='$x$')\n", "plt.xlabel('Time (samples)')\n", "k = 3\n", "u_k_real = np.cos(2 * np.pi * k * n / N)\n", "u_k_imag = -np.sin(2 * np.pi * k * n / N)\n", "u_k = u_k_real + u_k_imag*1j\n", "sim_complex = np.vdot(u_k, x)\n", "sim_abs = np.abs(sim_complex)\n", "plt.title(r'Signal $x$ and some $u_k$ (k=3) having high similarity: Re($X(k)$) = %0.2f, Im($X(k)$) = %0.2f, $|X(k)|$=%0.2f'%(sim_complex.real,sim_complex.imag,sim_abs))\n", "plt.plot(n, u_k_real, 'r', marker='.', markersize='5', \n", " linewidth=1.0, linestyle=':', label='$\\mathrm{Re}(\\overline{\\mathbf{u}}_k)$');\n", "plt.plot(n, u_k_imag, 'b', marker='.', markersize='5', \n", " linewidth=1.0, linestyle=':', label='$\\mathrm{Im}(\\overline{\\mathbf{u}}_k)$');\n", "plt.legend()\n", "\n", "plt.subplot(2, 1, 2)\n", "plt.plot(n, x, 'k', marker='.', markersize='10', linewidth=2.0, label='$x$')\n", "plt.xlabel('Time (samples)')\n", "k = 5\n", "u_k_real = np.cos(2 * np.pi * k * n / N)\n", "u_k_imag = -np.sin(2 * np.pi * k * n / N)\n", "u_k = u_k_real + u_k_imag*1j\n", "sim_complex = np.vdot(u_k, x)\n", "sim_abs = np.abs(sim_complex)\n", "plt.title(r'Signal $x$ and some $u_k$ (k=5) having low similarity: Re($X(k)$) = %0.2f, Im($X(k)$) = %0.2f, $|X(k)|$=%0.2f'%(sim_complex.real,sim_complex.imag,sim_abs))\n", "plt.plot(n, u_k_real, 'r', marker='.', markersize='5', \n", " linewidth=1.0, linestyle=':', label='$\\mathrm{Re}(\\overline{\\mathbf{u}}_k)$');\n", "plt.plot(n, u_k_imag, 'b', marker='.', markersize='5', \n", " linewidth=1.0, linestyle=':', label='$\\mathrm{Im}(\\overline{\\mathbf{u}}_k)$');\n", "plt.legend()\n", "\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## DFT Matrix\n", "\n", "Being a linear operator $\\mathbb{C}^N \\to \\mathbb{C}^N$, the DFT can be expressed by some $N\\times N$-matrix. This leads to the famous DFT matrix $\\mathrm{DFT}_N \\in \\mathbb{C}^{N\\times N}$ matrix, which is given by\n", "\n", "$$\\mathrm{DFT}_N(n, k) = \\mathrm{exp}(-2 \\pi i k n / N)$$\n", "\n", "for $n\\in[0:N-1]$ and $k\\in[0:N-1]$. Let $\\rho_N:=\\exp(2 \\pi i / N)$ be the primitive $N^\\mathrm{th}$ root of unity as defined in the FMP notebook of the exponential function. Then \n", "\n", "$$\\sigma_N:= \\overline{\\rho_N} = \\mathrm{exp}(-2 \\pi i / N)$$\n", "\n", "also defines a primitive $N^\\mathrm{th}$ root of unity. From the properties of exponential functions, one obtains that\n", "\n", "$$ \\sigma_N^{kn} = \\mathrm{exp}(-2 \\pi i / N)^{kn} = \\mathrm{exp}(-2 \\pi i k n / N)$$\n", "\n", "From this, one obtains:\n", "\n", "$$\n", "\\mathrm{DFT}_N =\n", "\\begin{pmatrix}\n", " 1 & 1 & 1 & \\dots & 1 \\\\\n", " 1 & \\sigma_N & \\sigma_N^2 & \\dots & \\sigma_N^{N-1} \\\\\n", " 1 & \\sigma_N^2 & \\sigma_N^4 & \\dots & \\sigma_N^{2(N-1)} \\\\\n", " \\vdots & \\vdots & \\vdots & \\ddots & \\vdots \\\\\n", " 1 & \\sigma_N^{N-1} & \\sigma_N^{2(N-1)} & \\dots & \\sigma_N^{(N-1)(N-1)} \\\\\n", "\\end{pmatrix}\n", "$$\n", "\n", "In the following visualization, the real and imaginary part of $\\mathrm{DFT}_N$ are shown, where the values are encoded by suitable colors. Note that the $k^\\mathrm{th}$ row of $\\mathrm{DFT}_N$ corresponds to the vector $\\mathbf{u}_k$ as defined above." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T08:59:02.175890Z", "iopub.status.busy": "2024-02-15T08:59:02.175663Z", "iopub.status.idle": "2024-02-15T08:59:03.237914Z", "shell.execute_reply": "2024-02-15T08:59:03.237299Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAvoAAAEYCAYAAAAte1LBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABJuElEQVR4nO3de5xkVX3v/c9vShHlIiB3lCA5JMaggmlmyINF2qg8gCKIKJJE7NAROcd5OZwnJN7AmQEM6MEkw6NIBnuehhwvQ0BkjEMESeZMqYdpBiFyVTmIiIwzDDIC3mB6fs8ftdtpmv1bU1VdVbN79ff9etWru9aqtffau6rXb/WuvX/b3B0REREREcnLnO3dARERERER6T5N9EVEREREMqSJvoiIiIhIhjTRFxERERHJkCb6IiIiIiIZ0kRfRERERCRDmuiLiIiIiGRIE33pmJldZGZnV6AfY2b2h9u7HyIiUi2KUzLbaaI/i5nZg2b2KzN7ysx+amajZrZzi233Ak4H/qlkeU+a2SYz+7aZnWVmc0pe89Skx/5Tnm+Z8po/30Z3LgHO72QfiIhItRVx440dtFOckllPE305wd13Bg4DDgc+3GK7IWClu/+qZHm7AL8DXAx8EBgpW+ekxyOTnwMPTXnN57fRlxXA681svxb7LiIi+RtCcUpmOU30BQB3/ynwdZoTfgCKIxjXmtmjZvZDM/vApCbHAf8rsbyfu/sK4FTgPWZ2aI+6jrv/GrgNOKZX6xARke2vONr+N2b2XTP7hZmNmNk+ZnZDcZT+G2a2e/FyxSmZ9TTRFwDM7KU0B8X7i+dzgK8C/wkcALwBONvM/u+iyauA721rue4+BjwM1HvQ7cnuBV7T43WIiMj293bgTcDvAScANwAfAfakOa+ZOCilOCWznib68hUzexL4MbABWFiUHwHs5e7nu/vT7v4AcAXwrqJ+N+DJFtfxCLDHlHVuKh5faWUBZvYvZnb1pOe3mplNesmTRZ9ERCRv/6+7r3f3nwANYI273+7uvwGuo3kaKvQ5TsE2Y5XilPTd87Z3B2S7O8ndv2FmfwJ8geYRkU00z13c38w2TXptjeagCvA4sEuL6zgA+NnUdbbZz4OBx82sVvTjGXf3SfW7FP0WEZG8rZ/0+69Knk8kleh3nIJ0rFKckr7TEX0BwN3/FzBKMzMANI/w/9Ddd5v02MXdjy/qv0vza9MkMzuC5gD6zU77ZmY7AM8A/xs4EvgDnvt17B/QPM1IREQE+hiniuVsK1YpTknfaaIvk/0j8CYzOwwYA54wsw+a2QvNrGZmhxYDIsBK4E+iBZnZrmb2FuBLwP909zun0a+JwfLrwLHAocBdk9b1AuCPgJumsQ4REclLP+MUJGKV4pRsL5roy2+5+6PAVcB57j5O8yKnw4AfAhuBzwEvLl5+FXC8mb1wymK+Oumc/48Cfw/85TS7NjFY3gL8cfH87kn1bwVWufsj01yPiIjko59xCtKxSnFKtgt79mnOIq0zs78DNrj7P/Z4PRcBq939BjO7BngpcIq7P1zUrwGG3f2u1HJERGR26VecKtYVxirFKdleNNGXyjOzFcD73f3HZvY+4JPu/uJttRMREekXxSqpIk30RUREREQypHP0RWRGMLNlZrbBzEq/+ramS83s/uKuma+dVHesmX2vqPtQ/3otIiKzSdVilSb6IjJTjNLMZBE5DjikeJwJfBagyGf9maL+lcBpZvbKnvZURERmq1EqFKs00ReRGcHdV/PsG9pMdSJwlTfdAuxmZvsBc4H73f0Bd3+aZiq9E3vfYxERmW2qFqtm5J1xX2TmuwV1FpTXEst7fqJuh0TdjtG6dt45qAFe8pK4bs89w6qNG8vLH3ssXtxTT22OK/lFou5XQflvEm1S60pdBxK9Y6mP5gsSdVOzqE22U2npzjvH6+rw7eroDRt/6qmw7teJVT0dlD+TaDMelG8CfuEevSlt+y9m/ssWX7uumYZu8qYudfelbazuAJrp8iY8XJSVlc9rY7kiHdlzzz39oIMOKq+coWMEdDaiKwZPpRg8oZMY/NhjD/LkkxsVq1owIyf6u9H8rqNMtEG7Jpa3b6LuoERddLu93Q4/PG40NBRWbRk6I6wbHW2vHKDR2BBXcmuiLrpnyAOJNonRLgwzEA/jicGYgxN1r0rUHVFaevjhe4ctEm8XZwxtiSs7eMM2NRph3ffjNfFgUP7TRJsngvLPJtp04pfA+1p87SL4tbsPTGN1ZYO+J8pFeuqggw5i7dhYeeUMHSMgPaVUDN5KMXiq7sXg88+fTqh4rpxj1Yyc6IvIzGD09fzAh4GXTXr+UuARmpGsrFxERCTrWKVz9EWkZ4zm0YRWHl2wAji9yGhwJPBzd19H89DZIWb2cjPbAXhX8VoREZGsY5WO6ItIT3XraIKZfREYBPY0s4eBhRSn97r75cBK4HjgfprfxP5lUbfZzOYDX6d5qvAyd7/7OSsQEZFZK9dYpYm+iPRUtwZPdz9tG/UOvD+oW0lzcBUREXmOXGOVJvoi0jN9Pu9RRESkbTnHqr5N9M1sR2A1zbxMzwOucfeFZrYHsJzmxfUPAu9098c7XU90Zf+RiTZz6/Wwbsuq1WHd4GB5eaPxtXhljevjuuHr4jr2C8rjFKv1+pvDutWrjotXNfiJ0uKxRMaHW+KlJZPJ7hGUd/5+xTeS6+T9aiTer+HhdWFd/H59MGxRr8eftdWr4gw/c4MN6+T9SqXA61Sug6fkqV+xKkrXMjPG2S7HRRJxkQ7G2UYiLpKIi4lMameMDpaWH6r3a4pvtd2ukXi/CN6vVFrTTuUaq/q5Xb8B/tTdXwMcBhxbXITwIeBmdz8EuLl4LiIZ6PMFTiLdoFglMsvkHKv6NtEv7gA2cbeP5xcPp3lI+sqi/ErgpH71SUR6z1p8iFSBYpXI7JRrrOrrNxVmVjOzO4ANwE3uvgbYp0grRPGz9M4JZnamma01s7Wt3r1MRLYvo3k6UCsPkaroVqx69NFH+9ZnEelczrGqrxN9dx9398No3gRgrpkd2kbbpe4+4O4DL+pZD0Wk2+a0+BCpim7Fqr322qtnfRSR7so1Vm2XPrv7JmAVcCyw3sz2Ayh+pu4ZLSIzyEQmgxwHT8mfYpXI7JBzrOpbn81sLzPbrfj9hcAbgfto3vXrPcXL3kP6cm4RmWFyHTwlT4pVIrNTrrGqnxcQ7wdcaWY1mvvqanf/VzP738DVZjYMPAS8Yzor2TcoT6WeWjYUp54arqVSTC0Lyl+SaHNhWOPje4Z1m2rlZ4ZdxRVhmyfirF+MJU40mzsyUlp+DvF+ajQujheYTLd1VGlpvR4ntFg9FO13WFuLL5U5Jig/JWwBpyfqdh33sK5Wiw72nRu2aTTi7bLaGWHdyEj5+3IGR4dtHgxSwj0/bNGZiUwGIjNIX2LVpuBvMJWS8YlE3fGJumhMP3o0HleSY3rthMTaOhnT14d1Y8PDYd2NQfmuibh4eiIuwnhYY41rgpp4TIdUDsjUmF6eUnLuaDymX51I83lPIi7OD8pXdzpnGu5kzhT/z9xoHBHUbE6sp305x6q+bZe7fxc4vKT8MeAN/eqHiPTXTDwCIrOXYpXI7JRrrMr1HxgRqYCZmo5MRERmj5xjlSb6ItJTMzEdmYiIzC65xipN9EWkZyYyGYiIiFRVzrFKE30R6SkNMiIiUnW5xqrstuugoHzLqk4z61yeqDurtHR8vPyKeUhnhVmU+N4oyqgwP5n5Jd6u81LbNbxPabGPbwmbjNU+HNatjNfE8fxrafncVX8btrFaef+a3pKoK3+/fPy4sMVYkO0IYGXivVwTlA90+H6lPodRUoqh8fgzf1DQ9x0SPehEzkdJRKbj+0H5zxJtUpl1UmOLhWNLKntO+XgJ4OPx+ByNmSsbcYwYS2TCmTseZ8KZV7shqInHywWp7Yq7wRrK4046vsUGxq8N66JYMMyLE0ssj6XQ2ZxkUSKLz/GNOPaNJ2NcVJOaZ90alP8i0aZ9Oceq7Cb6IlItuQ6eIiKSj1xjlSb6ItIzOR8lERGRPOQcqzTRF5GeyjVlmYiI5CPXWJXrPzAiUgFG8267rTxaWp7ZsWb2PTO738yec6tNM/sbM7ujeNxlZuNmtkdR96CZ3VnUre3C5omISAa6GauqFqd0RF9EeqpbRxPMrAZ8BngT8DBwq5mtcPd7Jl7j7v8D+B/F608A/ru7T76+8fXuvrFLXRIRkUx0I1ZVMU7piL6I9MzEeY+tPFowF7jf3R9w96eBLwEnJl5/GvDFDrsuIiKzRBdjVeXiVHZH9H8vKB8cTLValqhLpOIaWV9afmki7eK+iTV9LJmW6uKg4sywzcjI0rDu0OE4DeWNUZquwXrYZh7l+6IpyP8ILGaktNwTb9gFxGm/jkn04q6Rr5aWW2IfwkVhTSrF3NVBHrFbEp8NHynfFwA2HH8Oo8/v4GCcUm1FUL5jYi2dauNowp5Tvqpc6u6TP8QHAD+e9PxhYF7ZgszsRcCxwPxJxQ7caGYO/NOUZYv01YNB+R6JNnNTY0QyPW/5GFGvl4+JACsSKRRTqaDPDsrPqcfxbXHj7fECwxSaiRg8HKea3DeRhnJLIsHmvDAWPBC2OTARg0nEgguC8nPrcQy2xhHxqmqpNKrl+9Drp4QtLkyk3kxt18hI+f4dHr4+Xh53BuW/SrTpTJdiVeXiVHYTfRGpljYGz43uPpCoL4sgUWQ+AfjWlK9Dj3L3R8xsb+AmM7vP3eObDYiIyKzRpVhVuTilU3dEpGe6fOrOw8DLJj1/KfBI8Np3MeXrUHd/pPi5AbiO5lesIiIyy3UxVlUuTmmiLyI9YzS/Nmzl0YJbgUPM7OVmtgPNQfI5ZyGZ2YuBPwGun1S2k5ntMvE7zbO87upws0REJCNdjFWVi1M6dUdEeqpbRxPcfbOZzQe+DtSAZe5+t5mdVdRP3Ef9bcCN7j75Hun7ANeZGTTHvS+4+791qWsiIjLDdSNWVTFOaaIvIj3Vza8N3X0lsHJK2eVTno8Co1PKHgBe08WuiIhIRrp4UKpScUoTfRHpmZxvKy4iInnIOVZlN9HfLUg/1WikUo+9JKwZH49TFEZpNI9MrCmVYuzURAqsKA3aJYkUaLcMXxHWzR0fD+vm1cpTOZ7XiFPBplJxLUqk4loUtLPGB8M28Iqw5iPjcSaqKLXlmsSaUu+XJd+v8nap9+vS4TgNqSfeL6uVpyZLfeajv5Pa7beHbTqV6+ApMh0/DcpT8ePo0TMStd2NH1cl1rQoOR4FqYAT45HXH43X1YhTQTNaPo4tSKTQnHRK9HPEWwVL+HBpeTLej8bxqEG8XdH7dUzi/VrCPmHdBzp4v1Ix2OMsn+l4P3p0afkwqXgfvV+/SbTpTK6xKruJvohUx8QFTiIiIlWVc6zKdbtEpCLiY1AiIiLVkGus0kRfRHrGaKYdEBERqaqcY5Um+iLSU7me9ygiIvnINVZpoi8iPZNzJgMREclDzrFKE30R6SkNMiIiUnW5xqq+bZeZvYxmxq59gS3AUndfYmaLgPcCE/m1PlLcbKAzQ0Pl5Y04pRZcGNasDVIyQnNDyqRSMjYabw/rxsfLU2oB/F3Qj7lBmkSAeY3jw7oFtRvCuscpT8t5VVAOsGwo3ubFjTjt24FD5du8JJFG7PSwBmq1OAUoXFRa6vX445ZKZ7ZqPN7mWq38fU59NuYn1jVWS509uD4oPzduEv2dPPRQYj3ty/koieSpX7HqiaA8NaY3GhcnlhiktQRWBGNLKoXmziOdpRYeGSkf058ajse3TXFGRhYnUmUubtxZWu71T4RtLkykf5zD5WHdAk4uLa/Xrw3bpMb0S8IamNfYUF7Oe8M2PhIn+lyUiB8+MlJabsPxnMka14R1axJpPq8O9n29vjps02gsC2o2h206kXOs6uc/MJuBv3b375jZLsBtZnZTUfcP7p763IvIDJXr4CnZUqwSmYVyjVV9m+i7+zpgXfH7k2Z2L3BAv9YvIttHrinLJE+KVSKzU66xarv8A2NmBwGHs/WmpPPN7LtmtszMdg/anGlma81s7S/71VERmZaJlGWtPESqZrqx6tFH4zu+ikh15Byr+j7RN7OdgWuBs939CeCzwO8Ch9E8ivKpsnbuvtTdB9x94EX96qyITMvE3QZbeYhUSTdi1V577dWv7orINOQcq/raZzN7Ps2B8/Pu/mUAd18/qf4KSFx5IyIzTq7nPUq+FKtEZp9cY1U/s+4YMALc6+5/P6l8v+KcSIC3AXdNZz1bhs4orxi+Lmzj43uGdYsS39N8LMi6cmoiI0Eqs875iQw/0bpS2Q98/G/DutRV+LsG61qQWtfQlrDuoeE4HkbJX2rDbwnbfGA8zgawMLFdi8bHS8ut9q2wjQdtABYl3q/xYB/WEvtwdXJd8XaNj+8drGtdaTkQ7/jLLovbdCDnTAaSp37FqihnyJZVcQYSOh7vy8ujuALpscoTY3A0Lna+ruMS6wrixKp4LD0vkZktkaeMhXy5tPxjq+I2tah/pPdhFMdS+zA9F2g/tkQxDNLv10Ci3crgs7FqVdiEWu3poCZeTydyjlX9PKJ/FPBu4E4zu6Mo+whwmpkdRvNdexB4Xx/7JCI9luvgKdlSrBKZhXKNVf3MuvNNyi9q7jxnvohUWs5HSSRPilUis0/OsWomXlcgIjNIroOniIjkI9dYlet2iUgFdDuTgZkda2bfM7P7zexDJfWDZvZzM7ujeHys1bYiIjI7dTNWVS1O6Yi+iPRUt44mmFkN+AzwJuBh4FYzW+Hu90x5acPd39JhWxERmYW6EauqGKd0RF9EembivMdWHi2YC9zv7g+4+9PAl4A4hUb32oqISMa6GKsqF6eyO6I/OhrV7Be22ZRIXXh8Yl212sWl5fV6nELz7zpIodlc19tLy73+87DN1YntWpxIAb24tqG0fEkqbXS841lMnGJs0eiyttdltY1xPxLtXhnsD6/XE+t6R1iXSll2YfA+1+up9GjlnyfYelvOMk+En6n3hm2WjZYPVxtTu7ZDbRxN2NPM1k56vtTdl056fgDw40nPHwbmlSznj83sP4FHgHPc/e422or0RRR8BwdTrY4Ka8YS4/3ZQXmtdmbYZmQkjmOp1MIHjkSpheN1PZ4Yt1PbtZiLSsv/fTAedS5IrGtLYrRazMml5YsGjw7bLKcR1lnthrAO1peW7pHY7z4yklhXPFeM2l2aWFfUP4Ba7Wth3fKgfE5iH0J007lU/zrTpVhVuTiV3URfRKqlmZa8Be4b3X0gtaiyVlOefwf4HXd/ysyOB74CHNJiWxERmaW6FKsqF6c00ReR3jGDHXds7bW/+tW2XvEw8LJJz19K82jIb7n7E5N+X2lml5nZnq20FRGRWap7sapycUoTfRHpHTN4XteGmVuBQ8zs5cBPgHcBf/bs1dm+wHp3dzObS/Pb2MeATdtqKyIis1T3YlXl4pQm+iLSO12c6Lv7ZjObD3wdqAHL3P1uMzurqL8cOAX4r2a2GfgV8C53d6C0bVc6JiIiM1uXYlUV45Qm+iLSO909oo+7r2TKHUqLgXPi908Dn261rYiISJcPSlUqTmmiLyK90+WJvoiISNdlHKuy26o4y2OcXuoqrgjr5idSXhKkC7ukEV+5PTeZyvGEsC5KoznWiNN3nZpIr+jjx4V1lwbpzBYk0pJdM/rmsG4hw2Hd0aPlKdwa7BO2WZKoS71ftVr5/jioEb//6dSbiZRlQbtjEp+NeYn3a24ilWf0fqU+89HfyWOPhU06084FTiKzyK5BeaMRpyes1+MbZa5sfDisOydK65tY11PDnaaCLo+LaxJxdrfEODuv8eKwzuvlBz7HEvsiNc6ey5awbglfLi23RhwX6/XVYd3CRCz49+D9WpBYF8NxGuvxxPtl4fsV8/op8fIS79c7g/c5NY+J00R3efqacazKbqIvIhWS8VESERHJRMaxKs+tEpFqyHjwFBGRTGQcq1q+EZiZXVhSFt+yTkRkYvBs5SHSBYpVItK2jGNVG3f85QAzO23iiZntDXyj+10SkaxkOnhKZSlWiUj7Mo1V7fT4fcDXzez/0Lwl7/8HfLAnvRKRPGT8dahUlmKViLQn41i1za0ys6uA7wC3A+8HvgBsBk5y9/t72z0RmdHmzMk2k4FUi2KViHQs41jVyr8vVwKvAc4ofh5E8xa/f2Fmd7n7Nb3rXvsajQ2l5fV6nP7xiURmp1otTj82MrK0tPyW4TiN2LzG8WHd+HicOu3qWnkqrmQKzZEjw7qxMCUjLODk8uXVPxG22dSIU3vtTlz3eJBiLJVuzRrl/QM4MthPAD4yUr68OPsny1OpNxMpL632ydLyJcQftujz1Fxe/Dm8IChPfeajv5PmvKiLMj5KIpUzo2LVvmHN9WHN6qH1Yd1YIo4tbry9tNzrj4ZtNiXjYpwK+vEgDXN6TN8rrFsTpLUEYKh8TJ/XeEXYZHkizSdcHtYs4KLS8iWJ+LbzUJzWcjiRKvOCKPVmlCYVWNCIPxs/S8RFKG93Tj2OR6k00STScC8bKo9JTyWXd3BQ/oJEmw5kHKu2uVXufjNw88RzM3se8EqaA+mRQKUGTxGpmEwHT6kWxSoRmZZMY1XbW+Xum4HvFo9/7nqPRCQfGR8lkWpTrBKRlmUcq/LcKhGphowHTxERyUTGsSrPrRKRasj4AicREclExrGqnRtmvbKkbLCbnRGRzGR8ExKpJsUqEWlbxrGqnR5fbWb/DHwS2LH4OQD8cS861rlbS0tXrzoubDGWuGfieYmr8A8dLr/afmA8cWV8InvK+Ykr4xcHV7KPj8eZVcYSy5uXyBQQZTnYsirert0T27Uwsa7dg+3yxPu1JpExKLldw+XpddLZc04M6+5J9CPKPPCBxLpS7xeJ7TomKP/IqnhptVr53wn8ItGHDs3AgVFmtBkRqw4Ka9aFNWPBGAbpuEMwPi9KZEuLYg6Aj6fiafm4OK/x4rBNKrNOaruibGQLE5l1Tk1s1zvDGljDh0vL0zEnkQUuGXfK+7gwkZ2mkdiuRYl1HR++X/F2XRLWwEcSc5Ioi+HCxPLgVUH5C5OtOpJprGrnzrjzgJcB36Y5m34EOKrVxmb2MjP7DzO718zuNrMFRfkeZnaTmf2g+Ll7OxsgIhWW8VESqSzFKhFpT8axqp2J/jPAr2j+G7Uj8EN339JG+83AX7v7H9BMdfb+4ivWDwE3u/shNFOjxcnkRWRmyXjwlMpSrBKR9mQcq9qZ6N9Kc/A8AngdcJqZtZyX2N3Xuft3it+fBO4FDgBOpHmjE4qfJ7XRJxGpsokLnFp5iHSHYpWItCfjWNXOvybD7r62+P2nwIlm9u5OVmpmBwGHA2uAfdx9HTQHWDPbO2hzJnAmQHymn4hUThePgJjZscASoAZ8zt0vnlL/58AHi6dPAf/V3f+zqHsQeBIYBza7+0DXOiZVUplYdeCBB3ayWhHZHroUq6oWp9rZqtvM7C+Ag939fDM7EPheuys0s52Ba4Gz3f0Js9QFiFu5+1JgKcD+ZomrjkSkMrqYm9jMasBngDcBDwO3mtkKd79n0st+CPyJuz9uZsfRHDPmTap/vbtv7EqHpKoqE6sGBgYUq0Rmgi7FqirGqXZO3bmMZtaC04rnT9LcmJaZ2fNpDpyfd/eJy+zXm9l+Rf1+wIZ2likiFdbd8x7nAve7+wPu/jTwJZqnU/yWu3/b3R8vnt4CvLSr2yMzgWKViLSne7GqcnGqnX9f5rn7a83sdoDiP5EdWm1szcMhI8C97v73k6pWAO8BLi5+Xt9Gn0rcWV48+ImwxdyRkXhxw/uEVTcG6azm1c4M2zyeSPu1ayKN2OJaeUz5dCIl4wJODutS6czuGinvxzmDYROWJ1KMnZqoi9odPRjvi6Ggf5BOZzYv2B9Lkmky14c1qZRlZwfLtNp7wzYXJHoBZ4U1c0feVl4xeHRieccH5b9K9qJt7R0l2dPM1k56vrQ4OjrhAODHk54/zLOPgkw1DNww6bkDN1rzG8F/mrJsyceMiFW/F9bsF9bcmFjevESKYx8JxrHRethmcSOIpcCiWiot50XlfaivDNswFMfgKIUmwAVB/DiPeJx9PBGPthDHlnlBLFhCPEeIYg6k00SPBDFudDTu3/JE6k1LvF/Lg/J6/athm7uGwipIpoku3x97JFo0L7Ups1OyVdu6F6sqF6fameg/U3wl4QBmthfQTiaDo4B3A3ea2R1F2UdoDppXm9kw8BDwjjaWKSJV1t7guXEb5yOWRZDSyGdmr6c5gL5uUvFR7v5IcW71TWZ2n7uvbrVzMmMoVolIe7oXqyoXp9qZ6F8KXAfsbWYfB04Bzm21sbt/k/IdAPCGNvohIjOFWTezFDxMMz/6hJfSzJE+ZZX2auBzwHHu/thEubs/UvzcYGbX0fyKVRP9/ChWiUh7uherKhenWp7ou/vnzew2mgOdASe5+73TWbmIZK6LF+PSTJt4iJm9HPgJ8C7gz569OjsQ+DLwbnf//qTynYA57v5k8fsxwPnd6phUh2KViLSte7GqcnGqra1y9/uA+6a7UhGZJbo40Xf3zWY2H/g6zbRly9z9bjM7q6i/HPgY8BLgsiJLykR6sn2A64qy5wFfcPd/60rHpHIUq0SkLV2KVVWMU9vcKjP7f1L1Uy5WEhHZqrtH9HH3lcDKKWWXT/r9r4C/Kmn3APCarnVEKkexSkQ61t2DUpWKU61s1S7Fz9+nefnziuL5Cej8VhHZlhl4y3CZkRSrRKRzmcaqbW6Vuy8GMLMbgdcWtwTHzBYB/9LT3nXkgdLSsUYjbHFOIgb4eCJZw2B5arLzGieWlgNclUivuaB2Qli3JEjluSAoB/B6nFJ0y6o4TVeURvOSRPqueYl0ZgsT23xq0G5NYl3nJFKgrU6kvPTBwdJya8T7MJU6LZWybElYE382zq3HZxqcu+q4sO7owfLbYVzSGA7bwCuC8t8k2nRg4rbiIj0202LVbvUgtWUifuyaGEvh8rDm0uH+xY9/HywvH2t8OGwzrxGNR+n4EaXRXJNo89Z6In4kkjN5/ZTS8nT8iGPEvETdkiBNdCPxfq2OPk/AKaviVJlBWEzH+0Yq3qe8pLT0yESLer30BtTcfnuXJ+UZx6p29tSBwNOTnj8NHNTV3ohIXrp86o5ICxSrRKQ9Gceqdrbqn4GxIt0PwEnAVV3vkYjkI+PBUypLsUpE2pNxrGonvebHzewGoE4z+f9fuvvtPeuZiMx8GQ+eUk2KVSLStoxjVctbZWYvoHli705FuxPM7AR3Vy5qEYllOnhKNSlWiUhHMo1V7WzV9cDPgdvo+hV7IpKljC9wkspSrBKR9mQcq9qZ6L/U3Y/tWU9EJD8Zfx0qlaVYJSLtyThWtbNV3zazV7n7nT3rTVc8Vlp6S6JFo3FxWDdWS6QEY31peZSGC2DZUJzaa3worGLO6LLS8mtG3xy22dSI03ftXvtaWLc8SPuVSqF5QTIFWtyPqF1qXcsTab+sFqcfe5zyFKv1epxe9QNDI4m6obBu2Wh5yksfPTpsY41rwro1tVpY1+Ci0vLUZz76O4HNyVZty3jwlMqaGbEqGD/qxGP66XGWaBZwVli3b5iW8fqwzYWJlNTnJVJBXxCsKzmmJ1Mwp8b08tiSTKE5VB5Lm4bCmmVD5XHCSY3p5XMEgDWJ1M3zgjE9la7TGieHdQtrccxsUN4uHT8ODmuOT7RazIWl5XMTqaWjMPvQQ4kVdSLjWNXOVr0OGDKzH9L8OtQAd/dX96RnIpKHTAdPqSzFKhFpX6axqp2tiu/YIyJSJuOjJFJZilUi0p6MY1U76TV/1MuOiEiGMh48pZoUq0SkbRnHqm1ulZl9091fZ2ZP0sxJ/Nsqml+H7tqz3onIzJZxJgOpFsUqEelYxrFqmxN9d39d8XOX3ndHRLKT6VESqRbFKhGZlkxjVYZb9XRp6c+Sbb4V1qxMthsuLV2UyFawuBFnK3hoOM4usDi42n5h0AeA3RNX6C9M1J0arquzzDoLE1kTonapdUX9a7ZLZBqK1pXK4pPIXLRwON730fv1UJD5pyleXvpzWP75TX/my/9Onn0gtAsy/jpUZFqCdCKrh7aETbYk/j6d9tul2ywN685NtivPOJZuE68r1UcYLy1dnVzXGWHdnES7M6L3ZWhV2GY82BfNdZX3HVKj8N+GNfOT64q3a1FQHr2PzXXF5iT6GG/XqrBmKCi/7LJEJzqRcazKc6tEpBoyHjxFRCQTGceqPLdKRKoh48FTREQykXGsanmrzGw+8Hl3f7yH/RGRnJhle4GTVJNilYi0LeNYFZ+E9Vz7Area2dVmdqyZxSc2i4jA1qMkrTxaWpwda2bfM7P7zexDJfVmZpcW9d81s9e22layoVglIu3pYqyqWpxqeaLv7ucChwAjNK+P+IGZ/Z2Z/W43OiIiGeru4FkDPkPzhkivBE4zs1dOedlxNMepQ4Azgc+20VYyoFglIm3rUqyqYpxq54g+7u7AT4vHZmB34Boz++R0OyIiGeruEf25wP3u/oC7Pw18CThxymtOBK7ypluA3cxsvxbbSiYUq0SkLd2LVZWLU+2co/8B4D3ARuBzwN+4+zNmNgf4Aam8T832y4C3ABvc/dCibBHwXuDR4mUfcfd0JsFt2qG0dI9km6PCmuMTqSEXM1Javqh+StjmwKGvhnVBtrXmMkeXlZYfPRov7/FE2sjdE9u1PEgNeSrvDdtc0GHqzQuCfpyXWNfyZOrNeLseD/rx1noiZd1Q+X4HYOj6sOrA0fL/oc8YPTpss7hR/nkCOJ594nbB53ePxL6I/k6a9xbqovYucNrTzNZOer7U3Sfn3TsA+PGk5w8D86Yso+w1B7TYVjIwU2LVsg7GiFrjmrBuTWKMmMdFpeVL+HDYZgEnh3UL+XJYtzhotyTRZkHQP4A1iT7OY31puSdi8OjQ6rBuaCiRojKMwXG6zhWKwc/SSQxeHcXgjRvDNh3pXqyqXJxq5xLjPYGTp95e3N23mFn8KdpqFPg0cNWU8n9w90va6IeIzBDu8PTmlr843OjuA4n6sqg5NUJEr2mlreRBsUpE2tLFWFW5ONXOqTu/A/x84omZ7V4c+cDd791WY3dfzbbu4SMiWXGHzZtbe7TgYeBlk56/FHikxde00lbyoFglIm3pYqyqXJxqZ6L/anffNPGkSF12+HQ7AMwvrjpeZma7Ry8yszPNbK2Zrf1lF1YqIr3X5Yn+rcAhZvZyM9sBeBewYsprVgCnF1kNjgR+7u7rWmwreahMrHr00Uejl4lIhXQxVlUuTrUz0Z8zeXAzsz2Y/g23Pgv8LnAYsA74VPRCd1/q7gPuPvCiaa5URPqjmxN9d99M8+7rXwfuBa5297vN7CwzO6t42UrgAeB+4Argv6XadnlzpRoqE6v22muvaa5WRPqhW7GqinGqncHvU8C3zewamucMvRP4+HRW7u6/vZLGzK6A5NWDIjIDtXi0viXFBZArp5RdPul3B97falvJkmKViLStW7GqanGq5Ym+u19VXGX8pzQvGDjZ3e+ZzsrNbL/i6wqAtwF3TWd5IlItW7bAr3+9vXshs4lilYi0K+dY1dbXmcVg2dGAaWZfBAZppiV6GFgIDJrZYTSPujwIvK+TZT/bS0pLj0y0qNfjm48NrIrrfLA8DZo1Phi2WZJIt1UbjhNCLAkOIDUSKdV2q9fDuvFVbw7rBgfLL/Jek+j7vEQqroXJtF/l7dYk2pyTSMU1viqsYs5g+f5oNL4Wtrm0MRzWLRi+LqyL3i9LHAhMpYRj1XhYVR8sPwPvyEacli76O5n+GQ7PNvF1qEg/zYRYNTpaXn5oo5FodW5Ykz4E+EBpaTouXhvWfWxV3G5RGBfjsW9JIv3jvETdkiD+pdblxOlLGVoVVkVpNC9JptBMxcV4u6I0mp3GRV+1JaxjcLC0+LxGnL79p4l+wOVhzdQ0VhNSMbiZBKvEY48l2rQv51jVTh79FwBvBw6a3M7dz2+lvbufVlIcJw4XkRkv58FTqkmxSkTalXOsaufw3fU0U5bdBvymN90RkdzkOnhKZSlWiUjbco1V7Uz0X+rux/asJyKSnZyPkkhlKVaJSFtyjlXtTPS/bWavcvc7e9YbEclKzoOnVJZilYi0JedY1c5E/3XAX5rZAzS/DjWaWYJe3ZOeiciMl3MmA6ksxSoRaUvOsaqdif5xPeuFiGQr16MkUlmKVSLStlxjVTsT/YeAPwcOdvfzzexAYF/gRz3pWccOLi2dm0g1uXpoWVhntTh95QVEadBeEbY5PayB+eNfDetqtQ2l5VF6MQBrnBzWranFKcGGRsrTdJ1DnL5reSLF2KmJNGLLgzRdqVRhQ0NhFWsT2zWP8v2RSu22gPVhnY/vGdZtqtWC5V0ftrkwkVbvvNoNcT9Goj7Gn3ka5X8n8IK4TQdy/jpUKmtGxKpGo3xMvyXZKk4peHyi1YEjS0vLzxktLweYn0oFXUuN6eXjWL2+Omyz81A83q8Z7u6Ybo3EmB7WwIpgf6RSaF6QTC2dSAEajemj94VtGo2Lw7pFtTjV8mIuKu9D/RNhG4biJFQLhuM5yRPhNsdxcVMQF+OE053JOVaVJ+Audxnwx8BE6rEngc90vUciko1u3VZcpA2KVSLSlpxjVTtH9Oe5+2vN7HYAd3/czHboUb9EJAM5HyWRylKsEpG25Byr2pnoP2NmNYpvt8xsLyBxuzURme3c873ASSpLsUpE2pJzrGpnon8pcB2wj5l9HDiF1P24RWTWy/koiVSWYpWItCXnWNXyRN/dP29mtwFvKIpOcvd7e9MtEclBzoOnVJNilYi0K+dY1fJE38w+NqXoHWaGu5/f5T5N06tKS7es+lDYIpWphcTV+8cE5eeOXx62sdqJYd3CZD/Kr1afPx7nCTgymYEm3q4oy8GqxLpqtTiDwMLEuk4Ntmt8VdhkG5l1EtvFl0vL547H1+8vSGS7WZTIPLE42q7xN4dt1tZSGRriz9TYcPm6UttFuF0vjNt0IOfBU6pp5sSqW0tLf5Zsc0ZYMzB+bdwsGDMbifHykkQvfDzOkmLB2LIwkcVnuBHHj/FE3Imyx6XjQJwVJpXLZfdgTE/Ft1RmnVQsGOtou+LMOqlYsDh4vxY1Epl6Gh8M63w8zm47Vp6MjvNYF7b5flDe7bNsco5V7Zy684tJv+9IcwasoyQiEsp58JTKUqwSkbbkHKvaOXXnU5Ofm9klwIqu90hEspHzBU5STYpVItKunGNVO0f0p3oR0d2pRETI+yiJzBiKVSKSlHOsavmGWWZ2p5l9t3jcDXyPZnYDEZFS/boJiZntYWY3mdkPip+7l7zmZWb2H2Z2r5ndbWYLJtUtMrOfmNkdxSN1o1GpMMUqEWlXzrGqnSP6k68C2Qysd/dM//8RkW7o41GSDwE3u/vFZvah4vnUK8Y2A3/t7t8xs12A28zsJne/p6j/B3dPXYMoM4NilYi0JedY1c5E/+1TC8y2Xhnu7n/fxrJEZBbo4+B5IjBY/H4lsIopg6e7r4Nmegd3f9LM7gUOAO5BcqJYJSJtyTlWtTPRHwCOYOtFTScAq4Efd7Li3jmitHRwMG4RpclsOiusuWvkq6XltyTTZF4U1nwskUbslcEya7X3hm18ZCSsWzM8HNbN4+Ty5Q0eHbZ5nEZYt3siJdjjQd2cwXrYJuofxCk0AeYG+8Nq8Xu8nDjl5TuTKcs+WVr+6URKzp1H4vef4a+FVTcGKdzOGUydmVf+dwI7Jdp0po3Bc08zWzvp+VJ3X9pi232KwRF3X2dme6debGYHAYcDayYVzzez04G1NI+mPN5yz6VKZkisurO0dI9Ei5GROCVjrRaPERcE5fV6eQwDmNfYENYtrAV5EgFYX1r67/V4fLsgkXozlbp5JBgzlwQpogHmJWLweOJs5uVBrDqVVAwu3xcQp9CERAyuPxq22RSH4GRa78eD+LFbPY7BixvLwrqxRIyLYjDDt4RtHgzKnw5bdC7XWNXORH9P4LXu/mSx8kXAv7j7X7WxDBGZRbZsaSuTwUZ3H4gqzewbwL4lVR9tp09mtjNwLXC2uz9RFH+W5nzIi5+fIpW0XKpMsUpE2pJzrGpnon8gz/4n6mngoDbai8gs082vQ939jVGdma03s/2KIyT7AaWHI83s+TQHzs+7+2+//nH39ZNecwXRHepkJlCsEpG25Byr2pno/zMwZmbX0fxP4m00zy8SESnVx/MeVwDvAS4ufj7n1p3WPFF7BLh36nnaEwNv8fRtwF297a70kGKViLQl51jVzg2zPm5mNwATJ279pbvf3mp7EZmd+jR4XgxcbWbDwEPAOwDMbH/gc+5+PHAU8G7gTjO7o2j3EXdfCXzSzA6jOTF8EHhfX3otXadYJSKdyDVWtXXDLHf/DvCddtqIyOzVr6Mk7v4Y8IaS8keA44vfvwmUXgHn7u/uaQelrxSrRKQdOceqlif6xVcJfw4c7O7nm9mBwL7uPtbuSkVkdmjzAieRaVOsEpF25Ryr2jmifxmwBfhT4HzgSZoXCkR5+p7FzJbRvJHJBnc/tCjbA1hO80KpB4F3TjelXb1enqmo0YhTj52SWJ6PHxfWWe3M0vI1paXF8uorE8v7VqJdeaqrgxpx+keLM2gynkjluSRI+2WN+JqPen11WLcwkTrtrUHKtdT7tSSRrnMgsV3x+xXvw7mJFGOplGVe/3lp+VgiBdq84fL+AYyPx5m7Ph1kukvtw3q9PE3f7be39SXfNuV8W3GprBkRq+CB0tIjEy3mjsYpjod5cVh3bjCOHZMYm+cl0kamUkHvEcSPBYn4QSL1Zip+jI4G8SNxfWIqfszhb8O6KI1mKn4wel9YNS/RjyiN5lgjDiCp9ysdP6L3a+o9nLaK4gfAysT7dc5olBxmn7DNT4P9+0zYojM5x6pUou2p5rn7+4FfAxSD3A5ttB8Fjp1SNnGHsEOAm4vnIpKRftxWXGQSxSoRaVuusaqdif4zZlajeQEAZrYXzaMmLXH31cDPphSfyNZsCFcCJ7XRHxGpuImjJDkOnlJZilUi0pacY1U739NfClwH7G1mH6d5xsu501x/y3cIM7MzgTOBxBeUIlIlOX8dKpVVmVh14IEHTnO1ItIPOceqlib6xcVNq4HbaF4tbMBJ7n5vD/v2LMXthZcC7G8Wn9AnIpWR8wVOUj1Vi1UDAwOKVSIzQM6xqqWJvru7mX3F3f8IiK8uaV9LdwgTkZkp56MkUj2KVSLSiZxjVTvn6N9iZi1lLWjDxB3CILhDmIjMbLme9yiVpVglIm3LNVa1c47+64GzzOxB4Bc0vxJ1d391K43N7IvAILCnmT0MLCS4Q9h0DA2Vlzca8bh8emJ5Y7UgdyEAF5WWnpNIFZZKZ+bj42Gd1cp3TZR2E2B5IvVmLZEaEtaXli5JpMD6wNBIWGeNRBqxoWWl5Zc24tygC4L+ASyoxSkllwdpupIpNBt7hXXj49eGdRcGKctuTHw2aFwcVq0Nlgfx53dBYi4yNFSeHu2hh8ImHcn5KIlU1oyIVfBYaWlqPLo6kV6RREpJa5T/35Ma030kTvRptRMS7YJYMBzHgQWNeExPpcpcHsTT1ckx/eSwbn7i2OcFQfxIxftGYkxfw4fDuk3B25xKoTkyEqfQPD8RPw4cCfqfSPe8IhHTvx/WwOJgf9TrcRKrJ4J9Ec+WOpNzrNrmRN/MDnT3h4A4oXwL3P20oOo5dwgTkTzkPHhKtShWiUinco5VrRzR/wrwWnf/kZld6+5v73GfRCQTOQ+eUjlfQbFKRDqQc6xqZaI/+Tufg3vVERHJj3u+mQykchSrRKQjOceqVib6HvwuIpKU81ESqRzFKhHpSM6xqpWJ/mvM7AmaR0teWPwOWy9w2rVnvRORGS3nwVMqR7FKRDqSc6za5kTf3VNpZyrnjKHyO50PD68L2+w6Hh/8WZm4Wt3H/7a0PJWRYFViXYuS6yq/xtwS2XPGE+tamFjXx4J2tVp8pf38oTPidQ3HGXS2DH21tHzB8HVhm/Hx8KaUnJ/o4ynBdqXer1RmnVQmg2gfnpdcV/m+aK4rztAwN8rWlPhsRNmpLrssbNKRnAdPqZaZFqvg6fLiVavCFvckssD5eHwNchQn5nc5HqXWlYpHP0usa1FyXeXj/Smr4rE0FfvmUD5/ADiP8nWNrwqbdDZuk9qHnWXWSe/D8pjk43HWtkW1OKNfal1RTEp85Dk/+Mh3+yu7nGNVO+k1RUTakvPgKSIiecg5VmmiLyI9k/MFTiIikoecY5Um+iLSMzkfJRERkTzkHKs00ReRnunX4GlmewDLgYOAB4F3uvvjJa97EHiS5o0VN7v7QDvtRUQkPznHqvh+zyIi0zQxeLbymKYPATe7+yHAzcXzyOvd/bCJgbOD9iIikpGcY5Um+iLSU30aPE8Erix+vxI4qc/tRURkBss1VuV36s7oaFCxX9ikVtsQ1q1JrOrqINVZvR4nfqrV4ruyp9KPXRikzvJ6PWxjtYvDOvjXsObsYF1LEksLdzuwOEhLBnBg0G5Jon9PJNKILU60WxzsD6//PGwT7XeIU2hC/D7X63Hat2sS6zo+rAGrbQxq4s/8nNFl5RUbo2V1xh2eeSZOWTfFnma2dtLzpe4e55N7tn3cfV1znb7OzKIcrA7caGYO/NOk5bfaXqRLdigtPXowPv42P7G0sUTqTVhfWlqrnRm28JGRsG5RKs1n0M4S64r6B3B8Yl3Lg/LBwXhNDU4O6z6WOPZ5QRBb5gweHbZZzEVxXe2GsO7xYF2fTsSIA0fieJRKIT0yUh6TLk2s6+ywBiyxXXBUaWlqH0aT1Lh3nck5VuU30ReRCnGapxi2ZOOUryifxcy+AexbUvXRNjp0lLs/UgyON5nZfe6+uo32IiKSnXxjlSb6ItJjLQ+eSe7+xqjOzNab2X7FEY79gNKv6dz9keLnBjO7DpgLrAZaai8iIrnKM1bpHH0R6aGJoyStPKZlBfCe4vf3AM+5raOZ7WRmu0z8DhwD3NVqexERyVW+sUoTfRHpsS0tPqblYuBNZvYD4E3Fc8xsfzNbWbxmH+CbZvafwBjwNXf/t1R7ERGZLfKMVTp1R0R6aAvwdM/X4u6PAW8oKX+E4lpmd38AeE077UVEZDbIN1Zpoi8iPdad8x5FRER6J89Yld9EP8zz+MFEo3PDmoFECsVbgvRTlzTixE/nJFNvximwopSdxyTWtYRGWPeB8fgDbbX3BjUnhm18NE6P9VCiH2cE7SyRJnNB4pS08fE3h3WfrpWn+RyLu8eNiffrvOT7VZ6yLPXZuCXuBqckPoeEaevi94vRT5SXP/ZYohedaCuTgcgs8pLS0kbja2GL1Yl0yosa8UDm9VNKy60Rx0UbTo2z8XgUpWVMpao+px5nJpzXiNMzd3ucnZM4LeM8yuPieY1EXKwH4yywqPHhsG634H1ekHi/GI7Tl46Px2mdo5SdR8Zr4q2JuEij/bg4ltgXuwblqWSynck3VuU30ReRipn2OY0iIiI9lmes0kRfRHoo36MkIiKSi3xjlSb6ItJD+Q6eIiKSi3xjlSb6ItJDTj8yGYiIiHQu31ilib6I9Fie5z2KiEhO8oxVmuiLSA/l+3WoiIjkIt9YVYmJvpk9CDxJcy9vdveBTpe1KUgxVq+vDts0GsvCulotTnXmIyOl5ZcOD4dt5ifSfq1Oprwsv/nZvCDlF8DISJyybCxIqQVwQVB+bv2+sI01rgnrIN4fixvl+zBKBwdwYSKN3NraFWHdziPlKcHmJdKS0YhvOpdKWXZNsH9Tqd0+EHyeACzxOYTylJj1epxqdFOQsq43w1yeg6fMPt2MVXBwUB6ntVw2FMex4xOxJRozPc7WmRzTU6mgYX2wrnhMT6WJviSxpruGysvnNeK4GO93mM+csG455bHlp0E5AEPxmL44kSpzcTAnSY3pKxJpSM9PxMWzg/JUCs1G4+1hHZwV1qweKt+uSxMprvcNyp+f6EHn8oxVlZjoF17v7hu3dydEpJvyPUois5ZilUh28o1VVZroi0h2HHhme3dCREQkId9YFX9P1V8O3Ghmt5lZ6XkUZnamma01s7W/7HPnRKRTE0dJWnmIVF5bserRRx/tc/dEpDP5xqqqHNE/yt0fMbO9gZvM7D53f9bJiO6+FFgKsL9Z4v7LIlItM29gFAm0FasGBgYUq0RmjDxjVSWO6Lv7I8XPDcB1wNzt2yMR6Y58j5LI7KNYJZKrfGOVuW/fAw5mthMwx92fLH6/CTjf3f8tarO/mUd5Uo4PyucmM9rckOjh5Ym68qvLx8fjK+PXJrLdrEysSdu11UzeroHx+O8tleGpX9v1HuBe93ij22T2+w6XtfjqN942vSwmIr3TSawaGBjwtWNj5csLx7H2/9YBfPy4sG6sVist72QMg07H5862q5NxTNv1bDlul2JV66pw6s4+wHVmBs3+fCE1cIrITJLvBU4y6yhWiWQr31i13Sf67v4A8Jrt3Q8R6YV8U5bJ7KJYJZKzfGPVdp/oi0jO8h08RUQkF/nGqkpcjCsiOdvS4qNzZraHmd1kZj8ofu5e8prfN7M7Jj2eMLOzi7pFZvaTSXWpU15FRCQ7ecYqTfRFpIf6lsngQ8DN7n4IcHPx/Nk9cf+eux/m7ocBfwT8kmbmlAn/MFHv7qnrw0REJCv5xipN9EWkx/oyeJ4IXFn8fiVw0jZe/wbg/7j7j6a7YhERyUGesSq7c/QfDMrnDg6GbUZGVod1w8OptS0rLa3Vrk+0WR/WjI/vHdY9EaSlujRImwZwQaIXxyTq5o68rbT86MG4TYOLEkv8VlizmKNKy+uD8f+gPhLvw7Hhfw3rbqS87tPxLuT0uGobKcs2llfUosSwAI8l6uJ0ZiMj5enM5gweHbZ5MCh/OtGDzng7S93TzNZOer60uPlQK/Zx93UA7r6uuKFRyruAL04pm29mpwNrgb9298dbXLdIB44IylPxozzmAFhiHBsZKU/ru2g0HiOubjTCupWJuLM8KH9nvR62WTYUp2RMpx0+OSh/SdhiMReGdeOJY5+P85bS8qvCFvBEEHMA1iber7kjI6Xl54yeEbZZ3Lg4XmDtxLguisH1r4YtVg/Fn8OxRErqG4PyPcIW8HtB+Y6JNp3JN1ZlN9EXkSpx2jincWMqN7GZfQPYt6Tqo+30yMx2AN4KfHhS8Wdp/m/sxc9PAXFUFRGRjOQbqzTRF5Ee6l4mA3d/Y1RnZuvNbL/iCMl+wIbEoo4DvuPuv/1qaPLvZnYFJA7FiYhIZvKNVTpHX0R6rC/nPa6gebNEip+p8x9OY8pXocWAO+FtwF3T7ZCIiMwkecYqTfRFpIf6lsngYuBNZvYD4E3Fc8xsfzP7bVYCM3tRUf/lKe0/aWZ3mtl3gdcD/326HRIRkZki31ilU3dEpIf6c1txd3+MZnaCqeWPAMdPev5LSq7Uc/d397SDIiJSYfnGKk30RaTH8rzboIiI5CTPWGXu5Wm3qmx/M4+SFEZpmo5MLG9uIu0Xq1aFVUcHKSAbjVQ6sNTpWOsSdfsF5XHarHo9TlmW2KwwLeNYIt3aLfHi+FmiTu/XVlV4vy4BHnKP86O1yexl3vpZMH99WyqTgchMMzAw4GvHxkrrZvJ4tHpVIjtJkMpa8WOq/OIH9O/9Grj9dtY++aRiVQt0RF9Eeqh7mQxERER6I99YpYm+iPRYnoOniIjkJM9YpYm+iPRQfy5wEhER6Vy+sUoTfRHpoXy/DhURkVzkG6s00ReRHstz8BQRkZzkGas00ReRHsr3KImIiOQi31iV3UT/iaA8lQ7qwUQaqYNqtbBuRVC+Wyp919BQR3XLRstTe42OxotrNDaEdbXarXHDrfdsmOIViTaPJeqeTtTtEJQ/5z4RWzUOjutqNyTWdURpaSot2dBQqi5e05zRZeUVo58I22xqvCWsWxt/DHkwKP9p3CT8O+nNMJdIxScyS8XjRzzmNBrlY1hTaky/MyiP0z82GsEYBlgtNabvFZS/N9EmMabzqkRdNKbvHbZIjdtnJMaq1UPR/hgN22xKzC2+H3cjMaZfEbZ5Il4V5yfiRzQJ3DVuwr6JulSqzN8LyjuaMz30UGJNncozVmU30ReRKsn3KImIiOQi31ilib6I9JCT/kZHRERke8s3VmmiLyI9lO9REhERyUW+sUoTfRHpsTzPexQRkZzkGas00ReRHsr3KImIiOQi31hl7r69+4CZHQssAWrA59z94tTr9zfzM/vSM5HZZSnwiLt1a3lmezmc2OKrR25z94FurVuk29qNVQMDA752bKwvfROZTQbmzmXt2rWKVS3Y7kf0zawGfAZ4E/AwcKuZrXD3e7Zvz0Rk+raQ6wVOMrsoVonkLN9YVZ6cvb/mAve7+wPu/jTwJVr/t0pEKm+8xYdIpSlWiWQtz1hVhYn+AcCPJz1/uCh7FjM708zWmtnaX/atayIyPU7zSEkrD5FKaztWPfroo33rnIhMR76xqgoT/bJzrJ5z4YC7L3X3AXcfeFEfOiUi3dL7oyRm9g4zu9vMtphZeO6kmR1rZt8zs/vN7EOTyvcws5vM7AfFz92n1SHJUduxaq+9orvEikj15BmrqjDRfxh42aTnLwUe2U59EZGumshk0POvQ+8CTgZWRy+YdI71ccArgdPM7JVF9YeAm939EODm4rnIZIpVItnKN1ZVYaJ/K3CImb3czHYA3gWs2M59EpGucOCZFh/TWIv7ve7+vW28LHWO9YnAlcXvVwInTatDkiPFKpFs5RurtnvWHXffbGbzga/TTFm2zN3vTrVZBxsXw4+Kp3sCG3vczVaoH9XqA6gfnfThd7q72p9/Hb66Z4sv3tHM1k56vtTdl3axM2XnWM8rft/H3dcBuPs6M9u7i+uVDHQSq2677baNVqspVlWzD6B+VK0PoFgFXY5V232iD+DuK4GVbbz+tyc+mtnaKuQzVT+q1Qf1oxp9cPdju7UsM/sGsG9J1Ufd/fpWFlFStv1vJCIzhmJVPn1QP6rXh+3Zj5xjVSUm+iIi2+Lub5zmIlLnWK83s/2KIyT7ARumuS4REZmFqharqnCOvohIP6TOsV4BvKf4/T1AK0ddREREuq2rsSqHiX43z4uaDvVjqyr0AdSPyarQh54xs7eZ2cPAHwNfM7OvF+X7m9lKaJ5jDUycY30vcPWkc6wvBt5kZj+geefTi/u9DZK9qvwNVqEfVegDqB+TVaEPUJ1+9MT2iFXmrlNURURERERyk8MRfRERERERmUITfRERERGRDM3oiX50i+Dt0I8HzexOM7tjSm7VXq5zmZltMLO7JpW1fWvkHvVjkZn9pNgfd5jZ8T3uw8vM7D/M7N7i1tILivK+7o9EP/q9P3Y0szEz+8+iH4uL8r5/PkRmu9kcp4r1KlZtXZ9i1dY+KE71yYw9R9+atwj+Ps2LER6meZXyae5+z3boy4PAgLv37WYTZnY08BRwlbsfWpR9EviZu19cBJTd3f2D26Efi4Cn3P2SXq57Uh/2A/Zz9++Y2S7AbTTvFjdEH/dHoh/vpL/7w4Cd3P0pM3s+8E1gAc3bbvf18yEym832OFWsV7Fqax8Uq7b2QXGqT2byEf3ULYKz5+6rgZ9NKW771sg96kdfufs6d/9O8fuTNK9SP4A+749EP/rKm54qnj6/eDjb4fMhMsvN6jgFilVT+qBYtbUPilN9MpMn+mW3CO77pKrgwI1mdpuZnbmd+gBTbo0MbPPWyD0038y+W3xd2rev3szsIOBwYA3bcX9M6Qf0eX+YWc3M7qB5M42b3H277g+RWUpxqlyVxiLFqu0UqxSn+mMmT/SrdDv7o9z9tcBxwPuLrwhns88CvwscBqwDPtWPlZrZzsC1wNnu/kQ/1tliP/q+P9x93N0Po3lHvblmdmiv1ykiz6E4VW2KVdsxVilO9cdMnuinbhHcV+7+SPFzA3Adza9rt4f1xbl3E+fgbfPWyL3g7uuLP+AtwBX0YX8U5/hdC3ze3b9cFPd9f5T1Y3vsjwnuvglYBRxLRT4fIrOI4lS5SoxFilXViFWKU701kyf6qVsE942Z7VRczIKZ7QQcA9yVbtUzbd8auRcm/kgLb6PH+6O4qGcEuNfd/35SVV/3R9SP7bA/9jKz3YrfXwi8EbiPinw+RGYRxalylRiLFKu2X6xSnOqfGZt1B6BI/fSPQA1Y5u4f3w59OJjm0RGA5wFf6Ec/zOyLwCCwJ7AeWAh8BbgaOBB4CHiHu/f04qOgH4M0v/pz4EHgfRPn3PWoD68DGsCdwJai+CM0zzns2/5I9OM0+rs/Xk3zIqYazX/mr3b3883sJfT58yEy283mOFWsW7Fqax8Uq7b2QXGqT2b0RF9ERERERMrN5FN3REREREQkoIm+iIiIiEiGNNEXEREREcmQJvoiIiIiIhnSRF9EREREJEOa6IuIiIiIZEgTfRERERGRDGminzEze4mZ3VE8fmpmP5n0fAcz+3aP1tvWcs1skZmd04u+iIhItSlWifTO87Z3B6R33P0xmne5w8wWAU+5+yWTXvJ/9Wi9PVmuiIjkR7FKpHd0RH8WM7OnzOwgM7vPzD5nZneZ2efN7I1m9i0z+4GZzZ30+r8ws7HiKMs/mVltG8u918yuMLO7zexGM3vhpNd81My+Z2bfAH4/tQ4zO8LMvmtmO5rZTsXyDi1Z73VmdqGZNYqjQm/s8i4TEZE+U6wS6Zwm+gLwX4AlwKuBVwB/BrwOOAf4CICZ/QFwKnCUux8GjAN/vo3lHgJ8xt3/ENgEvL1Y1h8B7wIOB04Gjkitw91vBVYAFwKfBP6nu99Vsr5DgU3uXgf+Wwv9ExGRmUOxSqRNOnVHAH7o7ncCmNndwM3u7mZ2J3BQ8Zo3AH8E3GpmAC8ENrSw3DuK32+btKw6cJ27/7JY54oW1nE+cCvwa+ADU1dkZi8CXgz8Q1H0PJoDtoiI5EGxSqRNmugLwG8m/b5l0vMtbP2MGHClu3+4w+WO0xwMJ3jJ61Pr2APYGXg+sCPwiyn1fwjc5u7jxfNXA2VHUkREZGZSrBJpk07dkVbdDJxiZnsDmNkeZvY7HS5rNfA2M3uhme0CnNDCOpYC5wGfBz5RssxDgTsmPX818N0O+yciIjOTYpXIJDqiLy1x93vM7FzgRjObAzwDvB/4UQfL+o6ZLac52P0IaKTWYWZ/Amx29y8UF1V928z+1N3/fdJiXwWsmfT8UHSURERkVlGsEnk2cy/7VkpERERERGYynbojIiIiIpIhTfRFRERERDKkib6IiIiISIY00RcRERERyZAm+iIiIiIiGdJEX0REREQkQ5roi4iIiIhk6P8HtFdQu9KHzLoAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "@jit(nopython=True)\n", "def generate_matrix_dft(N, K):\n", " \"\"\"Generates a DFT (discrete Fourier transfrom) matrix\n", "\n", " Notebook: C2/C2_DFT-FFT.ipynb\n", "\n", " Args:\n", " N (int): Number of samples\n", " K (int): Number of frequency bins\n", "\n", " Returns:\n", " dft (np.ndarray): The DFT matrix\n", " \"\"\"\n", " dft = np.zeros((K, N), dtype=np.complex128)\n", " for n in range(N):\n", " for k in range(K):\n", " dft[k, n] = np.exp(-2j * np.pi * k * n / N)\n", " return dft\n", "\n", "N = 32\n", "dft_mat = generate_matrix_dft(N, N)\n", "\n", "plt.figure(figsize=(12, 4))\n", "\n", "plt.subplot(1, 2, 1)\n", "plt.title('$\\mathrm{Re}(\\mathrm{DFT}_N)$')\n", "plt.imshow(np.real(dft_mat), origin='lower', cmap='seismic', aspect='equal')\n", "plt.xlabel('Time index $n$')\n", "plt.ylabel('Frequency index $k$')\n", "plt.colorbar()\n", "\n", "plt.subplot(1, 2, 2)\n", "plt.title('$\\mathrm{Im}(\\mathrm{DFT}_N)$')\n", "plt.imshow(np.imag(dft_mat), origin='lower', cmap='seismic', aspect='equal')\n", "plt.xlabel('Time index $n$')\n", "plt.ylabel('Frequency index $k$')\n", "plt.colorbar()\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now write a function that computes the discrete Fourier transform $X = \\mathrm{DFT}_N \\cdot x$:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T08:59:03.240836Z", "iopub.status.busy": "2024-02-15T08:59:03.240624Z", "iopub.status.idle": "2024-02-15T08:59:03.910335Z", "shell.execute_reply": "2024-02-15T08:59:03.909822Z" } }, "outputs": [ { "data": { "image/png": "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Hbc//PADHn74YfTs2RNnnHEGvvnmG68XVfrjVDnQegd5xowZ+N///V988MEHGDFihNaBX099fT1mzZqFK664AsOHD29zcTxv3jyceOKJ6N69u9/vJFhEIOvo2rUrcnJyIuYgq7xbpAXyCSecAODoCcPITnqA/5EsIhmxcHeQzYpYAEcFsvvvefvtt2tOpxEOcmNjI5gZ1dXVqK+v9ymQlUNlFGlpaaioqMC+ffsi7iArwbB161bU19ebmj9WZQISrwiG8ePHo66uzuUkq9z+iRMnIjU1FTNmzND2YcWXX36Jd955Bw899BDeeecdl4tM1R6pE2xiYqJXB7m1tRUrV67E+PHj8eabb+KEE07QHLrvv/8eeXl5uPHGG7FmzRrNsVq2bBmICKNGjUK/fv08CuSff/4ZW7duxcSJE9G9e3fccsstmD59OgYOHIh7770Xhw4d8lgf9T2cccYZmDBhArp06YJ7770XDz/8MAYNGoQff/wRf/zjH/H999/jl19+wZdffolNmzahvr7eRcSvXbsWzIyhQ4eCiHD11Vdj3rx5uPvuu10uRr766isMHjwYeXl5Wr7466+/RllZGW655RaXuvXr1w/p6en4+OOP8fnnn+O+++7DyJEj8de//tWjUAmEyspKDB48WOuQWVpa6iKQy8rK0NLSoo1gMXDgQPTp0wcANEe8uLgYAwcOhN1u136L3bt3o2fPngAcFzh1dXWorq7GU089hR49eoQ1QsTUqVORmZmJ1157DeXl5Zqh4D6E5U033QSLxYJ3330XwNELkHPPPRdff/21JuaZGdOnT8ejjz6K0aNHo3v37jjllFMAuHbUO3jwoObQPv/882hpacHMmTNx4YUXYt26dbj22mvx6quv4pJLLkFraytuvvlmDBgwALm5uR470wEO8+DJJ5/EqFGjcMMNN+Dkk0/GJZdcgokTJ4KZPcYsNm3ahJSUFJx88sk48cQTXcT3woULMWrUKIwaNUrTC3PmzIHFYsGHH36I3/3ud6irq/M6VvTatWtBRLBarS7Hr8JqteLBBx/E559/jpKSEjz++OMu729pacGsWbNQU1OD66+/HoMHD8bmzZu1c0F1dTWWL19uinsMiEB2gYhw9tlnawesmaih3urr670K5ISEBFNuIffu3RupqaltBLISkeE6yL1794bFYokJgezNQTZTILvfju/du7eWzzQig8zMaG5u9jvEmxmkp6dr+c9evXpFrFy9g6xusUXKQRaBHDhjxoxBcnKyFrNobW3V3P4OHTrgsssuw6uvvorU1FRkZ2fj5ZdfRmNjI+6880707dsXDz30UJs2TzlO6gQ7YcIE/Pjjjx6jGuvXr0dtba02asJFF12E5cuX4/Dhw1i5ciVOPfVUnHvuubDb7Vi6dCkAh0AeNGgQcnJy0L9/f2zatKnNtj/88ENYLBZceumlABxj2z711FPo3r07XnjhBUyePNljx8Fly5YhLy8P/fv3R0JCAt577z1MmzYNZWVlWLx4Mfr27Ytrr70WiYmJmDFjBv7zn/+gsLAQWVlZLiNVKGE1ZMgQAMBf//pX3HPPPXj22WcxYsQI7N+/HzU1NVixYgXOP/98DBs2TBNwc+bMQWpqKi644AKXulmtVgwZMgRz5swBM+PWW2/Fk08+iX379uGOO+7A0qVLsWvXLixatAhvv/22S7va0tLi4nADDmF42223YefOnZg3bx7279+P0tJS7VzXs2dP2O12lJaWYs+ePaitrcXAgQORnp6Obt26ab+HcpCBozllvUBW2/v111/x+uuvo6mpCVdffXWbmQFbWlraCP3PP/8cn332GbZs2YIffvgBTz75JD777DPcf//9uPrqq1FUVISPP/4YycnJbWYI7dSpE0aOHKldcK1atQodOnTA//t//w8NDQ2ak3rNNdfg1ltvxahRo7TZJbOyslBcXOwikD/77DPY7XYMHDgQL7/8Mt5//32Ul5fjpptuQnZ2Nl5//XUcOnQIH374Id566y3069cPFosFo0eP9uog//3vf8f999+PlpYW3H///ZqYHTBgAPr37+/xrsPmzZtRXFwMq9WKM844AytWrEBLSwvKy8uxbt06nHPOOTj11FOxdetWVFRUYM6cOTj99NORl5enHWfexon+8ccf0bdvX/Tu3Vub/MXTBF3nn38+rrvuOvzzn/9ESUkJli1bhl69eiEpKQk33nij5lYPHjwYNpsN69evBwAsWrQILS0t2vnVcJg5Zv+GDBnCkcZms7Hdbje9nO+//54BMAB+6KGH2rx+/vnnc2pqqmnlDxkyhNPT0xkAz58/32X5zJkzw95+7969ecCAAfzoo4/ywoULXV4bNmwYjxs3Luwy3CkvL2cA/Pjjj2vL/vGPfzAArq+vZ2bmOXPmMACeOHGi4eXffffdbcpXrF27lm+44QZubW0Nq4z//Oc/DICPHDnCCxcuZAC8dOnSsLYZDL/97W+1/fbbb7+NWLmDBg3iSy65hJmZ//SnP3FiYiI3NTWZWuaiRYsYAI8cOdLUctwBsIbjuL0977zzuF+/fszMvGHDBgbAb775JjMz79u3j59//nl+/PHH+eyzz2YAXFxczADatBMKm82m7XP5+fn84osvMgDetWsXNzQ08Nlnn82fffYZMzM///zzDIB37tzJzMwrV65kAPzcc88xAH700Ue5qamJ09PT+Y477uDS0lJOS0vj//f//h8zs7ZeWVmZVn5VVRX37t2bx44d67F+06ZN83rc9+7dW9tvfXH55ZdzRkYGA+AnnniCJ0+ezPn5+dzS0sLMzJMnT+bu3bu3ed+nn37KqampfMYZZ/BHH33EAHjx4sX88MMPs8Vi4ZqaGu7RowdfdNFFHsu97777GACPHz9eW6Y/xvV/06dP19aZMmUKDxgwwOVcOWPGDAbAN954IwPgxx57zOV7WbBggdZeff755wyAly1bxsys7QspKSlss9m4qamJExISeOrUqdzc3MxExA8//DAzMy9fvlzbLgC+7rrrmIj4xhtvdPlst9xyi0sdN2/e7PFzDRo0iOvq6pj56Pni1FNP9fh9/etf/9L2vaFDh/LYsWO5pqaGExMT+Y9//CP/+c9/1vYzm83m8l733/Ciiy7iHj168DfffMMAOCMjgwsLC7Xf3Bv//ve/GQDv3bvXZfmSJUvYYrHwdddd5/F9Dz/8MBMRb9y40WV57969+corr2Rm5vfff58B8Ny5c/ndd99lALxy5UpesmQJA+AXXniBAfC///1v7f3dunXjSZMmMTPzzp07+dRTT+XNmzczM3P37t158uTJfMkll2jf99dff+2xfvv37+fs7Gzu1asXWywWLi4u5kcffZSffvppXrt2rbZ9APzyyy8zs+M37tChAzc3N/v8zvzhrc2Nugj29RcNgRwpfv31V22H+de//tXm9csvv5yzsrJMK/+GG24wVej85S9/4fz8fK2MdevWaa8NGDCAL7/8csPLZGYePHgwjx49Wnv+wAMPsNVq1RpJJSq9NSLhoE4IL774ouHbVrz00kvaCfzNN99kALxlyxbTynPnzjvv1H5TvYgwm1NPPZXPP/98ZnYIsMGDB5te5ooVKxgAT5gwwfSy9MS7QH766acZAK9evZrfeustBsDr169vs57NZuPHH3+cLRYLT5482ec2LRYLA+DRo0dr5sLs2bP59ddfZwA8bNgwZma++uqrubCwUDvebTYbd+nShbt06eJiBowbN447derEubm5nJ6ezitXrmTmoyJu8eLFzMxcWlrKJ510ElutVk2Eu2O32/mqq65iq9XK119/Pffv358LCwv5mmuuaSMmvDFv3jwGwOnp6Xz48GH+4IMPXMREcXExX3rppR7fq75j9VkaGxv5s88+YwD87LPPMgB+9dVXPb73ww8/1ASRnvLycv7iiy942rRpvGjRIu7RowdffPHFzMzc3NzMOTk5LueOAwcOcFpaGo8ZM4ZbW1t58ODB3KlTJ5eLoy1btjAAnjlzJv/zn/9kAFxRUcHMzLfffjsD4BNPPFGrw4ABA/iiiy7iHTt2MACeMWMGMx8VSZ06deLExESuqKjghx56iAHwl19+yczMtbW1mgGkzj1PPfWU9lnfeOMNfv/993nHjh0uIn///v2clJTEd999t8fvq6SkRDtnJyYm8p///GdmZh4zZoz2nUyZMsXje5W5sX//fq6treWUlBS+66672G6386mnnsoA+IEHHvD4Xj2rVq3SLmr69eunCdQuXbpwcXEx19TUeHzfzp07OT8/n3Nzc/mbb75hZuaGhga2WCz817/+lZmZjxw5wr169WKr1crFxcWclZXFra2tXFNTwxaLRTuOtm7dqm33qquu0oT/73//ewbAN910Ex88eFD7rqZOnRqQ3lDnt0mTJnF1dXWb1+12O+fk5PCUKVO4qqqKCwoKDNESIpBjjJaWFiYiBsDTpk1r8/r111/P+fn5ppWvrkIBaFdnZlBeXs4ZGRkuJ8CioiK+9tprTSnvwQcfZKvVyocPH2Zm5jvuuMPlQkOdXG+99VbDy54+fToD4LffftvwbSveeOMNBsA7duzgJ554ggF4bRDN4E9/+pPm9ETiTovizDPP5DPPPJPtdjsXFBS0cYvMYO3atQyAf/Ob35help54F8iVlZXcqVMnPvXUU/mee+7hlJQUn67Yrl27/N4NSE5O1sRHXV0dWywW/stf/qKJVwC8Zs0a7tmzJ19xxRUu77311lu1tu7IkSPMfFSsDB48mEtKSrR1lXHx4osv8s6dO7lbt26ckZGhCS9fn7m4uJg7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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "@jit(nopython=True)\n", "def dft(x):\n", " \"\"\"Compute the disrcete Fourier transfrom (DFT)\n", "\n", " Notebook: C2/C2_DFT-FFT.ipynb\n", "\n", " Args:\n", " x (np.ndarray): Signal to be transformed\n", "\n", " Returns:\n", " X (np.ndarray): Fourier transform of x\n", " \"\"\"\n", " x = x.astype(np.complex128)\n", " N = len(x)\n", " dft_mat = generate_matrix_dft(N, N)\n", " return np.dot(dft_mat, x)\n", "\n", "\n", "N = 128\n", "n = np.arange(N)\n", "k = 10\n", "x = np.cos(2 * np.pi * (k * n / N) + 2 * (np.random.rand(N) - 0.5)) \n", "X = dft(x)\n", "\n", "plt.figure(figsize=(10, 3))\n", "\n", "plt.subplot(1, 2, 1)\n", "plt.title('$x$')\n", "plt.plot(x, 'k')\n", "plt.xlabel('Time (index $n$)')\n", "\n", "plt.subplot(1, 2, 2)\n", "plt.title('$|X|$')\n", "plt.plot(np.abs(X), 'k')\n", "plt.xlabel('Frequency (index $k$)')\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Fast Fourier Transform (FFT)\n", "\n", "Next, we discuss the famous fast Fourier transform (FFT), which is a fast algorithm to compute the DFT. The FFT algorithm was originally found by Gauss in about 1805 and then rediscovered by Cooley and Tukey in 1965. The FFT algorithm is based on the observation that applying a DFT of even size $N=2M$ can be expressed in terms of applying two DFTs of half the size $M$. It exploits the fact that there are algebraic relations between the entries $\\sigma_N^{kn} = \\mathrm{exp}(-2 \\pi i / N)^{kn}$ of DFT matrices. In particular, one has \n", "\n", "$$\\sigma_M = \\sigma_N^2$$\n", "\n", "In the FFT algorithm, one computes the DFT of the even-indexed and the uneven-indexed entries of $x$:\n", "\n", "\\begin{align}\n", "(A(0), \\dots, A(N/2-1)) &= \\mathrm{DFT}_{N/2} \\cdot (x(0), x(2), x(4), \\dots, x(N-2))\\\\\n", "(B(0), \\dots, B(N/2-1)) &= \\mathrm{DFT}_{N/2} \\cdot (x(1), x(3), x(5), \\dots, x(N-1))\n", "\\end{align}\n", "\n", "With these two DFTs of size $N/2$, one can compute the full DFT of size $N$ via:\n", "\n", "\\begin{eqnarray}\n", "C(k) &=& \\sigma_N^k \\cdot B(k)\\\\\n", "X(k) &=& A(k) + C(k)\\\\\n", "X(N/2 + k) &=& A(k) - C(k)\\\\\n", "\\end{eqnarray}\n", "\n", "for $k \\in [0: N/2 - 1]$. The numbers $\\sigma_N^k$ are also called *twiddle factors*. If $N$ is a power of two, this idea can be applied recursively until one reaches the computation of $\\mathrm{DFT}_{1}$ (the case $N=1$), which is simply multiplication by one (i.e. just returning the signal of length $N=1$). For further details, we refer to Section 2.4.3 of [Müller, FMP, Springer 2015]) (see also Table 2.1).\n", "\n", "In the following code, there is a function `twiddle` that computes twiddle factors and a function `fft` that implements the FFT algorithm." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T08:59:03.912809Z", "iopub.status.busy": "2024-02-15T08:59:03.912625Z", "iopub.status.idle": "2024-02-15T08:59:05.671349Z", "shell.execute_reply": "2024-02-15T08:59:05.670803Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "@jit(nopython=True)\n", "def twiddle(N):\n", " \"\"\"Generate the twiddle factors used in the computation of the fast Fourier transform (FFT)\n", "\n", " Notebook: C2/C2_DFT-FFT.ipynb\n", "\n", " Args:\n", " N (int): Number of samples\n", "\n", " Returns:\n", " sigma (np.ndarray): The twiddle factors\n", " \"\"\"\n", " k = np.arange(N // 2)\n", " sigma = np.exp(-2j * np.pi * k / N)\n", " return sigma\n", "\n", "@jit(nopython=True)\n", "def fft(x):\n", " \"\"\"Compute the fast Fourier transform (FFT)\n", "\n", " Notebook: C2/C2_DFT-FFT.ipynb\n", "\n", " Args:\n", " x (np.ndarray): Signal to be transformed\n", "\n", " Returns:\n", " X (np.ndarray): Fourier transform of x\n", " \"\"\"\n", " x = x.astype(np.complex128)\n", " N = len(x)\n", " log2N = np.log2(N)\n", " assert log2N == int(log2N), 'N must be a power of two!'\n", " X = np.zeros(N, dtype=np.complex128)\n", "\n", " if N == 1:\n", " return x\n", " else:\n", " this_range = np.arange(N)\n", " A = fft(x[this_range % 2 == 0])\n", " B = fft(x[this_range % 2 == 1])\n", " C = twiddle(N) * B\n", " X[:N//2] = A + C\n", " X[N//2:] = A - C\n", " return X\n", "\n", "N = 16\n", "n = np.arange(N)\n", "k = 4\n", "x = np.cos(2 * np.pi * (k * n / N) + 2 * (np.random.rand(N) - 0.5)) \n", "X_via_dft = dft(x)\n", "X_via_fft = fft(x)\n", "\n", "\n", "plt.figure(figsize=(10, 3))\n", "\n", "plt.subplot(1, 2, 1)\n", "plt.title('$x$')\n", "plt.plot(x, 'k', marker='.', markersize=12)\n", "plt.xlabel('Time (index $n$)')\n", "\n", "plt.subplot(1, 2, 2)\n", "plt.title('$|X|$')\n", "plt.plot(np.abs(X_via_dft), 'k', marker='.', markersize=18, label='dft')\n", "plt.plot(np.abs(X_via_fft), linestyle='--', color='pink', marker='.', markersize=6, label='fft')\n", "plt.xlabel('Frequency (index $k$)')\n", "plt.legend()\n", "\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Computational Complexity\n", "\n", "The FFT reduces the overall number of operations from the order of $N^2$ (needed when computing the usual matrix–vector product $\\mathrm{DFT}_N \\cdot x$) to the order of $N\\log_2N$. The savings are enormous. For example, using $N=2^{10}=1024$, the FFT requires roughly $N\\log_2N=10240$ instead of $N^2=1048576$ operations in the naive approach.\n", "\n", "Using the module `timeit`, which provides a simple way to time small bits of Python code, the following code compares the running time when using the naive approach and the FFT:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T08:59:05.674111Z", "iopub.status.busy": "2024-02-15T08:59:05.673820Z", "iopub.status.idle": "2024-02-15T08:59:15.673464Z", "shell.execute_reply": "2024-02-15T08:59:15.672930Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Timing for DFT: 5.22 ms ± 49 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", "Timing for FFT: 707 µs ± 11.8 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n" ] } ], "source": [ "N = 512\n", "n = np.arange(N)\n", "x = np.sin(2 * np.pi * 5 * n / N )\n", "\n", "print('Timing for DFT: ', end='')\n", "%timeit dft(x)\n", "print('Timing for FFT: ', end='')\n", "%timeit fft(x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us now compare the running times by successively increasing the size $N$ (this may take a couple of seconds):" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T08:59:15.676270Z", "iopub.status.busy": "2024-02-15T08:59:15.676086Z", "iopub.status.idle": "2024-02-15T08:59:15.996683Z", "shell.execute_reply": "2024-02-15T08:59:15.995909Z" } }, "outputs": [ { "data": { "image/png": "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d3lnoA/wezNb5Z1u8q4bC1xnZv8DrvPOi4iIiJ+sX7+e7t27ExMTQ+3atVmyZAkzZszgwgsvDHRpZY5fI7Jzbj6ecJZ92VvZXjsgNpf9lpD79W845/YD1xZtpSIiIpLToUOHGD16NJMmTaJKlSpMnTqV/v37q4UtgPSdFxERkdM45/joo48YMmQIO3fupG/fvowdO5a6dXUjh0DTI69EREQky7p167j22mu55557qFevHsuWLePdd99VaCshFNxERESEgwcPMmTIENq2bcuqVat44403SEpKIjIyMtClSTbqKhURESnDnHP84x//YOjQoezevZtHHnmEl19+mTp16gS6NMmFgpuIiEgZtXbtWuLi4vjmm2+IiIjgs88+o2PHjoEuS/KhrlIREZEy5sCBAwwePJh27dqRkpLC22+/zYoVKxTagoBa3ERERMoI5xzvv/8+w4YNY+/evfTr148xY8ZQu3btQJcmPlJwExERKQNWr15NbGwsS5cupWPHjsybN4+IiIhAlyUFpK5SERGRUuzXX39lwIABtG/fno0bNzJt2jSWL1+u0Bak1OImIiJSCmVkZDBjxgyeeuop9u/fT//+/Rk9ejS1atUKdGlyDhTcRERESpnk5GTi4uJYvnw5kZGRLFy4kHbt2gW6LCkC6ioVEREpJX7++WdiY2Pp0KEDqampTJ8+nSVLlii0lSIKbiIiIkEuIyODadOm0bJlS9566y1iY2PZtGkTDz30EOXK6U99aaKfpoiISBBbuXIlkZGRPProo4SHh5OcnMyUKVOoUaNGoEsTP/DpGjcziwCuARoAx4AU4Cvn3M9+rE1ERETysH//fp555hneeecd6taty3vvvcf999+PmQW6NPGjfFvczOwhM0sGRgCVgY3AXuBqYJGZzTCzi/1fpoiIiACkp6fz9ttv06JFC6ZNm8agQYPYuHEjffr0UWgrA87W4lYF6OycO5bbSjNrCzQHthZxXSIiIpLDt99+S2xsLCtXrqRLly689tprtGnTJtBlSTHKt8XNOfd6XqHNu36Vc25x0ZclIiIimfbt28ejjz5Kp06d2LFjBzNnziQxMVGhrQzyaXCCmY0zs2pmVsHMFpvZT2Z2v7+LExERKcvS09N54403aNmyJX//+9954okn2LBhA/fee6+6RcsoX0eVdnfOHQRuAbYDLYChfqtKRESkjFu+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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import timeit\n", "\n", "Ns = [2 ** n for n in range(5, 11)]\n", "times_dft = []\n", "times_fft = []\n", "execuctions = 5\n", "\n", "for N in Ns:\n", " n = np.arange(N)\n", " x = np.sin(2 * np.pi * 5 * n / N )\n", " \n", " time_dft = timeit.timeit(lambda: dft(x), number=execuctions) / execuctions\n", " time_fft = timeit.timeit(lambda: fft(x), number=execuctions) / execuctions\n", " times_dft.append(time_dft)\n", " times_fft.append(time_fft)\n", " \n", "plt.figure(figsize=(10, 4))\n", " \n", "plt.plot(Ns, times_dft, '-xk', label='DFT')\n", "plt.plot(Ns, times_fft, '-xr', label='FFT')\n", "plt.xticks(Ns)\n", "plt.legend()\n", "plt.grid()\n", "plt.xlabel('$N$')\n", "plt.ylabel('Runtime (seconds)');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Further Notes\n", "\n", "The `dft` and `fft` functions have been included into `libfmp`. In the following code cell, we call those `libfmp` functions and time them again using the module `timeit`." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2024-02-15T08:59:16.000231Z", "iopub.status.busy": "2024-02-15T08:59:15.999972Z", "iopub.status.idle": "2024-02-15T08:59:28.593471Z", "shell.execute_reply": "2024-02-15T08:59:28.592913Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Timing for DFT: 5.51 ms ± 78.9 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", "Timing for FFT: 720 µs ± 7.44 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n" ] }, { "data": { "image/png": "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eu7cufrZZ5/Vc+fO1bm5uW7vw+zfqZn789brrcU/t+pqrbfsNn6Xx09pXVis9fptWucVNOvLjx49qp999lndq1cvDeguXbo06/UG6Kuuukq/++67uqioyIPv3Hpm/k4bOs9angQ39iYJcuBRStX7x6iUsjq0oFZdXa1vuOEGHRYWpteuXVvz+HPPPaeVUvrUqVMWRic85Y8JshnJ1JNPPqmjo6PrPVdER0frJ5980u19mhWbu/vauXOnfvzxx3XPnj01oOPi4vSvfvUrvXbt2pp/4o19r/fee6++++67dWRkpAb0mDFj9D//+U9dXFzcaGyFmWt0zhfL9CfvLtD5x3K0LnE/OTYzyTD7d2rm/syOzdSEu8pIku0r1usNCz/Ty+Yt0J+8u6DB11t1dbXOyMjQt9xyiw4JCdGAvvrqq/XChQt1RUVFk9/rgw8+qP/4xz/qvn371lyc3XvvvXrFihW6urq63mOa+Xdl1v7M/J1Kgix8QkaQrXPmzBmdmJioExISahLiK664Qo8cOdLiyISn/ClBNispyM3NrUkGG3qLjIzUeXl5Po+tufvKzc3Vr732mh4zZowGdEhIiP6v//ov/dFHH+mysjK396e18ff70ksv6aSkJA3odu3a6RkzZuht27adt68rLxylq5av03rFel28dLW+8sJRHo2EmpVkmP07NXN/3ni9mZmc2e12/cen/6A3vPGetn/zva5ctrbe32lOTo5+4YUXahLbTp066d/85jd679695+2vOa83u92uV61apX/xi1/otm3bakAnJibqp59+Wu/bt8+tfbnzvfrjOaSh86wynvNPF110kd6wYYPVYQg3pKWlMW3atFoTBaKjo5k7dy6pqakWRtY6bNy4kcsuu4wBAwZw9uxZjhw5QmxsLK+99pr8/AOQUmqj1voiN7a/Dvh/QAjwltb6T41t78459qmnnmLOnDn1TgKKjo7m0Ucf5bnnnqv1eHl5OceOHePo0aMcPXqU7Oxsli5dyjfffFMzT6E+ISEhjB8/nokTJ9KtWze6detG9+7d6datGx07dsRmqz2/3JPYPPk+IyIi6NOnDwcOHKCiooLhw4dz7733MmXKlAZXDnWqWys5efLkemuPtdasXr2a119/nUWLFlFRUcG4ceO4//772bZtGy+//DIP3fwz/u+/f0WIzUZlVRVP//MNXv7k3259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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import sys\n", "sys.path.append('..')\n", "import libfmp.c2\n", "\n", "N = 16\n", "n = np.arange(N)\n", "k = 4\n", "x = np.cos(2 * np.pi * (k * n / N) + 2 * (np.random.rand(N) - 0.5)) \n", "X_via_dft = libfmp.c2.dft(x)\n", "X_via_fft = libfmp.c2.fft(x)\n", "\n", "plt.figure(figsize=(10, 3))\n", "\n", "plt.subplot(1, 2, 1)\n", "plt.title('$x$')\n", "plt.plot(x, 'k', marker='.', markersize=12)\n", "plt.xlabel('Time (index $n$)')\n", "\n", "plt.subplot(1, 2, 2)\n", "plt.title('$|X|$')\n", "plt.plot(np.abs(X_via_dft), 'k', marker='.', markersize=18, label='dft')\n", "plt.plot(np.abs(X_via_fft), linestyle='--', color='pink', marker='.', markersize=6, label='fft')\n", "plt.xlabel('Frequency (index $k$)')\n", "plt.legend()\n", "\n", "plt.tight_layout()\n", "\n", "\n", "N = 512\n", "n = np.arange(N)\n", "x = np.sin(2 * np.pi * 5 * n / N )\n", "\n", "print('Timing for DFT: ', end='')\n", "%timeit libfmp.c2.dft(x)\n", "print('Timing for FFT: ', end='')\n", "%timeit libfmp.c2.fft(x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "Acknowledgment: This notebook was created by Frank Zalkow and Meinard Müller.\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "
\"C0\"\"C1\"\"C2\"\"C3\"\"C4\"\"C5\"\"C6\"\"C7\"\"C8\"
" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.16" } }, "nbformat": 4, "nbformat_minor": 1 }