{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "9edbe57b",
   "metadata": {},
   "source": [
    "# Fourier transform\n",
    "- Börge Göbel"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "64684100",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9a912bea",
   "metadata": {},
   "source": [
    "## Recall integrals"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "25dafcb2",
   "metadata": {},
   "outputs": [],
   "source": [
    "def integralTrapezoidal(data):\n",
    "    a = 0\n",
    "    for i in range( len(data[0]) - 1 ):\n",
    "        a = a + ( data[1,i+1] + data[1,i] ) / 2 * ( data[0,i+1] - data[0, i] )\n",
    "    return a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "bc152138",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "45bf1402",
   "metadata": {},
   "source": [
    "## Fourier transform to find characteristic frequencies"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cb90b2b3",
   "metadata": {},
   "source": [
    "\\\\(\n",
    "\\tilde{y}(\\omega) = \\frac{1}{\\sqrt{2\\pi}} \\int_{-\\infty}^{\\infty} y(t) e^{i\\omega t}\\mathrm{d}t\n",
    "\\\\)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "cbfe5ee8",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "0b527740",
   "metadata": {},
   "source": [
    "## Use numpy module: Fast Fourier transform (FFT)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "76a944c3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x20f542f4c40>]"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "ft = np.fft.fft(yList)/len(yList)\n",
    "\n",
    "plt.plot(abs(ft)**2 ) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "334048a0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x20f54363610>]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "frequencies = np.arange(len(yList)) / ( len(yList)*0.1 )\n",
    "\n",
    "plt.xlim([0, 10])\n",
    "plt.plot( frequencies*2*np.pi, abs(ft)**2 ) "
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
