{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "nbsphinx": "hidden"
   },
   "source": [
    "# The Discrete Fourier Transform\n",
    "\n",
    "*This Jupyter notebook is part of a [collection of notebooks](../index.ipynb) in the bachelors module Signals and Systems, Comunications Engineering, Universität Rostock. Please direct questions and suggestions to [Sascha.Spors@uni-rostock.de](mailto:Sascha.Spors@uni-rostock.de).*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Definition\n",
    "\n",
    "The [discrete Fourier transform](https://en.wikipedia.org/wiki/Discrete_Fourier_transform) (DFT) is defined as\n",
    "\n",
    "\\begin{equation}\n",
    "X[\\mu] = \\sum_{k=0}^{N-1} x[k] \\; e^{-j \\mu \\frac{2 \\pi}{N} k}\n",
    "\\end{equation}\n",
    "\n",
    "where $N \\in \\mathbb{N}$ denotes the length of the DFT and $\\mu \\in \\mathbb{Z}$ the discrete frequency. The DFT maps a discrete signal $x[k]$ to its discrete spectrum $X[\\mu] = \\text{DFT}_N \\{ x[k] \\}$. Since its kernel $e^{-j \\mu \\frac{2 \\pi}{N} k}$ is periodic with period $N$ with respect to the discrete frequency $\\mu$, the spectrum $X[\\mu]$ is periodic with period $N$\n",
    "\n",
    "\\begin{equation}\n",
    "X[\\mu] = X[\\mu + \\nu N]\n",
    "\\end{equation}\n",
    "\n",
    "for $\\nu \\in \\mathbb{Z}$. It follows from the periodicity that the unique range for $\\mu = 0,1, \\dots, N-1$. For $k = 0,1, \\dots, N-1$ the inverse discrete Fourier transform (IDFT) is consequently defined as\n",
    "\n",
    "\\begin{equation}\n",
    "x[k] = \\frac{1}{N} \\sum_{\\mu=0}^{N-1} X[\\mu] \\; e^{j \\mu \\frac{2 \\pi}{N} k}\n",
    "\\end{equation}\n",
    "\n",
    "The kernel $e^{j \\mu \\frac{2 \\pi}{N} k}$ of the IDFT is periodic with respect to the sample index $k$. It follows that the IDFT $x[k] = \\text{IDFT}_M \\{ X[\\mu] \\}$ is periodic\n",
    "\n",
    "\\begin{equation}\n",
    "x[k] = x[k + \\nu N]\n",
    "\\end{equation}\n",
    "\n",
    "Although $k$ and $\\mu$ can take any integer value it can be concluded from the periodicity, that the DFT is only unique for $k, \\mu = 0, 1, \\dots N-1$. As shown later, the periodicity of the DFT and IDFT has wide-ranging consequences for the properties and theorems of the DFT.\n",
    "\n",
    "The kernel of the DFT is often represented in terms of the primitive $N$-th [root of unity](https://en.wikipedia.org/wiki/Root_of_unity) abbreviated by $w_N = e^{-j \\frac{2 \\pi}{N}}$\n",
    "\n",
    "\\begin{equation}\n",
    "X[\\mu] = \\sum_{k=0}^{N-1} x[k] \\; w_N^{\\mu k}\n",
    "\\end{equation}\n",
    "\n",
    "The kernel of the IDFT is given by reversing the sign of the exponent of $w_N$. Other common definitions of the DFT and IDFT may be found in the literature. They differ with respect to the sign of the exponent and the normalization factor $\\frac{1}{N}$. As a consequence, the properties, theorems and transforms may differ from the ones given here."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Link to the Discrete-Time Fourier Transform\n",
    "\n",
    "The [discrete-time Fourier transform](../discrete_time_fourier_transform/definition.ipynb) (DTFT) $X(e^{j \\Omega}) = \\mathcal{F}_* \\{ x[k] \\}$ of a causal signal of finite length $x[k] = 0$ for $k \\in \\mathbb{Z} \\setminus \\{0,1,\\dots, N-1 \\}$ is continuous with respect to the normalized angular frequency $\\Omega$. The DFT $X[\\mu]$ of the same signal is discrete. In order to derive the relation between both transforms, the definition of the DTFT is compared with the definition of the DFT. This reveals that both are linked by\n",
    "\n",
    "\\begin{equation}\n",
    "X[\\mu] = X(e^{j \\Omega}) \\big\\rvert_{\\Omega = \\mu \\frac{2 \\pi}{N}}\n",
    "\\end{equation}\n",
    "\n",
    "The DFT $X[\\mu]$ of a finite-length discrete signal $x[k]$ can be derived by sampling its DTFT $X(e^{j \\Omega})$ equidistantly at $\\Omega = \\mu \\frac{2 \\pi}{N}$. \n",
    "\n",
    "The questions arises if the DFT $X[\\mu]$ fully represents a discrete signal $x[k]$ of finite length? In order to elaborate on this, the DTFT of a discrete signal is investigated. The [DTFT of a discrete signal is periodic](../discrete_time_fourier_transform/definition.ipynb#Definition) with period $2 \\pi$. This holds also for a discrete signal $x[k]$ of finite length. This is depicted below\n",
    "\n",
    "![DTFT of a discrete signal of finite length](DTFT_finite_length_signal.png)\n",
    "\n",
    "The [spectrum of a periodic signal](../periodic_signals/spectrum.ipynb) consists of a series of weighted Dirac impulses. It can be described fully by the weights of the Dirac impulses. The same holds also for the spectrum $X_\\text{p} (e^{j \\Omega})$ of the periodic continuation $x_\\text{p}[k] = \\sum_{\\nu = - \\infty}^{\\infty} x[k - \\nu N]$ of the finite length signal $x[k]$. The weights of the Dirac pulses are given by equidistant sampling of the spectrum of one period $X(e^{j \\Omega})$ at $\\Omega = \\mu \\frac{2 \\pi}{N}$. This is depicted below\n",
    "\n",
    "![DTFT of the periodic continuation of a discrete signal of finite length](DTFT_periodic_continuation.png)\n",
    "\n",
    "It can be concluded from above reasoning that the DFT of a causal finite-length discrete signal contains all information on the signal."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Interpretation of the Spectrum\n",
    "\n",
    "Inspection of the definition of the inverse DFT reveals, that a discrete signal $x[k]$ of finite length can be represented as a superposition of weighted harmonic exponential signals $z^k$ with the complex frequencies $z = e^{j \\mu \\frac{2 \\pi}{N}}$ for $\\mu = 0, 1, \\dots, N-1$. The corresponding normalized angular frequencies of the exponential signal are given as $\\Omega = \\mu \\frac{2 \\pi}{N}$. In the following, the complex frequencies $z$ are illustrated in the $z$-plane for the case of an even ($N=10$) and odd length ($N=11$) of the DFT\n",
    "\n",
    "![Complex frequencies of DFT kernel](sampling_unit_circle.png)\n",
    "\n",
    "The distribution of the complex frequencies in the $z$-plane is different for an even or odd length of the DFT. Only in the case of an even length, the normalized frequency $\\Omega = \\pi$ is included. For a further interpretetation of the discrete frequency $\\mu$, the link between the DFT and the DTFT is used. The DFT $X[\\mu]$ can be derived from the DTFT by sampling $X(e^{j \\Omega})$ at $\\Omega = \\mu \\frac{2 \\pi}{N}$. The DTFT $X(e^{j \\Omega})$ is sampled in the range of $0 \\leq \\Omega < 2 \\pi$. Since the DTFT is periodic with a period of $2 \\pi$, it can be conluded that the DTFT $X(e^{j \\Omega})$ for $\\pi < \\Omega < 2 \\pi$ is equal to the DTFT for $-\\pi < \\Omega < 0$. It follows, that the DFT $X[\\mu]$ for $\\frac{N}{2} < \\mu \\leq (N-1)$ is equal to the sampled DTFT for [negative normalized angular frequencies](https://en.wikipedia.org/wiki/Negative_frequency) $-\\pi < \\Omega < 0$. The resulting normalized frequency axis of the DFT is illustrated for the case of an even length ($N=10$)\n",
    "\n",
    "![Frequency axes of the DFT](DFT_axis.png)\n",
    "\n",
    "For a discrete signal which has been derived by sampling from a continuous signal $x[k] = x(k T)$, the normalized angular frequency $\\Omega$ can be related to the frequency $f$ by $\\Omega = 2 \\pi \\frac{f}{f_\\text{s}}$, where $T$ and $f_\\text{s} = \\frac{1}{T}$ denote the sampling interval and frequency, respectively. The lowest axis illustrates the resulting frequency axis. It can be concluded that the first half of the spectrum represents the complex values of $X[\\mu]$ for increasing positive frequencies, while the second half represents the complex values for decreasing negative frequencies. This structure has to be kept in mind when interpreting a DFT.\n",
    "\n",
    "The DFT of a discrete signal $x[k] \\in \\mathbb{C}$ is in general complex valued, $X[\\mu] \\in \\mathbb{C}$. It is commonly illustrated by its real and imaginary part \n",
    "\n",
    "\\begin{equation}\n",
    "X[\\mu] = \\Re \\{ X[\\mu] \\} + j \\cdot \\Im \\{ X[\\mu] \\}\n",
    "\\end{equation}\n",
    "\n",
    "or by its magnitude and phase \n",
    "\n",
    "\\begin{equation}\n",
    "X[\\mu] = |X[\\mu]| \\cdot e^{j \\varphi[\\mu]}\n",
    "\\end{equation}\n",
    "\n",
    "The magnitude spectrum $|X[\\mu]|$ provides insights into the superposition of a discrete signal in terms of the level of its harmonic contributions. It is therefore a valuable tool for the analysis of signals and systems."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Matrix/Vector Representation\n",
    "\n",
    "Above definition of the DFT is given in terms of a summation over the samples $x[k]$ for $k=0, 1, \\dots, N-1$. The summation has to be evaluated for $\\mu = 0, 1, \\dots, N-1$ in order to yield the DFT $X[\\mu] = \\text{DFT}_N \\{ x[k] \\}$. The calculation can be represented in terms of a matrix/vector multiplication. First the $N$ samples of the signal $x[k]$ are combined into the $N \\times 1$ vector\n",
    "\n",
    "\\begin{equation}\n",
    "\\mathbf{x} = \\left[ x[0], x[1], \\dots, x[N-1] \\right]^T\n",
    "\\end{equation}\n",
    "\n",
    "In the same manner, the $N$ samples of the spectrum $X[\\mu]$ are combined  into the $N \\times 1$ vector\n",
    "\n",
    "\\begin{equation}\n",
    "\\mathbf{X} = \\left[ X[0], X[1], \\dots, X[N-1] \\right]^T\n",
    "\\end{equation}\n",
    "\n",
    "The computation of all $N$ values of $X[\\mu]$ from all $N$ values of $x[k]$ can now be expressed as matrix/vector product\n",
    "\n",
    "\\begin{equation}\n",
    "\\mathbf{X} = \\mathbf{F} \\mathbf{x}\n",
    "\\end{equation}\n",
    "\n",
    "where the $N \\times N$ [DFT matrix](https://en.wikipedia.org/wiki/DFT_matrix) is defined as \n",
    "\n",
    "\\begin{equation}\n",
    "\\mathbf{F} = \\left[ \\begin{array}{ccccc}\n",
    "1 & 1 & 1 & \\dots & 1 \\\\\n",
    "1 & w_N & w_N^2 & \\dots & w_N^{N-1} \\\\\n",
    "1 & w_N^2 & w_N^6 & \\dots & w_N^{2 (N-1)} \\\\\n",
    "\\vdots & \\vdots & \\vdots & \\ddots & \\vdots \\\\\n",
    "1 & w^{N-1} & w^{2(N-1)} & \\dots & w^{(N-1)(N-1)}\n",
    "\\end{array} \\right]\n",
    "\\end{equation}\n",
    "\n",
    "Above DFT matrix is, besides the scaling factor $N$, [unitary](https://en.wikipedia.org/wiki/Unitary_matrix)\n",
    "\n",
    "\\begin{equation}\n",
    "\\mathbf{F} \\, \\mathbf{F}^H = N \\cdot \\mathbf{I}\n",
    "\\end{equation}\n",
    "\n",
    "where $(\\cdot)^H$ denotes the [Hermitian](https://en.wikipedia.org/wiki/Hermitian_adjoint) (conjugate transpose) of a matrix and $\\mathbf{I}$ the $N \\times N$ [identity matrix](https://en.wikipedia.org/wiki/Identity_matrix). Multiplying the left- and right-hand side of above matrix/vector representation of the DFT from the left by $\\frac{1}{N} \\mathbf{F}^H$ yields the representation of the inverse DFT as\n",
    "\n",
    "\\begin{equation}\n",
    "\\mathbf{x} = \\frac{1}{N} \\cdot \\mathbf{F}^H \\mathbf{X}\n",
    "\\end{equation}\n",
    "\n",
    "The matrix/vector representation of the DFT is useful for the discussion of its properties and its implementation. Functions for the computation of the DFT matrix are provided in many toolkits for numerical mathematics. In the following the Python function [`scipy.linalg.dft`](http://docs.scipy.org/doc/scipy/reference/generated/scipy.linalg.dft.html) is used. The real part of $w_N^\\mu$ for $\\mu=0, 1, \\dots, N-1$ is plotted for illustration of the kernel of the DFT. The application of the matrix/vector representation is shown in the following section."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10d4f2160>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy.linalg import dft\n",
    "\n",
    "F = dft(8)\n",
    "\n",
    "plt.figure(figsize=(10, 10))\n",
    "for n in range(8):\n",
    "    ax = plt.subplot(4, 2, n+1)\n",
    "    ax.stem(np.real(F[:, n]))\n",
    "    plt.title('$\\mu = %d$'%n)\n",
    "    plt.ylabel(r'$\\Re \\{ e^{-j \\mu \\frac{2 \\pi}{N} k} \\}$')\n",
    "    plt.xlabel('$k$')\n",
    "plt.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Transformation of the Dirac Impulse\n",
    "\n",
    "The $\\text{DFT}_N \\{ \\delta[k] \\}$ of the [Dirac impulse](../discrete_signals/standard_signals.ipynb#Dirac-Impulse) is derived by introducing $\\delta[k]$ into the definition of the DFT and exploiting the sifting property of the Dirac impulse\n",
    "\n",
    "\\begin{equation}\n",
    "\\text{DFT}_N \\{ \\delta[k] \\} = \\sum_{k = 0}^{N-1} \\delta[k] \\, e^{-j \\mu \\frac{2 \\pi}{N} k} = 1\n",
    "\\end{equation}\n",
    "\n",
    "The transform of the Dirac impulse is equal to one. Hence, all discrete frequencies $\\mu$ are present with equal weight. This is an important property in the theory of discrete signals and systems, since the Dirac impulse is used to characterize linear time-invariant (LTI) systems by their [impulse response](../discrete_systems/impulse_response.ipynb) $h[k] = \\mathcal{H} \\{ \\delta[k] \\}$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Exercise**\n",
    "\n",
    "* Derive the $\\text{DFT}_N \\{ \\delta[k - \\kappa] \\}$ of the shifted Dirac impulse for $0 \\leq \\kappa < N$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Transformation of the Exponential Signal\n",
    "\n",
    "The DFT $X[\\mu] = \\text{DFT}_N \\{ e^{j \\Omega_0 k} \\}$ of the [harmonic exponential signal](../discrete_signals/standard_signals.ipynb#Complex-Exponential-Signal) with normalized frequency $\\Omega_0$ is derived by introducing it into the definition of the DFT. This results in\n",
    "\n",
    "\\begin{equation}\n",
    "X[\\mu] = \\sum_{k=0}^{N-1} e^{j \\Omega_0 k} \\; e^{-j \\mu \\frac{2 \\pi}{N} k} \n",
    "= \\sum_{k=0}^{N-1} e^{j k (\\Omega_0 - \\mu \\frac{2 \\pi}{N})} \n",
    "= \\frac{1 - e^{j (\\Omega_0 - \\mu \\frac{2 \\pi}{N}) N}}{1 - e^{j (\\Omega_0 - \\mu \\frac{2 \\pi}{N})}} \n",
    "= e^{-j (\\Omega_0 - \\mu \\frac{2 \\pi}{N} ) \\frac{N-1}{2} } \\cdot \\frac{\\sin \\left( \\frac{N (\\Omega_0 - \\mu \\frac{2\\pi}{N})}{2} \\right)}{\\sin \\left( \\frac{ \\Omega_0 - \\mu \\frac{2\\pi}{N}}{2} \\right)}\n",
    "\\end{equation}\n",
    "\n",
    "The second last equality has been derived by noting that the sum constitutes a [finite geometrical series](https://en.wikipedia.org/wiki/Geometric_series) with the common ratio $e^{-j (\\Omega - \\mu \\frac{2 \\pi}{N})}$.\n",
    "\n",
    "Unlike the [DTFT of the exponential signal](../discrete_time_fourier_transform/definition.ipynb#Transformation-of-the-Exponential-Signal), its DFT is in general not given by a series of shifted Dirac impulses. In order to gain further insight, let's consider an harmonic exponential signal which is periodic with period $N$. The lowest normalized frequency such a periodic signal can have is $\\Omega_\\text{min} =\\frac{2 \\pi}{N}$. Note that an exponential signal whose frequency is a multiple of $\\Omega_\\text{min}$ is also periodic with period $N$. It can be concluded that the normalized frequency of an harmonic exponential signal with period $N$ is given as $\\Omega_0 = M \\cdot \\frac{2 \\pi}{N}$ for $M = 0,1,\\dots, N-1$. Introducing this specific choice for $\\Omega_0$ into the DFT above yields\n",
    "\n",
    "\\begin{equation}\n",
    "\\text{DFT}_N \\{ e^{j M \\cdot \\frac{2 \\pi}{N} k} \\} = N \\cdot \\delta[\\mu - M]\n",
    "\\end{equation}\n",
    "\n",
    "since\n",
    "\n",
    "\\begin{equation}\n",
    "\\frac{\\sin \\left(\\pi (M-\\mu) \\right)}{\\sin \\left(\\frac{\\pi}{N} (M - \\mu) \\right)} = \\begin{cases}\n",
    "N & \\text{for } M=\\mu \\\\\n",
    "0 & \\text{otherwise}\n",
    "\\end{cases}\n",
    "\\end{equation}\n",
    "\n",
    "Note that [L'Hôpital's rule](https://en.wikipedia.org/wiki/L'H%C3%B4pital's_rule) was applied for $M=\\mu$. The DFT of an harmonic exponential signal which is periodic with period $N$ is given as a Dirac impulse. The case of an aperiodic exponential signal is discussed in the following example."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Example**\n",
    "\n",
    "In the following example the DFT of an harmonic exponential signal $e^{j \\Omega_0 k}$ with $\\Omega_0 = M \\cdot \\frac{2 \\pi}{N}$ is computed by the matrix/vector representation of the DFT. The signal is periodic with period $N$ for $M \\in \\mathbb{Z}$ and aperiodic for $M \\notin \\mathbb{Z}$. The latter case is considered first, the former in the exercises below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1.31266387 +5.28685729e-01j,  1.63083183 +1.06667837e+00j,\n",
       "        2.38037882 +2.33409311e+00j,  7.49352177 +1.09799457e+01j,\n",
       "       -2.57047932 -6.03735081e+00j, -0.54711115 -2.61602209e+00j,\n",
       "       -0.01688123 -1.71945225e+00j,  0.24191786 -1.28184690e+00j,\n",
       "        0.40512534 -1.00587811e+00j,  0.52515992 -8.02910730e-01j,\n",
       "        0.62378131 -6.36151064e-01j,  0.71244674 -4.86226008e-01j,\n",
       "        0.79885258 -3.40121704e-01j,  0.88992974 -1.86118644e-01j,\n",
       "        0.99422729 -9.76111721e-03j,  1.12563462 +2.12436536e-01j])"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "N = 16\n",
    "M = 3.33\n",
    "W0 = M * 2*np.pi/N\n",
    "\n",
    "F = dft(N)\n",
    "k = np.arange(N)\n",
    "x = np.exp(1j*W0*k)\n",
    "X = np.matmul(F, x)\n",
    "X"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The real and imaginary part of the signal $x[k]$ as well as its DFT $X[\\mu]$ are plotted for illustration"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10fddb518>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10, 8))\n",
    "\n",
    "plt.subplot(2, 2, 1)\n",
    "plt.stem(x.real)\n",
    "plt.xlabel('$k$')\n",
    "plt.ylabel('$\\Re \\{ x[k] \\}$')\n",
    "plt.ylim([-1.1, 1.1])\n",
    "\n",
    "plt.subplot(2, 2, 2)\n",
    "plt.stem(x.imag)\n",
    "plt.xlabel('$k$')\n",
    "plt.ylabel('$\\Im \\{ x[k] \\}$')\n",
    "plt.ylim([-1.1, 1.1])\n",
    "\n",
    "plt.subplot(2, 2, 3)\n",
    "plt.stem(X.real)\n",
    "plt.xlabel('$\\mu$')\n",
    "plt.ylabel('$\\Re \\{ X[\\mu] \\}$')\n",
    "plt.ylim([-N, N])\n",
    "\n",
    "plt.subplot(2, 2, 4)\n",
    "plt.stem(X.imag)\n",
    "plt.xlabel('$\\mu$')\n",
    "plt.ylabel('$\\Im \\{ X[\\mu] \\}$')\n",
    "plt.ylim([-N, N]);\n",
    "\n",
    "plt.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Exercise**\n",
    "\n",
    "* Rerun the example with different normalized frequencies $\\Omega_0 = M \\frac{2 \\pi}{N}$ resulting in periodic or aperiodic harmonic exponential signals.\n",
    "* Where is the maximum of the real and imaginary part, and the absolute value $|X[\\mu]|$ located in case of an aperiodic signal?\n",
    "\n",
    "It should become obvious that depending on the chosen frequency a more or less 'smeared' Dirac impulse can be observed. This effect is known as [leakage effect](https://en.wikipedia.org/wiki/Spectral_leakage) of the DFT, since the Dirac impulse leaks into the neighboring bins."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Example**\n",
    "\n",
    "In order to facilitate the interpretation of a spectrum, many libraries for signal processing provide functionality to compute the values of the frequency axis for a sampled signal. This is illustrated for the spectrum $X[\\mu]$ of the exponential signal from the previous example. The magnitude spectrum $|X[\\mu]|$ is plotted for a sampling frequency of $f_\\text{s} = 48000$ Hz."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x110229b00>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fs = 48000\n",
    "f = np.fft.fftfreq(N, 1/fs)\n",
    "\n",
    "plt.stem(f, abs(X))\n",
    "plt.xlabel('$f[\\mu]$ in Hz')\n",
    "plt.ylabel(r'$|X[\\mu]|$')\n",
    "plt.xlim([-fs/2, fs/2]);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "nbsphinx": "hidden"
   },
   "source": [
    "**Copyright**\n",
    "\n",
    "The notebooks are provided as [Open Educational Resource](https://de.wikipedia.org/wiki/Open_Educational_Resources). Feel free to use the notebooks for your own educational 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: *Lecture Notes on Signals and Systems* by Sascha Spors."
   ]
  }
 ],
 "metadata": {
  "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
}