{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "nbsphinx": "hidden"
   },
   "source": [
    "# The Discrete-Time 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-time Fourier transform](https://en.wikipedia.org/wiki/Discrete-time_Fourier_transform) (DTFT) of a discrete signal $x[k]$ is defined as\n",
    "\n",
    "\\begin{equation}\n",
    "X(e^{j \\Omega}) = \\sum_{k = -\\infty}^{\\infty} x[k] \\, e^{-j \\Omega k}\n",
    "\\end{equation}\n",
    "\n",
    "where $\\Omega \\in \\mathbb{R}$ denotes the normalized angular frequency. The DTFT maps a discrete signal $x[k]$ with $k \\in \\mathbb{Z}$ onto its continuous transform $X(e^{j \\Omega}) = \\mathcal{F}_* \\{ x[k] \\}$ with $\\Omega \\in \\mathbb{R}$. It is frequently termed as *spectrum* of the discrete signal $x[k]$. The argument $e^{j \\Omega}$ copes for the fact that the kernel $e^{-j \\Omega k}$ of the DTFT is a [complex exponential signal](../discrete_signals/standard_signals.ipynb#Complex-Exponential-Signal) $z^{-k}$ with $z = e^{j \\Omega}$. Other common definitions of the DTFT may be found in the literature. They differ with respect to the sign of the exponential function and normalization factors. The properties, theorems and transforms may differ from the ones given here, as a consequence.\n",
    "\n",
    "A sufficient but not necessary condition for the existence of the DTFT is\n",
    "\n",
    "\\begin{equation}\n",
    "\\left|X(e^{j \\Omega})\\right| = \\left| \\sum_{k = -\\infty}^{\\infty} x[k] \\, e^{-j \\Omega k} \\right| \n",
    "\\leq \\sum_{k = -\\infty}^{\\infty} \\left| x[k] \\right| < \\infty\n",
    "\\end{equation}\n",
    "\n",
    "where the upper bound results from the [triangle inequality](https://en.wikipedia.org/wiki/Triangle_inequality). As sufficient condition for the existence of the DTFT, it follows that a signal $x[k]$ needs to be absolutely summable.\n",
    "\n",
    "The DTFT is periodic with a period of $T_\\text{p} = 2 \\pi$,\n",
    "\n",
    "\\begin{equation}\n",
    "X(e^{j \\Omega}) = X(e^{j (\\Omega + n \\cdot 2 \\pi)})\n",
    "\\end{equation}\n",
    "\n",
    "for $n \\in \\mathbb{Z}$. This follows from the periodicity of its exponential kernel $e^{j \\Omega k} = e^{j (\\Omega + 2 \\pi) k}$ for discrete $k \\in \\mathbb{Z}$. It is therefore sufficient to regard the DTFT in one period only. Typically the period $-\\pi < \\Omega < \\pi$ is chosen. The information on the discrete signal $x[k]$ is contained in one period. As a consequence, the inverse discrete-time Fourier transform $x[k] = \\mathcal{F}_*^{-1} \\{ X(e^{j \\Omega}) \\}$ is defined as\n",
    "\n",
    "\\begin{equation}\n",
    "x[k] = \\frac{1}{2 \\pi} \\int_{-\\pi}^{\\pi} X(e^{j \\Omega}) \\, e^{j \\Omega k} \\; d \\Omega\n",
    "\\end{equation}\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Transformation of the Dirac Impulse\n",
    "\n",
    "The transform $\\mathcal{F}_* \\{ \\delta[k] \\}$ of the [Dirac impulse](../discrete_signals/standard_signals.ipynb#Dirac-Impulse) is derived by introducing $\\delta[k]$ into the definition of the DTFT and exploiting the sifting property of the Dirac impulse\n",
    "\n",
    "\\begin{equation}\n",
    "\\mathcal{F}_* \\{ \\delta[k] \\} = \\sum_{k = -\\infty}^{\\infty} \\delta[k] \\, e^{-j \\Omega k} = 1\n",
    "\\end{equation}\n",
    "\n",
    "The transform of the Dirac impulse is equal to one. Hence, all normalized frequencies $\\Omega$ 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 DTFT of a shifted Dirac impulse $\\delta[k - \\kappa]$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Transformation of the Rectangular Signal\n",
    "\n",
    "The DTFT $X(e^{j \\Omega}) = \\mathcal{F}_* \\{ \\text{rect}_N[k] \\}$ of the [rectangular signal](../discrete_signals/standard_signals.ipynb#Rectangular-Signal) is derived by introducing its definition into the definition of the DTFT. This results in\n",
    "\n",
    "\\begin{equation}\n",
    "\\mathcal{F}_* \\{ \\text{rect}[k] \\} = \\sum_{k = -\\infty}^{\\infty} \\text{rect}[k] \\, e^{-j \\Omega k} =\n",
    "\\sum_{k = 0}^{N-1} e^{-j \\Omega k} = e^{-j \\Omega \\frac{N-1}{2}} \\cdot \\frac{\\sin \\left(\\frac{N \\Omega}{2} \\right)}{\\sin \\left( \\frac{\\Omega}{2} \\right)}\n",
    "\\end{equation}\n",
    "\n",
    "The latter 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}$. Note, that\n",
    "\n",
    "\\begin{equation}\n",
    "\\frac{\\sin \\left(\\frac{N \\Omega}{2} \\right)}{\\sin \\left( \\frac{\\Omega}{2} \\right)} \\bigg\\rvert_{\\Omega = n \\cdot 2 \\pi} = N \n",
    "\\end{equation}\n",
    "\n",
    "for $n \\in \\mathbb{Z}$ due to [L'Hôpital's rule](https://en.wikipedia.org/wiki/L'H%C3%B4pital's_rule)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Example**\n",
    "\n",
    "The DTFT $X(e^{j \\Omega}) = \\mathcal{F}_* \\{ \\text{rect}_N[k] \\}$ of the rectangular signal is computed for a specific length $N$ by evaluating the finite series above using `SymPy`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAASsAAAAWBAMAAABqGadAAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAVO8Qq5l2zWaJ3SJE\nMrt93s3fAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC20lEQVRIDY2VT2gTQRTGv80m2/xp0npQQdAi\nItaDsEqrFJGN9aJ4yUFrRKw5mP7BgxGEBQ8aFKU3A1IVPChee1nsyVN7EhSEiCfxYKCot1qIImIh\nfZPsZKe7Ozs7kJ2Z9775vW9nhiwQ2aqRWUoufjdhlBSqTPUMoEShADWqV+krML9QllfNOMka8g6M\n5w/rclUZ04AKBYyYahQvcqyOVI1PAn3Wyf+noD4KXAok+4HLeMzG0SjoL00SKVCc+ZMG//gk0GdX\nc5sULJDxoUYg6wVot4BoFAyL2VKiSPOuiIPU3aWfrGntwetIlICBlkxCW3AkBuqTZcZAsSJP2lin\n7rC8ILKVjGUWWkAiYrdmKzFQDcuMgSIruaOvMAJ0r4/M2SKW90DbAL45MgnFp9WotGOZAko7EILT\n1qmtoVBBkq58JUSxjylMpOn4fgBngakQkYshz8NK1HHQ3eqjxi60XZ4WrG6dwnINhXxPESLAe3zU\n283cCaDV7Kl2uTivo5u1Uleidl68VhZQRoSt3RmUbmDvhNRW/taONa3WSBmO9rkhs4Ul3DeVKGDF\nFFBRtsZe4N4mbv6R2kp0Ohv6OWegs2p06DhZC+4WvsyfhxKF9K/TAipgS39adXoVfM/+IU7MXPGl\nhCm3JcUwrRoVsPXBybnnIRQTWYNLeOtLCVNuS4qJh/Lbyu3HeFMo4w35K74Z1q96Uf/ItSXHsAVq\nVM9WxrbvHLLtIpAcnXngL0VzT4DJR3NmiIKFntn2a9u+TSMJholiofy7NVRkS8Maf8XfYcl+zN0t\nOYYp1aiArfCLJbDkX25WkduSYpiI25Kj/LbYt63ClgYaZ9En0ggk+wHXlhzDlGqU35ZRw7jTLyIO\nOGsWuvoPQo4RbUlRqcm/9EETpdW5ei/gf3JbxtSCPyXM3d2CFMO08VBdKpcKJbYPlYKunNvavtY3\ni4fqLtLDj84DKgVd6UlvgXykQm0BzbPZb4f0sDIAAAAASUVORK5CYII=\n",
      "text/latex": [
       "$$1 + e^{- i \\Omega} + e^{- 2 i \\Omega} + e^{- 3 i \\Omega} + e^{- 4 i \\Omega}$$"
      ],
      "text/plain": [
       "     -ⅈ⋅Ω    -2⋅ⅈ⋅Ω    -3⋅ⅈ⋅Ω    -4⋅ⅈ⋅Ω\n",
       "1 + ℯ     + ℯ       + ℯ       + ℯ      "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "import sympy as sym\n",
    "sym.init_printing()\n",
    "\n",
    "W = sym.symbols('Omega', real=True)\n",
    "k = sym.symbols('k', integer=True)\n",
    "\n",
    "N = 5\n",
    "X = sym.summation(sym.exp(-sym.I*W*k), (k, 0, N-1))\n",
    "X"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The magnitude $|X(e^{j \\Omega})|$ and phase $\\varphi(e^{j \\Omega}) = \\arg \\{ X(e^{j \\Omega}) \\}$ of the spectrum is plotted for illustration"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1156d4c50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11577add8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sym.plot(sym.Abs(X), (W, -3*sym.pi, 3*sym.pi), xlabel=r'$\\Omega$', ylabel=r'$| X(e^{j \\Omega}) |$')\n",
    "sym.plot(sym.arg(X), (W, -3*sym.pi, 3*sym.pi), xlabel=r'$\\Omega$', ylabel=r'$\\varphi(e^{j \\Omega})$');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Exercise**\n",
    "\n",
    "* What happens to the magnitude/phase if you increase/decrease the length $N$ of the rectangular signal?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Transformation of the Exponential Signal\n",
    "\n",
    "The DTFT $X(e^{j \\Omega}) = \\mathcal{F}_* \\{ 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 DTFT. This results in\n",
    "\n",
    "\\begin{equation}\n",
    "\\mathcal{F}_* \\{ e^{j \\Omega_0 k} \\} = \\sum_{k = -\\infty}^{\\infty} e^{j \\Omega_0 k} \\, e^{-j \\Omega k} =\n",
    "\\sum_{k = -\\infty}^{\\infty} e^{-j (\\Omega - \\Omega_0) k} = {\\bot \\!\\! \\bot \\!\\! \\bot}\\left( \\frac{\\Omega - \\Omega_0}{2 \\pi} \\right)\n",
    "\\end{equation}\n",
    "\n",
    "where for the last equality the [Fourier transform of the Dirac comb](../periodic_signals/spectrum.ipynb#The-Dirac-Comb) has been used. The DTFT of the exponential signal is a periodic series of shifted Dirac impulses, as\n",
    "\n",
    "\\begin{equation}\n",
    "{\\bot \\!\\! \\bot \\!\\! \\bot}\\left( \\frac{\\Omega - \\Omega_0}{2 \\pi} \\right) = 2 \\pi \\sum_{\\mu = -\\infty}^{\\infty} \\delta(\\Omega - \\Omega_0 - 2 \\pi \\mu)\n",
    "\\end{equation}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Link to Fourier Transform of a Sampled Signal\n",
    "\n",
    "The link between the Fourier transform of a sampled signal $x_\\text{s}(t)$ and the DTFT of its discrete counterpart $x[k] = x(k T)$ is established in the following. Under the assumption of [ideal sampling](../sampling/ideal.ipynb#Model-of-Ideal-Sampling), the sampled signal reads\n",
    "\n",
    "\\begin{equation}\n",
    "x_\\text{s}(t) = \\sum_{k = -\\infty}^{\\infty} x(k T) \\cdot \\delta(t - k T) = \\sum_{k = -\\infty}^{\\infty} x[k] \\cdot \\delta(t - k T)\n",
    "\\end{equation}\n",
    "\n",
    "where $x(t)$ denotes the continuous signal and $T$ the sampling interval. Introducing the sampled signal into the [definition of the Fourier transform](../fourier_transform/definition.ipynb) yields the spectrum of the sampled signal\n",
    "\n",
    "\\begin{equation}\n",
    "X_\\text{s}(j \\omega) = \\int_{-\\infty}^{\\infty} \\sum_{k = -\\infty}^{\\infty} x[k] \\cdot \\delta(t - k T) \\, e^{-j \\omega t} \\; dt = \\sum_{k = -\\infty}^{\\infty} x[k] \\, e^{-j \\omega k T}\n",
    "\\end{equation}\n",
    "\n",
    "where the last equality has been derived by changing the order of summation/integration and exploiting the [sifting property of the Dirac impulse](../continuous_signals/standard_signals.ipynb#Dirac-Impulse). Comparison with the definition of the DTFT yields\n",
    "\n",
    "\\begin{equation}\n",
    "X_\\text{s}(j \\omega) = X(e^{j \\Omega}) \\big\\rvert_{\\Omega = \\omega T}\n",
    "\\end{equation}\n",
    "\n",
    "The spectrum of the sampled signal $X_\\text{s}(j \\omega)$ is equal to the DTFT of the discrete Signal $X(e^{j \\Omega})$ for $\\Omega = \\omega T$. This result can be used to interpret the frequency axis of the DTFT."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Interpretation of the Spectrum\n",
    "\n",
    "It can be concluded from the definition of the inverse DTFT that a discrete signal $x[k]$ can be represented as a superposition of weighted harmonic exponential signals $X(e^{j \\Omega}) \\cdot e^{j \\Omega k}$ for $-\\pi < \\Omega < \\pi$. In general the spectrum $X(e^{j \\Omega})$ will also have contributions for negative normalized angular frequencies $-\\pi < \\Omega < 0$. The concept of [negative frequencies](https://en.wikipedia.org/wiki/Negative_frequency) has no physical meaning. However, in the context of the DTFT with its complex kernel $e^{j \\Omega k}$ negative frequencies are required to express complex and real-valued signals.\n",
    "\n",
    "The DTFT of a discrete signal $x[k] \\in \\mathbb{C}$ is in general complex valued, $X(e^{j \\Omega}) \\in \\mathbb{C}$. It is commonly represented by its real and imaginary part \n",
    "\n",
    "\\begin{equation}\n",
    "X(e^{j \\Omega}) = \\Re \\{ X(e^{j \\Omega}) \\} + j \\cdot \\Im \\{ X(e^{j \\Omega}) \\}\n",
    "\\end{equation}\n",
    "\n",
    "or by its magnitude and phase \n",
    "\n",
    "\\begin{equation}\n",
    "X(e^{j \\Omega}) = |X(e^{j \\Omega})| \\cdot e^{j \\varphi(e^{j \\Omega})}\n",
    "\\end{equation}\n",
    "\n",
    "The magnitude spectrum $|X(e^{j \\Omega})|$ provides insights into the composition of a signal in terms of its harmonic contributions. For a discrete signal which has been derived by sampling from a continuous signal, the normalized angular frequency $\\Omega$ can be related to the\n",
    "\n",
    "* angular frequency $\\omega$ by $\\Omega = \\omega T$\n",
    "* frequency $f$ by $\\Omega = 2 \\pi \\frac{f}{f_\\text{s}}$\n",
    "\n",
    "where $T$ and $f_\\text{s} = \\frac{1}{T}$ denote the sampling interval and frequency, respectively. This result can be used to interpret the frequency of the DTFT as follows\n",
    "\n",
    "![DTFT frequency axes for sampled signals](DTFT_axis.png)"
   ]
  },
  {
   "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
}