{ "cells": [ { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Graphing helper function\n", "def setup_graph(title='', x_label='', y_label='', fig_size=None):\n", " fig = plt.figure()\n", " if fig_size != None:\n", " fig.set_size_inches(fig_size[0], fig_size[1])\n", " ax = fig.add_subplot(111)\n", " ax.set_title(title)\n", " ax.set_xlabel(x_label)\n", " ax.set_ylabel(y_label)\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Fourier Transform\n", "\n", "![Time to Frequency Domain](files/images/time_freq_domain.png)\n", "\n", "## The Fourier Transform is like a prism (not the NSA one)\n", "\n", "![Prism](files/images/prism.png)\n", "\n", "
\n", "---\n", "
\n", "\n", "## Fourier Transform Definition\n", "\n", "$$G(f) = \\int_{-\\infty}^\\infty g(t) e^{-i 2 \\pi f t} dt$$\n", "\n", "
\n", "For our purposes, we will just be using the discrete version...\n", "

\n", "\n", "## Discrete Fourier Transform (DFT) Definition\n", "$$G(\\frac{n}{N}) = \\sum_{k=0}^{N-1} g(k) e^{-i 2 \\pi k \\frac{n}{N} }$$\n", "\n", "**Meaning**:\n", "\n", "* $N$ is the total number of samples\n", "* $g(k)$ is the kth sample for the time-domain function (i.e. the DFT input)\n", "* $G(\\frac{n}{N})$ is the output of the DFT for the frequency that is $\\frac{n}{N}$ cycles per sample; so to get the frequency, you have to multiply $n/N$ by the sample rate." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# How to represent waves" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import scipy\n", "\n", "freq = 1 #hz - cycles per second\n", "amplitude = 3\n", "time_to_plot = 2 # second\n", "sample_rate = 100 # samples per second\n", "num_samples = sample_rate * time_to_plot\n", "\n", "t = np.linspace(0, time_to_plot, num_samples)\n", "signal = [amplitude * np.sin(freq * i * 2*np.pi) for i in t] # Explain the 2*pi" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Why the 2*pi?\n", "\n", "* If we want a wave which completes 1 cycle per second, so sine must come back to the same position on a circle as the starting point\n", "* So one full rotation about a circle - $2 \\pi$ (in radians)\n", "\n", "![sine_curve](files/images/Sine_curve_drawing_animation.gif)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Plot the wave" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "setup_graph(x_label='time (in seconds)', y_label='amplitude', title='time domain')\n", "plt.plot(t, signal)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Convert to the Frequency Domain\n", "\n" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [], "source": [ "fft_output = np.fft.rfft(signal)\n", "magnitude_only = [np.sqrt(i.real**2 + i.imag**2)/len(fft_output) for i in fft_output]\n", "frequencies = [(i*1.0/num_samples)*sample_rate for i in range(num_samples//2+1)]" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEZCAYAAACTsIJzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHZ5JREFUeJzt3XuUHWWd7vHvk4QEEu6gARIJCAGUEQGRyyCTZkBuCngY\nEVBUGJ3hoBxQ1EE5LGlHx0GXM0IWeBAHoyB3JRAgYLikRZiBQCAaIOEyIoQQMsNAuIRA0p3f+aNq\np6t2dndXd1d19+5+Pmvttevy7qp3Vzr99PtW1VuKCMzMzGpGDXYFzMxsaHEwmJlZjoPBzMxyHAxm\nZpbjYDAzsxwHg5mZ5TgYbEBJ2kXSo5Jek3TGYNdnsEmaJmnJIOz305LuGOj9WnMYM9gVsBHnH4B7\nImKvwa7IEDLgNxNFxNXA1QO9X2sObjHYQJsCPN7VSkn+mTQbZP5PaANG0t3AwcAlkl6XtLOkGZJ+\nIuk2SW8ALZLGSvqRpOckLUvXj8ts5xuSXpT0gqRTJa2V9N503VxJf5sp+3lJv8/M7yZpjqT/kbRI\n0vGZdTMkXSzp1rR+/yFpx8z63TOfXSbpm5ImSlopaYtMub0l/Zek0Q2OwYaSfiHpFUmPAR+uW79b\n+h1elbRQ0tF19btE0mxJb0i6V9I2ki5Myz8h6YOZ8udIeib9Lo9J+kQ3x2WtpNMkPZXW7eKi/642\n/DgYbMBExCHA74EvR8SmEfFMuuok4LsRsQlwP/ADYGdgj/R9EvBtAElHAGcDhwBTgUPpuSsm0s+O\nB+YAvwK2Bk4EfiJpt0zZE4Dzgc2B/wT+Kf3sxsCdwGxg27Red0fEcmAu8KnMNk4GromIjgZ1aQV2\nTF+HA5+vrZA0BrgFuAN4F3AmcJWkqZnPHw+cC2wFrAEeAB4CtgR+A/w4U/YZ4MCI2BT4DvArSRPr\nj0vGx4APAR8EPiXpsAb1txHAwWBDwc0R8QBARLwD/B3w1Yh4LSJWAheQhAckvxhnRMSiiFhF8ou2\nqI8Dz0bEFZH4A8kv0+MzZWZGxPyIWAtcBeyZLj8aWBYRF0bE6ohYGREPpeuuBD4L67rCTkqXNXI8\n8L30uy0FpmfWHQBMiIgfRER7RMwFbs1891r9FkTEamAmsDIiropk0LPrMvUlIn6TBhcRcQPwNLBv\nN8fnnyPijYhYQhJ2e3ZT1oYxn3y2oWDdVTmS3gWMB+ZLqi0eBdRmtgMeznz2ucy6nkwB9pf0Sm13\nwGjgikyZlzLTbwEbp9OTSVoQjdxE0vKYArwPWBERD3dRdjvghbr612xL5lhk1k/KzC/PTK9qMF+r\nL5I+B3wV2CFdNIGkpdSV7Lay391GGAeDDQXZLo2XSX4p7R4RyxqUXQa8JzM/pe7zK0mCpWabzPQS\noC0iDu9DHZeQdD2tJyLekXQDSathN7puLQC8SFL/Ren8lAbrsrYHnuxtZSVtD1wGHBwR/5Eue5Ti\nIWojmLuSbEhJu0R+BlyYth6QNCnT3309cIqk96XnDL5dt4kFwHGSNpK0M/CFzLpbgV0knSxpjKQN\nJO0jadcCVbsV2EbSmenJ8Y0lZbtlrgROIely6i4YbgC+JWlzSZOB7L0cDwJvSfqHtH4tJN1f1xSo\nX03tF/8EYC3wsqRRkk4F/qIX27ERzMFgA63+hGejE8fnkJw4fUDSCpITxrsARMQdwIXAPcBTwN11\nn/0xyUnZl4AZJCeaST/7JnAYyV/+L6avC4Bx9CD97EeBY9JtPwW0ZNbfn36XR9I++q58B3geeJbk\nJPO6bqyIWEMSLEeRtJwuBj4bEU/XivRUz1qZiFgE/AvJyemXgN2B+3r6XDfzNoKoygf1pJcY3guM\nTV83R8S5DcpNB44k6QY4JSIWVFYpG3YkrQV2jog/DXI97gKujoifD2Y9zPqr0nMMad/rwRHxVnpN\n9/2SDkz/ugJA0pHAThExVdJ+wKXA/lXWy6xskvYB9gKOHey6mPVX5V1JEfFWOjku3d+rdUWOJW1O\nR8SDwGZ111qb9WRQuz0k/YLkHoevpJfXmjW1yq9KSq/rng/sBFwaEU/UFZlE/hK9pemy5ZgVEBHr\n3WE8wPs/ZTD3b1a2gWgxrE0HTJsM/JWkaVXv08zM+m7A7mOIiNcl3QbsA/wus2op+Wu3J6fLciT5\nKgkzsz6IiF7dv1Jpi0HS1pI2S6c3Irncr/6Ko1nA59Iy+5PcNdqwGyki1n+tWUN0dDReN0xf559/\n/qDXYai8fCx8LHwsun/1RdVdSdsCc9M7Lh8AZkXE3ekojn8PEBGzgWclPQP8FPhSr/bwta/BtdeW\nXG0zs5Gr6stVFwJ7N1j+07r5vj/J67XXkpeZmZWi+e98bm9PXiNIS0vLYFdhyPCx6ORj0cnHon8q\nvfO5TJKiYV1PPBH22w+++tWBr5SZ2RAniRhKJ58HxAhsMZiZVcnBYGZmOc0fDB0dDgYzsxI1fzC4\nxWBmVqrhEQwdjZ65bmZmfTE8gsEtBjOz0jgYzMwsx8FgZmY5DgYzM8txMJiZWY6DwczMchwMZmaW\n42AwM7Oc5g8GD4lhZlaq5g8GtxjMzErlYDAzsxwHg5mZ5TgYzMwsx8FgZmY5DgYzM8sZHsHg5zGY\nmZVmeASDWwxmZqVp7mBYuxYiHAxmZiVq7mCoBYKDwcysNM0dDLVzCw4GM7PSNHcwuMVgZla6SoNB\n0mRJ90h6XNJCSWc2KDNN0gpJj6Sv8wrvwMFgZla6MRVvvx04OyIWSNoYmC9pTkQsrit3b0Qc0/ut\nOxjMzMpWaYshIl6KiAXp9JvAImBSg6Lq0w4cDGZmpRuwcwySdgD2BB5ssPoASQsk3Sbp/YU32t4O\no0Y5GMzMSlR1VxIAaTfSr4Gz0pZD1nxg+4h4S9KRwE3ALoU23N4OG27oYDAzK1HlwSBpDEkoXBkR\nN9evzwZFRNwu6SeStoyIV+rLtra2rptuaWmhZdIkB4OZWUZbWxttbW392oYiopzadLUD6Qrg5Yg4\nu4v1EyNieTq9L3B9ROzQoFysV9dFi+DQQ+H11+GNN0qvu5lZs5NERPTqPG6lLQZJBwKfARZKehQI\n4FxgChARcRnwSUmnA2uAVcAJhXdQ60p6Zb3GhZmZ9VGlwRAR9wOjeyhzCXBJn3bgcwxmZqVr7juf\nOzpg3DgHg5lZiZo7GNrbYezY5JLVtWsHuzZmZsNC8wfDmDHJy60GM7NSOBjMzCzHwWBmZjnNHwyj\nRzsYzMxK1PzB4BaDmVmpHAxmZpYzPIJh9GgHg5lZSYZHMLjFYGZWGgeDmZnlOBjMzCynuYOho8PB\nYGZWsuYOBrcYzMxK52AwM7McB4OZmeU4GMzMLKf5g6E2VlJHx2DXxsxsWGj+YHCLwcysVA4GMzPL\ncTCYmVmOg8HMzHIcDGZmltPcwVAbEsPDbpuZlaa5g8EtBjOz0jkYzMwsx8FgZmY5DgYzM8txMJiZ\nWU6lwSBpsqR7JD0uaaGkM7soN13S05IWSNqz8A4cDGZmpRtT8fbbgbMjYoGkjYH5kuZExOJaAUlH\nAjtFxFRJ+wGXAvsX23pmED0Hg5lZKSptMUTESxGxIJ1+E1gETKordixwRVrmQWAzSRML7cAtBjOz\n0g3YOQZJOwB7Ag/WrZoELMnML2X98GjMwWBmVrqqu5IASLuRfg2clbYc+qS1tXXddEtLCy3ZYPDz\nGMzMaGtro62trV/bUESUU5uudiCNAW4Fbo+IixqsvxSYGxHXpfOLgWkRsbyuXKxX18MPh7PPhocf\nhlWr4Hvfq+prmJk1JUlEhHrzmYHoSvo58ESjUEjNAj4HIGl/YEV9KHTJXUlmZqWrtCtJ0oHAZ4CF\nkh4FAjgXmAJERFwWEbMlHSXpGWAlcGrhHTgYzMxKV2kwRMT9wOgC5c7o0w4cDGZmpRsedz572G0z\ns9IMj2Bwi8HMrDQOBjMzy3EwmJlZTvMHg8dKMjMrVfMHg1sMZmalcjCYmVlOcwdDR4eDwcysZM0d\nDG4xmJmVzsFgZmY5hYJB0i6S7pb0WDq/h6Tzqq1aAQ4GM7PSFW0x/Az4FrAGICL+CJxYVaUK8/MY\nzMxKVzQYxkfEvLplg/8nulsMZmalKxoML0vaiWTYbCR9ElhWWa2KcjCYmZWu6LDbXwYuA3aTtBR4\nFji5sloVEZF0H/nOZzOzUhUKhoj4E3CopAnAqIh4o9pqFVALBcnDbpuZlajbYJB0dhfLAYiIf62g\nTsXUxkkCtxjMzErUU4thk/R9V+DDJM9nBjgaqD8ZPbBq5xfAwWBmVqJugyEivgMg6V5g71oXkqRW\n4LbKa9ed2nAY4GAwMytR0auSJgKrM/Or02WDxy0GM7NKFL0q6QpgnqSZ6fwngF9WU6WCHAxmZpUo\nelXSP0m6HTgoXXRqRDxaXbUKcDCYmVWiUDBI2h54GZiZXRYRz1dVsR45GMzMKlG0K+k20ruegY2A\nHYEngd2rqFQhDgYzs0oU7Ur6QHZe0t7AlyqpUVEOBjOzSvTpeQwR8QiwX8l16R0Hg5lZJYqeY8je\nAT0K2Bt4sZIaFeVgMDOrRNFzDJtkpttJzjn8pvzq9EI2GDxWkplZaYoGwxMRcUN2gaTjgRu6KF8r\ncznwcWB5ROzRYP004GbgT+miGyPie4VqlB0radSo5LV2bfJuZmZ9VvS36LcKLqs3Azi8hzL3RsTe\n6atYKEC+xQBuNZiZlaSn0VWPBI4CJkmanlm1KQWe4BYR90ma0kMx9VjLRrJjJUHneYaxY/u0OTMz\nS/TUYngReBh4G5ifec2i55ZAUQdIWiDpNknvL/yp+haDT0CbmZWip9FV/wD8QdJVEVHFb935wPYR\n8VbaOrkJ2KWrwq2treumWyZMoMXBYGaW09bWRltbW7+2oYjoeqV0fUR8StJCOu98XqfRCeUG25gC\n3FKw7LPAhyLilQbrIlfX2bPh4ouTd4B3vxseeyx5NzMzIHmwWkT0qsu+p6uSzkrfP963KgHJOYSG\nlZI0MSKWp9P7kgTVeqHQkLuSzMwq0VNX0rL0/bm+bFzS1UALsJWk54HzgbHJJuMy4JOSTgfWAKuA\nEwpv3MFgZlaJnq5KeoN8F5LSeZH8ct+0u89HxKd7WH8JcEmxqtZxMJiZVaKnFsMm3a0fVA4GM7NK\nFL3zuTai6kdIWgz3DakH9YCDwcysJIXufJb0bZJHeW4FbA38QtJ5VVasRw4GM7NKFG0xfAb4YES8\nDSDpAmABUHwIi7Jlx0oCB4OZWUmKjpX0IrBhZn4csLT86vRCV0NimJlZvxRtMbwGPC7pTpJzDB8F\n5tXGT4qIMyuqX9fclWRmVomiwTAzfdW0lV+VXnIwmJlVougzn39ZdUV6rdGw2x0dg1cfM7NhouhV\nSR+X9KikVyS9LukNSa9XXbluucVgZlaJol1JFwLHAQuju1H3BpKDwcysEkWvSnoBeGzIhAI4GMzM\nKlK0xXAOcLukNuCd2sKI+NcqKlVIezuMH98572AwMytF0WD4LvAmyb0MQ+PZmW4xmJlVomgwbBcR\nf1FpTXrLwWBmVomi5xhmSzqs0pr0loPBzKwSRYPhdOAOSauGzOWqHR0eK8nMrAJFb3DbRNKWwFTy\nYyYNHrcYzMwqUSgYJH2R5PnPk0lGVd0f+HfgkOqq1gMHg5lZJYp2JZ0FfBh4LiIOBvYiGVhv8DgY\nzMwqUTQY3s48i2FcRCwGdq2uWgU4GMzMKlH0ctUXJG0O3ATcKelV4LnqqlWAg8HMrBJFTz7/r3Sy\nVdJcYDPgjspqVYSDwcysEkVbDOtExO+qqEivNRp228FgZtZvRc8xDD2NWgx+HoOZWb8Nr2Bwi8HM\nrN8cDGZmltO8wdDR4WAwM6tA8wZDe7vHSjIzq0ClwSDpcknLJf2xmzLTJT0taYGkPQtv3F1JZmaV\nqLrFMAM4vKuVko4EdoqIqcBpwKWFt+xgMDOrRKXBEBH3Aa92U+RY4Iq07IPAZpImFtq4g8HMrBKD\nfY5hErAkM780XdYzB4OZWSV6fefzYGptbV033fLaa7Q4GMzMctra2mhra+vXNhQR5dSmqx1IU4Bb\nImKPBusuBeZGxHXp/GJgWkQsb1A2cnWdOhVmz07eAa69Fm66KXk3MzMAJBER6s1nBqIrSemrkVnA\n5wAk7Q+saBQKDbkrycysEpV2JUm6GmgBtpL0PHA+MBaIiLgsImZLOkrSM8BK4NTCG3cwmJlVotJg\niIhPFyhzRp827mAwM6vEYF+V1HcedtvMrBLNGwweK8nMrBLNGwyNxkry8xjMzPqtuYPBLQYzs9I5\nGMzMLMfBYGZmOc0ZDGvXJu+jMtV3MJiZlaI5g6G+tQAOBjOzkjgYzMwsx8FgZmY5DgYzM8txMJiZ\nWU5zBkP9cBjgYDAzK0lzBoNbDGZmlXEwmJlZTvMGQ3YAPfCw22ZmJWneYHCLwcysEg4GMzPLGV7B\n4OcxmJn12/AJhtqAerUB9szMrE+GTzCAu5PMzErgYDAzsxwHg5mZ5TRnMDQaEgMcDGZmJWjOYHCL\nwcysMg4GMzPLcTCYmVlO8wZD/VhJ4GAwMytB5cEg6QhJiyU9JemcBuunSVoh6ZH0dV6PG3WLwcys\nMg1+u5ZH0ijgYuAQ4EXgIUk3R8TiuqL3RsQxhTfsYDAzq0zVLYZ9gacj4rmIWANcCxzboJx6tdWu\ngsFDb5uZ9VvVwTAJWJKZfyFdVu8ASQsk3Sbp/T1u1S0GM7PKVNqVVNB8YPuIeEvSkcBNwC7dfsLB\nYGZWmaqDYSmwfWZ+crpsnYh4MzN9u6SfSNoyIl6p31hra2syMW8eLePG0VJfwMFgZiNcW1sbbW1t\n/dqGIqKc2jTauDQaeJLk5PMyYB5wUkQsypSZGBHL0+l9gesjYocG24p1db3oInj2Wbjwwnyhgw6C\n738/eTczMyQREb06j1tpiyEiOiSdAcwhOZ9xeUQsknRasjouAz4p6XRgDbAKOKHHDbsrycysMpWf\nY4iIO4Bd65b9NDN9CXBJrzbqYDAzq0zz3vnsYDAzq4SDwczMcpo3GDxWkplZJZo3GNxiMDOrhIPB\nzMxyHAxmZpbjYDAzsxwHg5mZ5QyvYPCw22Zm/dacwdDR4RaDmVlFmjMY3JVkZlYZB4OZmeU4GMzM\nLMfBYGZmOc0bDF2NldTRMfD1MTMbRpo3GNxiMDOrhIPBzMxyHAxmZpbjYDAzsxwHg5mZ5TRnMHhI\nDDOzyjRnMLjFYGZWmeEVDB5d1cys34ZXMLjFYGbWbw4GMzPLcTCYmVlO8wZDV2MlORjMzPqleYPB\nLQYzs0pUHgySjpC0WNJTks7posx0SU9LWiBpzx436mAwM6tMpcEgaRRwMXA4sDtwkqTd6socCewU\nEVOB04BLe9xwd8Hw6qvw9tv9r/wQ1tbWNthVGDJ8LDr5WHTyseifqlsM+wJPR8RzEbEGuBY4tq7M\nscAVABHxILCZpIndbrWrYNhrL9hkE9huO/jCF+Cuu+DllyGihK8ydPiHvpOPRScfi04+Fv3T4Ldr\nqSYBSzLzL5CERXdllqbLlq+3tZkz4aKLYOJEGD9+/b1tvXUSBkuXwjXXwHnnwZNPJkGyww6w7baw\nxRbJa/PNYcKEztdGG8G4cbDhhjB2LGywQef7mDGd72PGJCe+u3qNGtX5PmoUSJ3Ttfnay8xsCKo6\nGMr1wx/CV74Cxx2X/KLuyqRJ8PWvJy+AFSvgz3+G5cvhlVeS7qbXXoOVK5P5lSvhnXeSLqhVq2D1\nalizJnmtXp0ES3t7Mt/enozV1Oi1dm3ndEQyX3tl52vqg6J+vtELknpOn959mex70WU1jcrVr+vu\nM92V62ldb/YFyb/pjTf2b9tF1/V1e1WWy1q6FG6/vfefK+OPlCr/0OnLtpcsgTlzyq9LzTD/w05R\nYTeLpP2B1og4Ip3/JhAR8YNMmUuBuRFxXTq/GJgWEcvrtjW8+oPMzAZIRPQqyapuMTwE7CxpCrAM\nOBE4qa7MLODLwHVpkKyoDwXo/RczM7O+qTQYIqJD0hnAHJIT3ZdHxCJJpyWr47KImC3pKEnPACuB\nU6usk5mZda/SriQzM2s+TXHnc5Gb5IYrSZdLWi7pj5llW0iaI+lJSb+VtNlg1nEgSJos6R5Jj0ta\nKOnMdPlIPBbjJD0o6dH0eHw/XT7ijkWNpFGSHpE0K50fkcdC0p8l/SH92ZiXLuv1sRjywVDkJrlh\nbgbJd8/6JnBXROwK3AN8a8BrNfDagbMjYnfgAODL6c/BiDsWEfEOcHBE7AXsAfy1pAMZgcci4yzg\nicz8SD0Wa4GWiNgrImq3BvT6WAz5YKDYTXLDVkTcB7xat/hY4Jfp9C+BTwxopQZBRLwUEQvS6TeB\nRcBkRuCxAIiIt9LJcST/j19lhB4LSZOBo4B/yywekccCEOv/Xu/1sWiGYGh0k9ykQarLUPHu2pVb\nEfES8O5Brs+AkrQDsCfwADBxJB6LtOvkUeAloC0inmCEHgvgx8A3gOwJ05F6LAK4U9JDkr6YLuv1\nsWiuG9ysKyPmCgJJGwO/Bs6KiDcb3N8yIo5FRKwF9pK0KfBbSS2s/92H/bGQ9DFgeUQsSI9BV4b9\nsUgdGBHLJL0LmCPpSfrwc9EMLYalwPaZ+cnpspFseW08KUnbAP81yPUZEJLGkITClRFxc7p4RB6L\nmoh4HZgN7MPIPBYHAsdI+hNwDcn5liuBl0bgsSAilqXv/w3cRNIV3+ufi2YIhnU3yUkaS3KT3KxB\nrtNAU/qqmQWckk5/Hri5/gPD1M+BJyLiosyyEXcsJG1du7JE0kbAR4FHGYHHIiLOjYjtI+K9JL8b\n7omIzwK3MMKOhaTxaYsaSROAw4CF9OHnoinuY5B0BHARnTfJXTDIVRowkq4GWoCtSAYWPJ/kL4Eb\ngPcAzwGfiogVg1XHgZBedXMvyQ96pK9zgXnA9YysY/EBkpOItRONV0bEjyRtyQg7FlmSpgFfi4hj\nRuKxkLQjMJPk/8YY4KqIuKAvx6IpgsHMzAZOM3QlmZnZAHIwmJlZjoPBzMxyHAxmZpbjYDAzsxwH\ng5mZ5TgYbMiSdKakJ9I7WYcNSR+TdH46fZqkk3vx2SmSFtYtO1/S2d185kxJn+17jW2k8VhJNpSd\nDhwSES9mF0oaHREdg1SnMnyd5C5dIuKnffh8b28+mgHcDQyrgLXquMVgQ5Kk/we8F7hd0lnpX8VX\nSLoPuCIdXfSH6QNrFkj6u8xnL5a0KH04yW2SjkuXP5veBYqkD0mam06PTx+I9ICk+ZKOTpd/XtJv\nJN2ePuTkB5l9HJGWXSDpTiWekrRVul6Snq7NZz43GdigNtpl9q99SXMlXZB+p8Xp3d69OWbbpg9o\neSR9b5f0noh4A3hZ0vt7+c9gI5RbDDYkRcTpkg4neejIq2nXy/tIRo9cnQbBiojYLx1D635Jc4C9\ngakR8T5J25I8vOXy2mbrd5O+/1/g7oj4QjoG0TxJd6XrPkgyxPca4ElJ04F3gMuAj0TE85I2j4hI\nu7xOJhm+5VBgQUT8T90+DwQe6earj06/05FAK8k4SPV2llTbhoCJwI/SAdT2ApD0JeCgiKgNWf8Q\n8FfkH2Zj1pCDwYay9QYPjIjV6fRhwAckHZ/ObwpMJfnldw0kI01Kuqdue40cBhwt6Rvp/Fg6R/S9\nO30wEJIeB6YAWwK/i4jn0/3Uxp2ZQTKO1UXA36bz9aYAy7r5zjem7/PTso08ExF7r/tS6fmKzPyB\nwBeBj2QWvwjs2M1+zdZxMFgzWZmZFvB/IuLObIF0fP6utNPZfbph3bb+JiKertvW/iStg5q1dP6f\nWS9kIuIFJc/nPhj4MPDpLurRVUCR2V8Hffj/mbaSfgYcnXnKW22fHhjNCvE5BmtWvwW+lD6jAUlT\nJY0nGYH1hPQcxLbAwZnPPAt8KJ3+m7ptnVmbkbRnD/t+ADhI0pS0/BaZdZcDvwKuj8YjVD4HbNPT\nl6tVpTfL02NxPXBORPxn3ept032b9cjBYENZd3/h/htJf/kj6eWbl5L0z88EngEeB34B/HvmM/8I\nTJc0j6T1UPNdYANJf5T0WFquy/pExMvA3wMzlTxe89pMmVnAhHTfjdxPZzg13H438z0t/8t029/J\nnISuhdC+wO+7+JxZjofdtmFN0gzgloi4scfC5exvH+BfImJaN2XuBj6TPn93IOq0Ccm5kn0HYn/W\n/NxisOFuwP7ykXQOyQOUvtlD0R8B/7v6Gq1zKjB9APdnTc4tBjMzy3GLwczMchwMZmaW42AwM7Mc\nB4OZmeU4GMzMLMfBYGZmOf8fSbSF/OWvGqQAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "setup_graph(x_label='frequency (in Hz)', y_label='amplitude', title='frequency domain')\n", "plt.plot(frequencies, magnitude_only, 'r')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Question: So what does the Fourier Transform give us?\n", "\n", "* The amplitudes of simple sine waves\n", "* Their starting position - phase (we won't get into this part much)\n", "\n", "## Question: what sine wave frequencies are used?\n", "\n", "* Answer: This is determined by how many samples are provided to the Fourier Transform\n", "* Frequencies range from 0 to (number of samples) / 2\n", "* **Example: If your sample rate is 100Hz, and you give the FFT 100 samples, the FFT will return the amplitude of the components with frequencies 0 to 50Hz.**" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [] } ], "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.5.1" } }, "nbformat": 4, "nbformat_minor": 0 }