{ "cells": [ { "cell_type": "markdown", "metadata": { "nbsphinx": "hidden" }, "source": [ "# Spectral Analysis of Deterministic Signals\n", "\n", "*This jupyter notebook is part of a [collection of notebooks](../index.ipynb) on various topics of Digital Signal Processing. Please direct questions and suggestions to [Sascha.Spors@uni-rostock.de](mailto:Sascha.Spors@uni-rostock.de).*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Introduction\n", "\n", "The analysis of the spectral properties of a signal plays an important role in digital signal processing. Some application examples are the\n", "\n", "* [Spectrum analyzer](https://en.wikipedia.org/wiki/Spectrum_analyzer)\n", "* Detection of (harmonic) signals\n", "* [Estimation of fundamental frequency and harmonics](https://en.wikipedia.org/wiki/Modal_analysis)\n", "* Spectral suppression: acoustic echo suppression, noise reduction, ...\n", "\n", "In the practical realization of spectral analysis techniques, the [discrete Fourier transform](https://en.wikipedia.org/wiki/Discrete_Fourier_transform) (DFT) is applied to discrete finite-length signals in order to gain insights into their spectral composition. A basic task in spectral analysis is to determine the amplitude (and phase) of dominant harmonic contributions in a signal mixture. The properties of the DFT with respect to the analysis of an harmonic exponential signal are discussed in the following." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The Leakage Effect\n", "\n", "[Spectral leakage](https://en.wikipedia.org/wiki/Spectral_leakage) is a fundamental effect of the DFT. It limits the ability to detect harmonic signals in signal mixtures and hence the performance of spectral analysis. In order to discuss this effect, the DFT of a discrete exponential signal is revisited starting from the Fourier transform of the continuous exponential signal. The connections between the Fourier transform, the [discrete-time Fourier transform](https://en.wikipedia.org/wiki/Discrete-time_Fourier_transform) (DTFT) and the DFT for a uniformly sampled signal are illustrated below.\n", "\n", "![Connections between the different Fourier transforms](Fourier_transforms.png)\n", "\n", "Consequently, the leakage effect is discussed in the remainder of this section by considering the following four steps:\n", "\n", "1. Fourier transform of an harmonic exponential signal,\n", "2. discrete-time Fourier transform (DTFT) of a discrete harmonic exponential signal, and\n", "3. DTFT of a finite-length discrete harmonic exponential signal\n", "4. sampling of the DTFT." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fourier Transform of an Exponential Signal\n", "\n", "The harmonic exponential signal is defined as\n", "\n", "\\begin{equation}\n", "x(t) = \\mathrm{e}^{\\,\\mathrm{j}\\, \\omega_0 \\, t}\n", "\\end{equation}\n", "\n", "where $\\omega_0 = 2 \\pi f$ denotes the angular frequency of the signal. The Fourier transform of the exponential signal is\n", "\n", "\\begin{equation}\n", "X(\\mathrm{j}\\, \\omega) = \\int\\limits_{-\\infty}^{\\infty} x(t) \\,\\mathrm{e}^{\\,- \\mathrm{j}\\, \\omega \\,t} \\mathrm{d}t = 2\\pi \\; \\delta(\\omega - \\omega_0)\n", "\\end{equation}\n", "\n", "The spectrum consists of a single shifted Dirac impulse located at the angular frequency $\\omega_0$ of the exponential signal. Hence the spectrum $X(\\mathrm{j}\\, \\omega)$ consists of a clearly isolated and distinguishable event. In practice, it is not possible to compute the Fourier transform of a continuous signal by means of digital signal processing." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Discrete-Time Fourier Transform of a Discrete Exponential Signal\n", "\n", "Now lets consider sampled signals. The discrete exponential signal $x[k]$ is derived from its continuous counterpart $x(t)$ above by equidistant sampling $x[k] := x(k T)$ with the sampling interval $T$\n", "\n", "\\begin{equation}\n", "x[k] = \\mathrm{e}^{\\,\\mathrm{j}\\, \\Omega_0 \\,k}\n", "\\end{equation}\n", "\n", "where $\\Omega_0 = \\omega_0 T$ denotes the normalized angular frequency. The DTFT is the Fourier transform of a sampled signal. For the exponential signal it is given as (see e.g. [reference card discrete signals and systems](../reference_cards/RC_discrete_signals_and_systems.pdf))\n", "\n", "\\begin{equation}\n", "X(\\mathrm{e}^{\\,\\mathrm{j}\\, \\Omega}) = \\sum_{k = -\\infty}^{\\infty} x[k]\\, \\mathrm{e}^{\\,-\\mathrm{j}\\, \\Omega \\,k} = 2\\pi \\sum_{n = -\\infty}^{\\infty} \\delta((\\Omega-\\Omega_0) - 2\\,\\pi\\,n)\n", "\\end{equation}\n", "\n", "The spectrum of the DTFT is $2\\pi$-periodic due to sampling. As a consequence, the transform of the discrete exponential signal consists of a series Dirac impulses. For the region of interest $-\\pi < \\Omega \\leq \\pi$ the spectrum consists of a clearly isolated and distinguishable event, as for the continuous case.\n", "\n", "The DTFT cannot be realized in practice, since is requires the knowledge of the signal $x[k]$ for all time instants $k$. In general, a measured signal is only known within a finite time-interval. The DFT of a signal of finite length can be derived from the DTFT in two steps:\n", "\n", "1. truncation (windowing) of the signal and\n", "2. sampling of the DTFT spectrum of the windowed signal.\n", "\n", "The consequences of these two steps are investigated in the following." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Discrete-Time Fourier Transform of a Truncated Discrete Exponential Signal\n", "\n", "In general, truncation of a signal $x[k]$ to a length of $N$ samples is modeled by multiplying the signal with a window function $w[k]$ of length $N$\n", "\n", "\\begin{equation}\n", "x_N[k] = x[k] \\cdot w[k]\n", "\\end{equation}\n", "\n", "where $x_N[k]$ denotes the truncated signal and $w[k] = 0$ for $\\{k: k < 0 \\wedge k \\geq N \\}$. The spectrum $X_N(\\mathrm{e}^{\\,\\mathrm{j}\\, \\Omega})$ can be derived from the multiplication theorem of the DTFT as\n", "\n", "\\begin{equation}\n", "X_N(\\mathrm{e}^{\\,\\mathrm{j}\\, \\Omega}) = \\frac{1}{2 \\pi} X(\\mathrm{e}^{\\,\\mathrm{j}\\, \\Omega}) \\circledast_N W(\\mathrm{e}^{\\,\\mathrm{j}\\, \\Omega})\n", "\\end{equation}\n", "\n", "where $\\circledast_N$ denotes the cyclic/[circular convolution](https://en.wikipedia.org/wiki/Circular_convolution) of length $N$. A hard truncation of the signal to $N$ samples is modeled by the rectangular signal \n", "\n", "\\begin{equation}\n", "w[k] = \\text{rect}_N[k] = \\begin{cases}\n", "1 & \\mathrm{for} \\; 0\\leq k" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "Om0 = 1 # frequency of exponential signal\n", "N = 32 # length of signal\n", "\n", "\n", "# DTFT of finite length exponential signal (analytic)\n", "Om = np.linspace(-np.pi, np.pi, num=1024)\n", "XN = np.exp(-1j * (Om-Om0) * (N-1) / 2) * (np.sin(N * (Om-Om0) / 2)) / (np.sin((Om-Om0) / 2))\n", "\n", "# plot spectrum\n", "plt.figure(figsize = (10, 8))\n", "plt.plot(Om, abs(XN), 'r')\n", "plt.title(r'Absolute value of the DTFT of a truncated exponential signal $e^{j \\Omega_0 k}$ with $\\Omega_0=$%2.2f' %Om0)\n", "plt.xlabel(r'$\\Omega$')\n", "plt.ylabel(r'$|X_N(e^{j \\Omega})|$')\n", "plt.axis([-np.pi, np.pi, -0.5, N+5])\n", "plt.grid()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise**\n", "\n", "* Change the frequency `Om0` of the signal and rerun the example. How does the magnitude spectrum change?\n", "* Change the length `N` of the signal and rerun the example. How does the magnitude spectrum change?\n", "\n", "Solution: The maximum of the absolute value of the spectrum is located at the frequency $\\Omega_0$. It should become clear that truncation of the exponential signal leads to a broadening of the spectrum. The shorter the signal, the wider the mainlobe becomes." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The Leakage Effect of the Discrete Fourier Transform\n", "\n", "The DFT is derived from the DTFT $X_N(\\mathrm{e}^{\\,\\mathrm{j}\\, \\Omega})$ of the truncated signal $x_N[k]$ by sampling the DTFT equidistantly at $\\Omega = \\mu \\frac{2 \\pi}{N}$\n", "\n", "\\begin{equation}\n", "X[\\mu] = X_N(\\mathrm{e}^{\\,\\mathrm{j}\\, \\Omega})\\big\\vert_{\\Omega = \\mu \\frac{2 \\pi}{N}}\n", "\\end{equation}\n", "\n", "For the DFT of the exponential signal we finally get\n", "\n", "\\begin{equation}\n", "X[\\mu] = \\mathrm{e}^{\\,\\mathrm{j}\\, (\\Omega_0 - \\mu \\frac{2 \\pi}{N}) \\frac{N-1}{2}} \\cdot \\frac{\\sin(\\frac{N \\,(\\Omega_0 - \\mu \\frac{2 \\pi}{N})}{2})}{\\sin(\\frac{\\Omega_0 - \\mu \\frac{2 \\pi}{N}}{2})}\n", "\\end{equation}\n", "\n", "The sampling of the DTFT is illustrated in the following example. Note that the normalized angular frequency $\\Omega_0$ has been expressed in terms of the periodicity $P$ of the exponential signal $\\Omega_0 = P \\; \\frac{2\\pi}{N}$." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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j//4j2zbto0PfOADfPCDH+Qd73gHt95667iWwTAlSZKqrru7m/7+fgC+/vWvc8EFF+x+7pOf/CTvete7cu47NDTEa17zGoaHh/Oe46mnnmL79u1ceumlvO1tb+PrX/863/3ud+np6WHHjh28+tWvZteuXVnLVE2GKUmSVFPnnHMON954Ixs3buTGG2+kt7eXZcuW5dz+8ssv56yzzqK1tTXvcW+77TZe8pKX0N/fzwknnABAW1sbM2fOpK2tjdNOO42rrrqqqj9LNoYpSZJUU9OmTePss8/mE5/4BB/5yEe49tpr6ezszLn9lVdeyZvf/Obdjx9++GHe/OY385KXvIQTTzyRBx54ANgTpk477TSuueYaANavX0+MkZaWFpYsWcKVV15Z2x8OZ0CXJKlxfexjsGJFdY+5YAF86Usl7/be976X+fPnc8MNN3DEEUfk3G7Hjh2sWbOGrq4uIPl4nPPOO49ly5ZxxBFH8MMf/pCenh6+8pWv8PDDDzN37lx++MMfcvHFF3PsscfysY99jDlz5rBp0yaOO+44brvttnJ/0qIZpiRJUs1dfPHFHHjggaPGMGWzfv16Zs2atfvx8uXLuffee3nrW98KwK5du3jVq17FsmXLOPLIIwH40Ic+xIc+9CEAVq5cOep4U6ZMqdpHz+RimJIkqVGV0YJUC5///OfZtm0bV199NZ/61Kc466yzdj932GGHcdlll/H617+et7/97SxbtmzUR7usXLmSf/mXf+F973vfqGMWG5C2b99OR0dH9X6YLBwzJUmSaubmm2/m29/+NldccQXd3d0899xzrEh1PT722GOcccYZ9Pb2AjAyMsLznvc8hoeHdweqQw45hJtuuomRkREA7r77bmKMRZ17w4YNHHDAAbS3t9fgJ9ujYJgKIXSEEP4QQlgZQrg3hPDPqfXfCSE8HEJYkfpaUNOSSpKkSeXRRx/lvPPO45prrtndivTRj36UL6VazG6//Xa6u7sZHBxk9erVu8dJvf71r+eWW24BkrFWIyMjzJ8/nwULFvC5z32u6M/S+8UvfsHixYur/4ONUUw333bg1BjjlhBCO3BLCOFHqecujDFeW7viSZKkyerwww9nzZo1o9ade+65nHvuuUASpt75zncyMjLCF77wBU4++WQgGQP1xS9+kde+9rV0dnZy7bXlRY3vfe979PT0VPQzFKNg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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "N = 32 # length of the signal\n", "P = 10.33 # periodicity of the exponential signal\n", "Om0 = P * (2*np.pi/N) # frequency of exponential signal\n", "\n", "\n", "# truncated exponential signal\n", "k = np.arange(N)\n", "x = np.exp(1j*Om0*k)\n", "\n", "# DTFT of finite length exponential signal (analytic)\n", "Om = np.linspace(0, 2*np.pi, num=1024)\n", "Xw = np.exp(-1j*(Om-Om0)*(N-1)/2)*(np.sin(N*(Om-Om0)/2))/(np.sin((Om-Om0)/2))\n", "\n", "# DFT of the exponential signal by FFT\n", "X = np.fft.fft(x)\n", "mu = np.arange(N) * 2*np.pi/N\n", "\n", "# plot spectra\n", "plt.figure(figsize = (10, 8))\n", "ax1 = plt.gca()\n", "\n", "plt.plot(Om, abs(Xw), 'r', label=r'$|X_N(e^{j \\Omega})|$')\n", "plt.stem(mu, abs(X), label=r'$|X_N[\\mu]|$', basefmt=' ')\n", "plt.ylim([-0.5, N+5]);\n", "plt.title(r'Absolute value of the DTFT/DFT of a truncated exponential signal $e^{j \\Omega_0 k}$ with $\\Omega_0=$%2.2f' %Om0, y=1.08)\n", "plt.legend()\n", "\n", "ax1.set_xlabel(r'$\\Omega$')\n", "ax1.set_xlim([Om[0], Om[-1]])\n", "ax1.grid()\n", "\n", "ax2 = ax1.twiny()\n", "ax2.set_xlim([0, N])\n", "ax2.set_xlabel(r'$\\mu$', color='C0')\n", "ax2.tick_params('x', colors='C0')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise**\n", "\n", "* Change the periodicity `P` of the exponential signal and rerun the example. What happens if the periodicity is an integer? Why?\n", "* Change the length `N` of the DFT? How does the spectrum change?\n", "* What conclusions can be drawn for the analysis of a single exponential signal by the DFT?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Solution: You should have noticed that for an exponential signal whose periodicity is an integer $P \\in \\mathbb{N}$, the DFT consists of a discrete Dirac pulse $X[\\mu] = N \\cdot \\delta[\\mu - P]$. In this case, the sampling points coincide with the maximum of the main lobe or the zeros of the DTFT. For non-integer $P$, hence non-periodic exponential signals with respect to the signal length $N$, the DFT has additional contributions. The shorter the length $N$, the wider these contributions are spread in the spectrum. This smearing effect is known as *leakage effect* of the DFT. It limits the achievable frequency resolution of the DFT when analyzing signal mixtures consisting of more than one exponential signal or exponential signals under additive noise. This is illustrated by the following numerical examples." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Analysis of Signal Mixtures by the Discrete Fourier Transform\n", "\n", "In order to discuss the implications of the leakage effect when analyzing signal mixtures, the superposition of two exponential signals with different amplitudes and frequencies is considered\n", "\n", "\\begin{equation}\n", "x_N[k] = A_1 \\cdot e^{\\mathrm{j} \\Omega_1 k} + A_2 \\cdot e^{\\mathrm{j} \\Omega_2 k}\n", "\\end{equation}\n", "\n", "where $A_1, A_2 \\in \\mathbb{R}$. For convenience, a function is defined that calculates and plots the magnitude spectrum of $x_N[k]$." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def dft_signal_mixture(N, A1, P1, A2, P2):\n", " # N: length of signal/DFT\n", " # A1, P1, A2, P2: amplitude and periodicity of 1st/2nd complex exponential\n", " \n", " # generate the signal mixture\n", " Om0_1 = P1 * (2*np.pi/N) # frequency of 1st exponential signal\n", " Om0_2 = P2 * (2*np.pi/N) # frequency of 2nd exponential signal\n", " k = np.arange(N)\n", " x = A1 * np.exp(1j*Om0_1*k) + A2 * np.exp(1j*Om0_2*k)\n", "\n", " # DFT of the signal mixture\n", " mu = np.arange(N)\n", " X = np.fft.fft(x)\n", "\n", " # plot spectrum\n", " plt.figure(figsize = (10, 8))\n", " plt.stem(mu, abs(X), basefmt=' ')\n", " plt.title(r'Absolute value of the DFT of a signal mixture')\n", " plt.xlabel(r'$\\mu$')\n", " plt.ylabel(r'$|X[\\mu]|$')\n", " plt.axis([0, N, -0.5, N+5]);\n", " plt.grid()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets first consider the case that the frequencies of the two exponentials are rather far apart in terms of normalized angular frequency" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmUAAAHyCAYAAACqBLlBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvFvnyVgAAIABJREFUeJzt3XuYXXV97/H31xAkEjQgMSUjiIqOWhVSqUr12AmtBn3qMfr0UKgXtB5je2qrvUTBWosXCm1UtKctGh8peCpIijFaikYUp1TLpYaEhIsjYLk4CUTAKQxOBSbf88dag5Mwk8xlX3579vv1PPuZvddee+3v/GbN3p/9+/3W2pGZSJIkqb0e1+4CJEmSZCiTJEkqgqFMkiSpAIYySZKkAhjKJEmSCmAokyRJKoChTBonIs6LiI82eJtvjYjvNHKbzRAR/RHxv9vwvL8XEXdHxHBEPHkK63dEe05XRLwsIm6u22Flk57jiHr785qx/T2eKyPiqAZtazgintGIbUklM5SpK9UB5CcR8fh21zLeXA0ck4mI+cAngFdl5sLMvHeP+4+s39z3a9Lznx4RD0fEA/XlBxHxtxFx2Lh1+iJiVx0Mxi7/HBGfHnf7oXo7Y7e/NoNyPgz8bd0OGxr3W/5cZt5Rb3+0GdtvlrrmH+5rvfrv+Y+tqElqBkOZuk5EHAn8DyCB/9nWYrQEOAC4oY01XJSZBwGHAK8HfgHYND6YAdvrYDB2eW1m/u7YbeAv6+2M3f/qGdTxNNrbDl2vWeFfmipDmbrRW4CrgPOAUya4/9CIuKzuOfnXiHgaQFTOjoidEXF/RGyLiOfX9z0pIj4fET+OiNsj4gMR8Zj/r4l6fsaGDSPiucCngePq3pah+v7HR8THIuKOepjv0xGxYIJtPz4ihsZqqpctjoiRiHhKRBwcEZfUNf6kvv7UiRpozx6HPeuuf9/PRcSOiBiMiI9ONiRW1/XJiNheXz5ZL3s2MFCvNhQRl0/w8CvG3T8cEceN2+7H6t/jPyPi1eOWT7m28TLz4cy8Afgt4MfAn+zrMdMVEe+IiFsi4r6I+GpELK2X3wo8A/jn+vd8TA9uRJwaEbfW++WNEfH6vTzPiyPie/V+endEfKJevuff8ekRcUW9zW9GxN+N/d3HrXtKve/dExF/tsdzXFnvczui6mHcf4rt0F//Xf49ft7z+OSI+EJd839E9eFpbP2MiKMiYv+I2BIRf1AvnxcR342ID0bECcD7gd+qt3ldvc5tEfHr47b16L497nd8e0TcAVxeL39pXdtQRFwXEX1T+b2k2TKUqRu9BfhCfVkREUv2uP+NwEeAQ4Et9XoArwJeATwbeBJwIjA23PZ/62XPAH61fo63TaeozLwJ+F3gyrq3ZVF911n1cx4DHAX0AB+c4PE/A9YDJ49bfCLwr5m5k+r//R+oemSOAEaAv51OjeOcBzxS17OMqm0mm4/2Z8BL6/qPBl4MfCAzfwD8Yr3Oosw8foLHvmLc/Qsz88r69kuoAt2hwF8Dn4uImEFtj1EP7X2Fqje1YSLieOBMqr/JYcDtwBfr53wmcAfw2vr3/NkEm7i1rulJwIeAf4zde/PG+xTwqcx8IvBMYN0k610AXAM8GTgdePME67wc6AV+DfhgVB8eAEaBP6L6GxxX3/9/JnmeiZxUP19PXeOVVPvnIcBNwF/s+YDMfAh4E/Dhuo5TgXnAGZn5dXbvsTx6GrX8KvBcqteDHuBfgI/Wtfwp8KWIWDyN7UkzYihTV4mIl1OFknWZuYnqje6391jtXzLzivqN8c+oeq4OBx4GDgKeA0Rm3pSZO+pemJOA0zLzgcy8Dfg4E7/BTbfeAFYBf5SZ92XmA1RvPCdN8pAL9rjvt+tlZOa9mfmlzPxpvZ0zqN6MplvTEuA1wHsy88E68J29l5reCHw4M3dm5o+pAsVs2+b2zPxsHaDOpwo5S2ZQ22S2U70hj1la95qMXU6cQc1vBM7NzGvrfes0qn3ryKk8ODP/KTO3Z+auzLwIuJkq4E7kYeCoiDg0M4cz86o9V4iII4BfBj6YmQ9l5neAr06wrQ9l5khmXgdcRxWsycxNmXlVZj5S7/OfYXr70z9k5q2Z+V/A14BbM/ObmfkI8E9UgXqidrieKjBtoApMb27AHLnT6/1lhCr0XZqZl9ZtfRnwPar9SmoqQ5m6zSnANzLznvr2BTx2CPPOsSuZOQzcByzNzMupepb+DtgZEWsj4olUPQXzqXo+xtxO1QMwW4uBJ1DNcRqKakjz6/XyiXwbeEJEvKR+sz8G+DJARDwhIj4T1fDq/VRDg4umMrS3h6dR/b47xtX0GeApk6y/lMe2zdJpPuee7hq7kpk/ra8unEFtk+mh+ruP2Z6Zi8ZdJut52pvd2qHet+5livtJRLylHrob+72eT7XvTeTtVL2r36+HAn9jknruG9d+MG7fH+eucdd/StXORMSzoxoCv6ven/5yL/VM5O5x10cmuL1wL489n+pvfWlm3jyN55zM+N/7acD/Gh/CqXoLJ+uVlBrGSY3qGlHNwzoRmBcRY280j6cKJkfXPQEAh497zEKqHpPtAJn5N8DfRMRTqIaEVlMN+zxM9WJ+Y/3QI4DBCcp4sP75BOD++vovjLs/91j/Hqo3qF/MzIm2t5vMHI2IdVRDmHcDl9S9YlDNkeoFXpKZd0XEMcBmICbY1IN1jWPG13gn8DPg0LpXY1+2s/sk9iPqZVOxZ3vsy3Rre4yo5gK+FvjmTB6/F2PtMPY8B1ING+7z7xrVvMbPUg0RXln/nbcw8d+OOqicXP8ubwAujseebmQHcEhEPGFcMDucqTuHav85OTMfiIj3AL85jcfPxt8Dl1ANN7687uWDifeXve3LY8Y/7k7g/2XmOxpSqTQN9pSpm6ykmgfzPKoepGOo5pH8G9UcsDGviYiX15OWPwJclZl3RsQv1z1Q86le6P8b2FUPnawDzoiIg+o30D8GHnNofj18Nwi8qZ6k/DtU82nG3A08dWzCdGbuonozPrsOgkRET0Ss2MvveQHVZPU31tfHHEQV8IYi4hAmmLMzzhbgFVGd1+pJVENtY7/DDuAbwMcj4okR8biIeGZETDZ0dSHwgagOOjiUaj7cVE9b8GNgF9VcvX2aQW2Pioj96nlKF1K9cX9iijVO1YXA2yLimKgm8v8lcHU99LcvB1IFhx/Xtb6NqqdsQhHxpohYXO8/Q/XiXePXyczbqYblTq8n0B9HFUan6iCqDxbDEfEc4Pem8dgZi4g3Ay8C3gr8IXB+/eEJqv+fI2P3g2y2ACdFxPyIOJZ9B8d/BF4bESvq/9EDojotyoQHxUiNZChTNzmFah7LHZl519iFakjyjfHzIyIvoAos91G9+L+pXv5EqoD0E6phqHuBNfV9f0AV1H4IfKfexrmT1PEOqh62e6kmuv/7uPsup+pRuisixoZY3wfcAlxVDxN9k6rHa0KZeXVdy1KquTpjPgksoOp9u4pqGHSybVwGXARsBTZR9UqM9xZgf6qewZ8AFzP58M5Hqd78twLbgGvrZftU9+CcAXy3Hkp66RQeNp3aoD5aD/gvqjlV9wIvysyp9uZNSWZ+E/hz4EtUvVTPZIpz3TLzRqp5ildSBY8XAN/dy0NOAG6of69PASfV86X29EaqSfr3Uv1NLqLqaZyKP6Was/gA1f/FRVN83IzV8+A+Cbylnit3AdW+dXa9yj/VP++NiGvr639O1dY/oZrPOP6DymNk5p3A66iO5PwxVc/Zany/VAtE5nRHByRJc1FEXAR8PzP31osqqUlM/pLUpeoh+WfWw7wnUPUQNeXbBCTtmxP9Jal7/QLVue2eDPwI+L3M3NzekqTu5fClJElSARy+lCRJKoChTJIkqQAdOads0aJFedRRR7W7jDnpwQcf5MADD2x3GXOSbdtctm/z2LbNY9s2T0ltu2nTpnsyc5/fn9qRoWzJkiV873vfa3cZc1J/fz99fX3tLmNOsm2by/ZtHtu2eWzb5impbSPi9n2v5fClJElSEQxlkiRJBTCUSZIkFcBQJkmSVABDmSRJUgEMZZIkSQUwlEmSJBXAUCZJklQAQ5kkSVIBDGWSJEkFMJRJkiQVwFAmSZJUAEOZJElSAQxlkiRJBTCUSZIkFcBQJkmSVABDmSRJUgFaFsoi4oCIuCYirouIGyLiQ/Xy8yLiPyNiS305plU1SZIklWK/Fj7Xz4DjM3M4IuYD34mIr9X3rc7Mi1tYiyRJUlFaFsoyM4Hh+ub8+pKten5JkqSStXROWUTMi4gtwE7gssy8ur7rjIjYGhFnR8TjW1mTJElSCaLqwGrxk0YsAr4M/AFwL3AXsD+wFrg1Mz88wWNWAasAFi9e/KJ169a1ruAuMjw8zMKFC9tdxpxk2zaX7ds8tm3z2LbNU1LbLl++fFNmHruv9doSygAi4oPATzPzY+OW9QF/mpm/sbfH9vb25sDAQJMr7E79/f309fW1u4w5ybZtLtu3eWzb5rFtm6ekto2IKYWyVh59ubjuISMiFgCvBL4fEYfVywJYCVzfqpokSZJK0cqjLw8Dzo+IeVRhcF1mXhIRl0fEYiCALcDvtrAmSZKkIrTy6MutwLIJlh/fqhokSZJK5Rn9JUmSCmAokyRJKoChTJIkqQCGMkmSpAIYyiRJkgpgKJMkSSqAoUySJKkAhjJJkqQCGMokSZIKYCiTJEkqgKFMkiSpAIYySZKkAhjKJEmSCmAokyRJKoChTJIkqQCGMkmSpAIYyiRJkgpgKJMkSSqAoUySJKkAhjJJkqQCGMokSZIKYCiTJEkqgKFMkiSpAIYySZKkAhjKJEmSCmAokyRJKoChTJIkqQCGMkmSpAIYyiRJkgpgKJMkSSqAoUySJKkAhjJJkqQCGMokSZIKYCiTJEkqgKFMkiSpAIYySZKkAhjKJEmSCmAokyRJKoChTJIkqQCGMkmSpAIYyiRJkgpgKJMkSSqAoUySJKkAhjJJkqQCGMokSZIKYCiTJEkqgKFMkiSpAIYySZKkAhjKJEmSCtCyUBYRB0TENRFxXUTcEBEfqpc/PSKujohbIuKiiNi/VTVJkiSVopU9ZT8Djs/Mo4FjgBMi4qXAXwFnZ+ZRwE+At7ewJkmSpCK0LJRlZbi+Ob++JHA8cHG9/HxgZatqkiRJKkVL55RFxLyI2ALsBC4DbgWGMvORepUfAT2trEmSJKkEkZmtf9KIRcCXgT8HzquHLomIw4GvZebzJ3jMKmAVwOLFi1+0bt26FlbcPYaHh1m4cGG7y5iTbNvmsn2bx7ZtHtu2eUpq2+XLl2/KzGP3td5+rShmT5k5FBHfBo4DFkXEfnVv2VOBwUkesxZYC9Db25t9fX2tKrer9Pf3Y9s2h23bXLZv89i2zWPbNk8ntm0rj75cXPeQERELgFcCNwHfBn6zXu0U4CutqkmSJKkUrewpOww4PyLmUYXBdZl5SUTcCHwxIj4KbAY+18KaJEmSitCyUJaZW4FlEyz/IfDiVtUhSZJUIs/oL0mSVABDmSRJUgEMZZIkSQUwlEmSJBXAUCZJklQAQ5kkSVIBDGWSJEkFaMvXLElSo2zYPMiajQMMDo3Qc9XlrF7Ry8plPe0uS5KmzVAmqWNt2DzIaeu3MfLwKACDQyOctn4bgMFMUsdx+FJSx1qzceDRQDZm5OFR1mwcaFNFkjRzhjJJHWv70Mi0lktSyQxlUpNt2DzIy866nLd+/UFedtblbNg82O6S5oylixZMa7kklcxQJjXR2JynwbrnZmzOk8GsMVav6GXB/Hm7LVswfx6rV/S2qSJJmjlDmdREznlqrpXLejjzDS9g/3nVS1nPogWc+YYXOMlfUkfy6EupiZzz1Hwrl/Vw4TV3MDQ0xMb3Hd/uciRpxuwpk5rIOU+SpKkylElN5JwnSdJUOXwpNdHY3Kb3XryVh0Z30bNogWeclyRNyFAmNZlzniRJU+HwpSRJUgEMZZIkSQUwlEmSJBXAUCZJklQAQ5kkSVIBDGWSJEkFMJRJkiQVwFAmSZJUAEOZJElSAQxlkiRJBTCUSZIkFcBQJkmSVABDmSRJUgEMZZIkSQUwlEmSJBXAUCZJklQAQ5kkSVIBDGWSJEkFMJRJkiQVwFAmSZJUAEOZJElSAQxlkiRJBTCUSZIkFcBQJkmSVABDmSRJUgEMZZIkSQUwlEmSJBXAUCZJklQAQ5kkSVIBDGWSJEkFaFkoi4jDI+LbEXFjRNwQEe+ul58eEYMRsaW+vKZVNUmSJJVivxY+1yPAn2TmtRFxELApIi6r7zs7Mz/WwlokSZKK0rJQlpk7gB319Qci4iagp1XPL0mSVLK2zCmLiCOBZcDV9aJ3RcTWiDg3Ig5uR02SJEntFJnZ2ieMWAj8K3BGZq6PiCXAPUACHwEOy8zfmeBxq4BVAIsXL37RunXrWlh19xgeHmbhwoXtLmPOOfPqEUZHR/nAr9i2zWD7NpevC81j2zZPSW27fPnyTZl57L7Wa+WcMiJiPvAl4AuZuR4gM+8ed/9ngUsmemxmrgXWAvT29mZfX1/T6+1G/f392LaNd87AlQwNDdm2TWL7NpevC81j2zZPJ7ZtK4++DOBzwE2Z+Ylxyw8bt9rrgetbVZMkSVIpWtlT9jLgzcC2iNhSL3s/cHJEHEM1fHkb8M4W1iRJklSEVh59+R0gJrjr0lbVIEmSVCrP6C9JklQAQ5kkSVIBDGWSJEkFMJRJkiQVwFAmSZJUAEOZJElSAQxlkiRJBTCUSZIkFcBQJkmSVABDmSRJUgEMZZIkSQUwlEmSJBXAUCZJklQAQ5kkSVIBDGWSJEkFMJRJkiQVwFAmSZJUAEOZJElSAQxlkiRJBTCUSZIkFcBQJkmSVABDmSRJUgEMZZIkSQUwlEmSJBXAUCZJklQAQ5kkSVIBDGWSJEkFMJRJkiQVwFAmSZJUAEOZJElSAQxlkiRJBTCUSZIkFcBQJkmSVABDmSRJUgEMZZIkSQUwlEmSJBXAUCZJklQAQ5kkSVIBDGWSJEkFMJRJkiQVwFAmSZJUAEOZJElSAQxlkiRJBTCUSZIkFcBQJkmSVABDmSRJUgEMZZIkSQUwlEmSJBXAUCZJklSAloWyiDg8Ir4dETdGxA0R8e56+SERcVlE3Fz/PLhVNUmSJJWilT1ljwB/kpnPA14K/H5EPA84FfhWZj4L+FZ9W5Ikqau0LJRl5o7MvLa+/gBwE9ADvA44v17tfGBlq2qSJEkqRVvmlEXEkcAy4GpgSWbuqO+6C1jSjpokSZLaab9WP2FELAS+BLwnM++PiEfvy8yMiJzkcauAVQCLFy+mv7+/BdV2n+HhYdu2CYaGRhgdHbVtm8T2bS5fF5rHtm2eTmzbloayiJhPFci+kJnr68V3R8RhmbkjIg4Ddk702MxcC6wF6O3tzb6+vlaU3HX6+/uxbRvvnIErGRoasm2bxPZtLl8Xmse2bZ5ObNtWHn0ZwOeAmzLzE+Pu+ipwSn39FOArrapJkiSpFK3sKXsZ8GZgW0RsqZe9HzgLWBcRbwduB05sYU2SJElFaFkoy8zvADHJ3b/WqjokSZJK5Bn9JUmSCmAokyRJKoChTJIkqQD7nFMWEUdMcVtDmXn/LOuRJEnqSlOZ6H8+kEw+SZ/6/vOAzzegJkmSpK6zz1CWmctbUYgkSVI3m8rw5SFT2M6uzBxqQD2SJEldaSrDl9vry96GL+cBU517JkmSpD1MJZTdlJnL9rZCRGxuUD2SJEldaSqnxDiuQetIkiRpElOZ6P/fABGxDdg67rINOCUzzxhbR5IkSTMznZPH/irwWWAEOAm4HnhNM4qSJEnqNlP+QvLMvA/ory9ExLOADzSlKkmSpC4z5Z6yiHj2+NuZeTPwwoZXJEmS1IWm3FMGfCYingkMUs0pOwC4PiKekJk/bUp1kiRJXWI6w5fL4dHvwjwaOKb+uSUidmXmc5pToiRJ0tw3nZ4yADLzDuAO4J/HlkXEwkYWJUmS1G32OacsIq6dwnauaEAtkiRJXWsqPWXPjYite7k/gCc1qB5JkqSuNJVQNpW5YqOzLUSSJKmbTSWUfRh4R2Y+1OxiJEmSutVUzlN2J3BlRBw5fmFEvDAizm1GUZIkSd1mKt99+YGIuAr4ZkS8G5gPvAc4CPhUk+uTJEnqClM9JcYVwNepToOxEzgxMz3iUpIkqUGmckqMvwe2AcPAc4HLgT+MiCc0uTZJkqSuMZU5ZdcBz8nMUzNzIDN/G7gSuGrP78OUJEnSzExlTtlnJlj28YjYDFwKHNWMwiRJkrrJPkNZ/V2XE7kFeNu4+4cy8/6GVSZJktRFpjLR/3wgqc7cv6ex5QmcB3y+YZVJkiR1kakMXy5vRSGSJEndbCoT/SVJktRkhjJJkqQCGMokSZIKYCiTJEkqgKFMkiSpAIYySZKkAhjKJEmSCmAokyRJKoChTJIkqQCGMkmSpAIYyiRJkgpgKJMkSSqAoUySJKkAhjJJkqQCGMokSZIKYCiTJEkqgKFMkiSpAIYySZKkAhjKJEmSCtCyUBYR50bEzoi4ftyy0yNiMCK21JfXtKoeSZKkkrSyp+w84IQJlp+dmcfUl0tbWI8kSVIxWhbKMvMK4L5WPZ8kSVInKWFO2bsiYms9vHlwu4uRJElqh8jM1j1ZxJHAJZn5/Pr2EuAeIIGPAIdl5u9M8thVwCqAxYsXv2jdunWtKLnrDA8Ps3DhwnaXMeecefUIo6OjfOBXbNtmsH2by9eF5rFtm6ektl2+fPmmzDx2X+vt14piJpOZd49dj4jPApfsZd21wFqA3t7e7Ovra3p93ai/vx/btvHOGbiSoaEh27ZJbN/m8nWheWzb5unEtm3r8GVEHDbu5uuB6ydbV5IkaS5rWU9ZRFwI9AGHRsSPgL8A+iLiGKrhy9uAd7aqHkmSpJK0LJRl5skTLP5cq55fkiSpZCUcfSlJktT1DGWSJEkFMJRJkiQVwFAmSZJUAEOZJElSAQxlkiRJBTCUSZIkFcBQJkmSVABDmSRJUgEMZZIkSQUwlEmSJBXAUCZJklQAQ5kkSVIBDGWSJEkFMJRJkiQVwFAmSZJUAEOZJElSAQxlkiRJBTCUSZIkFcBQJkmSVABDmSRJUgEMZZIkSQUwlEmSJBXAUCZJklQAQ5kkSVIBDGWSJEkFMJRJkiQVwFAmSZJUAEOZJElSAQxlkiRJBTCUSZIkFcBQJkmSVABDmSRJUgEMZZIkSQUwlEmSJBXAUCZJklQAQ5kkSVIBDGWSJEkFMJRJkiQVwFAmSZJUAEOZJElSAfZrdwGSpmbD5kHWbBxg+9AISxctYPWKXlYu62l3WZKkBjGUSR1gw+ZBTlu/jZGHRwEYHBrhtPXbAAxmkjRHOHwpdYA1GwceDWRjRh4eZc3GgTZVJElqNEOZ1AG2D41Ma7kkqfMYyqQOsHTRgmktlyR1HkOZ1AFWr+hlwfx5uy1bMH8eq1f0tqkiSVKjOdFf6gBjk/nfe/FWHhrdRY9HX0rSnGMokzrEymU9XHjNHQBc9M7j2lyNJKnRWjZ8GRHnRsTOiLh+3LJDIuKyiLi5/nlwq+qRJEkqSSvnlJ0HnLDHslOBb2Xms4Bv1bclSZK6TstCWWZeAdy3x+LXAefX188HVraqHkmSpJK0++jLJZm5o75+F7CkncVIkiS1SzET/TMzIyInuz8iVgGrABYvXkx/f3+rSusqw8PDtm0TDA2NMDo6Ouu2HapPFuvfaHeNal9NzNeF5rFtm6cT27bdoezuiDgsM3dExGHAzslWzMy1wFqA3t7e7Ovra1GJ3aW/vx/btvHOGbiSoaGhWbftOQNXAtDX59GX4zWqfTUxXxeax7Ztnk5s23YPX34VOKW+fgrwlTbWIkmS1DatPCXGhcCVQG9E/Cgi3g6cBbwyIm4Gfr2+LUmS1HVaNnyZmSdPctevtaoGSZKkUrV7+FKSJEkYyiRJkopgKJMkSSqAoUySJKkAhjJJkqQCGMokSZIKYCiTJEkqgKFMkiSpAO3+7ktJarsNmwdZs3GA7UMjLF20gNUrelm5rKfdZUnqMoYySV1tw+ZBTlu/jZGHRwEYHBrhtPXbAAxmklrK4UtJXW3NxoFHA9mYkYdHWbNxoE0VSepWhjJJXW370Mi0lktSsxjKJHW1pYsWTGu5JDWLoUxSV1u9opcF8+fttmzB/HmsXtHbpookdSsn+kvqamOT+d978VYeGt1Fj0dfSmoTQ5mkrrdyWQ8XXnMHABe987g2VyOpWzl8KUmSVABDmSRJUgEMZZIkSQUwlEmSJBXAUCZJklQAQ5kkSVIBDGWSJEkFMJRJkiQVwFAmSZJUAEOZJElSAfyaJWkvNmweZM3GAbYPjbDU70SUJDWRoUyaxIbNg5y2fhsjD48CMDg0wmnrtwEYzCRJDefwpTSJNRsHHg1kY0YeHmXNxoE2VSRJmssMZdIktg+NTGu5JEmzYSiTJrF00YJpLZckaTYMZdIkVq/oZcH8ebstWzB/HqtX9LapIknSXOZEf2kSY5P533vxVh4a3UWPR19KkprIUCbtxcplPVx4zR0AXPTO49pcjSRpLnP4UpIkqQCGMkmSpAIYyiRJkgpgKJMkSSqAoUySJKkAhjJJkqQCGMokSZIKYCiTJEkqgKFMkiSpAIYySZKkAhjKJEmSCmAokyRJKoChTJIkqQCGMkmSpAIYyiRJkgqwX7sLAIiI24AHgFHgkcw8tr0VSZIktVYRoay2PDPvaXcRkiRJ7eDwpSRJUgFKCWUJfCMiNkXEqnYXI0mS1GqlDF++PDMHI+IpwGUR8f3MvGL8CnVYWwWwePFi+vv721Dm3Dc8PGzb7mFoaARgVu0yNDTC6OjorNu2EbXMRY1oX9t2cr4uNI9t2zyd2LZFhLLMHKx/7oyILwMvBq7YY521wFqA3t7e7Ovra3WZXaG/vx/bdnfnDFwJQF/fcbPaxtDQ0KzbthG1zEWNaF/bdnK+LjSPbds8ndi2bR++jIgDI+KgsevAq4Dr21uVJElSa5XQU7YE+HJEQFXPBZn59faWJEmS1FptD2WZ+UPg6HbXIUmzsWHzIGs2DrB9aISlixawekUvK5f1tLssSR2k7aFMagbfINVKGzYPctr6bYywFPJ8AAAKtklEQVQ8PArA4NAIp63fBuB+J2nK2j6nTGq0sTfIwaERkp+/QW7YPNju0jRHrdk48GggGzPy8ChrNg60qSJJnchQpjnHN0i12vb6dBpTXS5JEzGUac7xDVKttnTRgmktl6SJGMo05/gGqVZbvaKXBfPn7bZswfx5rF7R26aKJHUiQ5nmHN8g1Worl/Vw5htewP7zqpfUnkULOPMNL3CSv6Rp8ehLzTljb4TvvXgrD43uosejLx9V0lGpJdXSCCuX9XDhNXcAcNE7/VYASdNnKNOc5BvkY5V02oaSapGkUjh8KXWJko5KLakWSSqFoUzqEiUdlVpSLZJUCkOZ1CVKOiq1pFokqRSGMqlLlHRUakm1SFIpnOgvdYmSjkotqRZJKoWhTMWZa6dKKElJR6WWVIsklcBQpqJ4qgR1Oz+USN3LOWUqiqdKUDcb+1AyODRC8vMPJRs2D7a7NEktYChTUTxVgrqZH0qk7mYoU1E8VYK6mR9KpO5mKFNRPFWCupkfSqTuZihTUVYu6+HMN7yA/edVu2bPogWc+YYXONFZXcEPJVJ38+hLNVQjjhzzVAnqVp6/TepuhjI1jKezkGavER9KPK2G1JkcvlTDeOSY1H6eVkPqXIYyNYxHjknt54cjqXM5fKmGWbpoAYMTBDCPHJt7HB4rlx+OpM5lT5mA6k32ZWddzlu//iAvO+vyGQ11eORYd3B4rGyeVkPqXIYy7fYmCzN/k/V0Ft3B4bGyNfLDUSM+rEmaOocvtdc3WU9noT05PFa2Rp1Ww6OppdYzlM0Bs53f45uspsO5g+VrxIejRn1Yc/6hNHUOX3a4RszvcQ6KpsO5g92hER/WnH8oTY+hrI3G5ms8/dR/mfF8jUbM7/FNVtPh3MHu0IgPa42cf9iI10updA5fztBsu+QbNV+jEZ9m/WoXTZdzB+e+1St6d3uNgul/WGvU1Ajnt6lb2FM2A43okm/UJ8hGDT2uXNbDsiMW0Xvw4/juqcf7Qid1uUb0iDbq9alRr5f2tql0HRnKbrt/14z/oUoZMmzUJ0iHHiU1y2w/rDXq9amk+W0GOzVTxw5fzqT7uqQhw0YdwebQo6RSNer1qRGvl404mrSRw6hjU2AGh0boueryGZ+2pBFHts61I2Qb0bbjt9PKdunInrIx0+2dKmnIsJE9XGOfZl/y9EMcepRUlEa8PjXi9bIRH6YbOYw62xN2N7Lnr6QexNlup1EnQ2/XkcMdHcpgev9QJQ0ZegSbJE1NKfPbGvUe0ohw16iA2IjtlBQQS2qXmej4UDadf6hGTopvRKCyh0uSpma2r5eN+DDdqPeQRoS7RgXEknoQS5qv3a6Tqnd0KJvuP5RDhpLUnRrxYbpR7yGNCHeNCogl9SA2ar72dJY3ezvT1bGhbCb/UA4ZSlL3mu2H6Ua9hzQi3DUqIJbUg1jSfO12ndmgI4++PGAefPfU42f0WE96KUmaqUa8hzTiqNRGHdnaiO004kTDjdpOSe0yEx0ZyiRJ6mRj4W5oaIiN72tvJ8Nst1NaEGpE247fDrSuE8dQJkmSZqWUgNjpOnZOmSRJ0lxiKJMkSSqAoUySJKkAhjJJkqQCGMokSZIKYCiTJEkqQBGhLCJOiIiBiLglIk5tdz2SJEmt1vZQFhHzgL8DXg08Dzg5Ip7X3qokSZJaq+2hDHgxcEtm/jAzHwK+CLyuzTVJkiS1VAmhrAe4c9ztH9XLJEmSukbHfM1SRKwCVgEsXHI4/f39M97WE3f9DGBW22jUdkqrZcGC0WJqKWEbjaxlLrVtibXMtn1L+31KqqWEtm3UdkrZxth2bNvm1VLKa+50RGa25IkmLSDiOOD0zFxR3z4NIDPPnOwxvb29OTAw0KIKu0t/fz99fX3tLmNOsm2by/ZtHtu2eWzb5impbSNiU2Yeu6/1Shi+/A/gWRHx9IjYHzgJ+Gqba5IkSWqptg9fZuYjEfEuYCMwDzg3M29oc1mSJEkt1fZQBpCZlwKXtrsOSZKkdilh+FKSJKnrtX2i/0xExAOAM/2b41DgnnYXMUfZts1l+zaPbds8tm3zlNS2T8vMxftaqYjhyxkYmMpRDJq+iPiebdsctm1z2b7NY9s2j23bPJ3Ytg5fSpIkFcBQJkmSVIBODWVr213AHGbbNo9t21y2b/PYts1j2zZPx7VtR070lyRJmms6tadMkiRpTumoUBYRJ0TEQETcEhGntrueuSYibouIbRGxJSK+1+56OllEnBsROyPi+nHLDomIyyLi5vrnwe2ssVNN0ranR8Rgve9uiYjXtLPGThURh0fEtyPixoi4ISLeXS93352lvbSt+24DRMQBEXFNRFxXt++H6uVPj4ir69xwUf11jsXqmOHLiJgH/AB4JfAjqu/MPDkzb2xrYXNIRNwGHJuZpZzXpWNFxCuAYeDzmfn8etlfA/dl5ln1h4qDM/N97ayzE03StqcDw5n5sXbW1uki4jDgsMy8NiIOAjYBK4G34r47K3tp2xNx3521iAjgwMwcjoj5wHeAdwN/DKzPzC9GxKeB6zLznHbWujed1FP2YuCWzPxhZj4EfBF4XZtrkiaUmVcA9+2x+HXA+fX186lekDVNk7StGiAzd2TmtfX1B4CbgB7cd2dtL22rBsjKcH1zfn1J4Hjg4np58ftuJ4WyHuDOcbd/hDt0oyXwjYjYFBGr2l3MHLQkM3fU1+8ClrSzmDnoXRGxtR7edHhtliLiSGAZcDXuuw21R9uC+25DRMS8iNgC7AQuA24FhjLzkXqV4nNDJ4UyNd/LM/OXgFcDv18PE6kJspo30BlzBzrDOcAzgWOAHcDH21tOZ4uIhcCXgPdk5v3j73PfnZ0J2tZ9t0EyczQzjwGeSjW69pw2lzRtnRTKBoHDx91+ar1MDZKZg/XPncCXqXZqNc7d9bySsfklO9tcz5yRmXfXL8i7gM/ivjtj9XycLwFfyMz19WL33QaYqG3ddxsvM4eAbwPHAYsiYuwrJYvPDZ0Uyv4DeFZ9JMX+wEnAV9tc05wREQfWk0+JiAOBVwHX7/1RmqavAqfU108BvtLGWuaUscBQez3uuzNST5b+HHBTZn5i3F3uu7M0Wdu67zZGRCyOiEX19QVUBwXeRBXOfrNerfh9t2OOvgSoDxX+JDAPODczz2hzSXNGRDyDqncMqi+qv8D2nbmIuBDoAw4F7gb+AtgArAOOAG4HTsxMJ6xP0yRt20c1/JPAbcA7x82B0hRFxMuBfwO2Abvqxe+nmvvkvjsLe2nbk3HfnbWIeCHVRP55VB1O6zLzw/V72xeBQ4DNwJsy82ftq3TvOiqUSZIkzVWdNHwpSZI0ZxnKJEmSCmAokyRJKoChTJIkqQCGMkmSpAIYyiRJkgpgKJMkSSqAoUxS14uI/oh4Tn39yRHhWdUltZyhTJLgKOAH9fUXUp11XZJaylAmqatFxNOAwfoLoaEKZVvbWJKkLmUok9Ttjmb3EPYiDGWS2sBQJqnbHQMcABARzwJeh8OXktrAUCap2x0NPC4irgM+CNwInNLekiR1o8jMdtcgSW0TETcDv5SZD7S7FkndzZ4ySV0rIg4C0kAmqQT2lEmSJBXAnjJJkqQCGMokSZIKYCiTJEkqgKFMkiSpAIYySZKkAhjKJEmSCmAokyRJKoChTJIkqQD/H29BKkFkGMjNAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dft_signal_mixture(32, 1, 10.3, 1, 15.2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Investigating the magnitude spectrum one could conclude that the signal consists of two major contributions at the frequencies $\\mu_1 = 10$ and $\\mu_2 = 15$. Now lets take a look at a situation where the frequencies are closer together" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dft_signal_mixture(32, 1, 10.3, 1, 10.9)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From visual inspection of the spectrum it is rather unclear if the mixture consists of one or two exponential signals. So far the levels of both signals where chosen equal. \n", "\n", "Lets consider the case where the second signal has a much lower level that the first one. The frequencies have been chosen equal to the first example" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dft_signal_mixture(32, 1, 10.3, 0.1, 15.2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now the contribution of the second exponential is almost hidden in the spread spectrum of the first exponential. From these examples it should have become clear that the leakage effect limits the spectral resolution of the DFT." ] }, { "cell_type": "markdown", "metadata": { "nbsphinx": "hidden" }, "source": [ "**Copyright**\n", "\n", "This notebook is provided as [Open Educational Resource](https://en.wikipedia.org/wiki/Open_educational_resources). Feel free to use the notebook for your own purposes. The text is licensed under [Creative Commons Attribution 4.0](https://creativecommons.org/licenses/by/4.0/), the code of the IPython examples under the [MIT license](https://opensource.org/licenses/MIT). Please attribute the work as follows: *Sascha Spors, Digital Signal Processing - Lecture notes featuring computational examples, 2016-2018*." ] } ], "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.6.4" } }, "nbformat": 4, "nbformat_minor": 1 }