Skip to content

Instantly share code, notes, and snippets.

@amcdawes
Created October 16, 2017 20:01
Show Gist options
  • Save amcdawes/5d9ae810dae5aa5fa4d67702fbdae75c to your computer and use it in GitHub Desktop.
Save amcdawes/5d9ae810dae5aa5fa4d67702fbdae75c to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Introduction to Fourier Analysis in Python"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Time per sample = 0.0157480314961\n",
"Sample rate = 63.5\n"
]
}
],
"source": [
"N = 128\n",
"t, dt = np.linspace(-1,1,N,retstep=True)\n",
"y = np.sin(10*2*np.pi*t)\n",
"print(\"Time per sample =\",dt)\n",
"print(\"Sample rate =\",1/dt)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x10e2fdb38>]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAD8CAYAAABzTgP2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvXvQZdlVH/bb99zX9+h397xnpDHIvAIloJETQ7kSkECk\nUhrFwUSiXB4cqKkkxqmyyxRS4UBKhirJKQcqCa+JLCMDQTwSzDgWCL3AUEKgHltIoxFiRiON1Jqe\n6Xd/j/s699ydP/bZ5+xzzn6stc/t7/tm+qyqru7+vnvu2ffcvfda6/f7rbWFlBKdddZZZ511pq13\n2APorLPOOuvsaFnnGDrrrLPOOqtY5xg666yzzjqrWOcYOuuss846q1jnGDrrrLPOOqtY5xg666yz\nzjqrWOcYOuuss846q1jnGDrrrLPOOqtY5xg666yzzjqrWP+wBxBjZ8+ela9+9asPexidddZZZy8r\ne/LJJ69KKc+FXveydAyvfvWrceHChcMeRmedddbZy8qEEM9TXtdBSZ111llnnVWscwydddZZZ51V\nrHMMnXXWWWedVaxzDJ111llnnVWscwydddZZZ51VbC2OQQjxHiHEZSHEU47fCyHE/y6EeFYI8Skh\nxLcYv3tUCPFM/ufRdYyns84666yzeFtXxvDLAN7o+f33AnhN/ucxAL8AAEKI0wB+EsDfAPA6AD8p\nhDi1pjF11llnnXUWYWtxDFLKfw/guucljwD411LZxwGcFELcC+B7AHxQSnldSnkDwAfhdzBHxnZn\nKT5/Ze+wh8G2P/jMi3hpZ3bYw2DZzckCf/zMlcMeBttmaYZs1R2d29nLzw6KY7gfwJeN/1/Mf+b6\necOEEI8JIS4IIS5cuXL4m8S7//gL+Ns//7HDHgbL0myF//5Xn8Sv/dmXDnsoLHvfJ76MR9/z55gs\nloc9FJb9V//Hn+AX/+jzhz0Mll3dm+Pdf/wcDuss+Is3Jody3zb2+L//PN71+3952MNYqx2UYxCW\nn0nPz5s/lPJxKeV5KeX5c+eCFd233S7vznBrmiLNVoc9FLLtzZZYSWBnmh72UFh2c5Lm4355OYbn\nr+3juSv7h3Lvr9ycRmWGv/fUi/ipf/dZXLwxvQ2j8ttnXriF73jXR/HUV26xr/3f/uBz+N1PfuU2\njCpsH/rsZXzks5cP5d63yw7KMVwE8KDx/wcAvOD5+ZE3vUlN5tkhj4Rue/Nl5e+Xi+3n492dHY5D\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10e26abe0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(t,y)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/dawe7269/anaconda3/lib/python3.6/site-packages/numpy/core/numeric.py:531: ComplexWarning: Casting complex values to real discards the imaginary part\n",
" return array(a, dtype, copy=False, order=order)\n"
]
},
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x10e468518>]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10e32edd8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(np.fft.fft(y))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" \n",
"What is all this? First: the FFT output is complex. The real and imaginary parts have physical meaning, but this is easier to see in the polar representation below. Second, the FFT output is ordered in an odd way. The values from the first value to N/2 represent positive frequencies, and the remaining values N/2+1 to N represent negative frequencies. Because the sin/cos of a positive or negative frequency look the same, the FFT of a real-valued signal is symmetric about N/2.\n",
"\n",
"Let's first look at the real and imaginary parts together:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x10e32ef28>]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10e32ef98>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(np.real(np.fft.fft(y)))\n",
"plt.plot(np.imag(np.fft.fft(y)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, look using the polar representation ($e^{i\\theta} = \\cos\\theta + i\\sin\\theta$):"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x10e5dea58>]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nL3Pyky+VCAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10e5de978>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(np.abs(np.fft.fft(y)))\n",
"plt.plot(np.angle(np.fft.fft(y)),\".\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I've plotted the phase information using dots to illustrate the discontinuities. Before we worry too much about the phase, let's think about the blue amplitude curve, and what values should appear on the horizontal axis?\n",
"\n",
"The spacing in the frequency domain depends on two factors: the number of samples, and the sample rate. If this were actual data from a sensor, we'd have to know the number of samples per unit time (often seconds), call this `d`. We also need to know the total number of samples `n`.\n",
"\n",
"Due to the implementation of the FFT, the frequencies come out in the following order:\n",
"\n",
"`f = [0, 1, ..., n/2-1, -n/2, ..., -1] / (d*n) if n is even\n",
"f = [0, 1, ..., (n-1)/2, -(n-1)/2, ..., -1] / (d*n) if n is odd`\n",
"\n",
"Here in this notebook, we can change the sample rate by changing the `t` array up above. We also know `n=N`. Fortunately, there is a handy function in numpy that does this calculation for you and generates a list of frequencies that match the output values from the FFT:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0. , 0.49609375, 0.9921875 , 1.48828125,\n",
" 1.984375 , 2.48046875, 2.9765625 , 3.47265625,\n",
" 3.96875 , 4.46484375, 4.9609375 , 5.45703125,\n",
" 5.953125 , 6.44921875, 6.9453125 , 7.44140625,\n",
" 7.9375 , 8.43359375, 8.9296875 , 9.42578125,\n",
" 9.921875 , 10.41796875, 10.9140625 , 11.41015625,\n",
" 11.90625 , 12.40234375, 12.8984375 , 13.39453125,\n",
" 13.890625 , 14.38671875, 14.8828125 , 15.37890625,\n",
" 15.875 , 16.37109375, 16.8671875 , 17.36328125,\n",
" 17.859375 , 18.35546875, 18.8515625 , 19.34765625,\n",
" 19.84375 , 20.33984375, 20.8359375 , 21.33203125,\n",
" 21.828125 , 22.32421875, 22.8203125 , 23.31640625,\n",
" 23.8125 , 24.30859375, 24.8046875 , 25.30078125,\n",
" 25.796875 , 26.29296875, 26.7890625 , 27.28515625,\n",
" 27.78125 , 28.27734375, 28.7734375 , 29.26953125,\n",
" 29.765625 , 30.26171875, 30.7578125 , 31.25390625,\n",
" -31.75 , -31.25390625, -30.7578125 , -30.26171875,\n",
" -29.765625 , -29.26953125, -28.7734375 , -28.27734375,\n",
" -27.78125 , -27.28515625, -26.7890625 , -26.29296875,\n",
" -25.796875 , -25.30078125, -24.8046875 , -24.30859375,\n",
" -23.8125 , -23.31640625, -22.8203125 , -22.32421875,\n",
" -21.828125 , -21.33203125, -20.8359375 , -20.33984375,\n",
" -19.84375 , -19.34765625, -18.8515625 , -18.35546875,\n",
" -17.859375 , -17.36328125, -16.8671875 , -16.37109375,\n",
" -15.875 , -15.37890625, -14.8828125 , -14.38671875,\n",
" -13.890625 , -13.39453125, -12.8984375 , -12.40234375,\n",
" -11.90625 , -11.41015625, -10.9140625 , -10.41796875,\n",
" -9.921875 , -9.42578125, -8.9296875 , -8.43359375,\n",
" -7.9375 , -7.44140625, -6.9453125 , -6.44921875,\n",
" -5.953125 , -5.45703125, -4.9609375 , -4.46484375,\n",
" -3.96875 , -3.47265625, -2.9765625 , -2.48046875,\n",
" -1.984375 , -1.48828125, -0.9921875 , -0.49609375])"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"freq = np.fft.fftfreq(N,d=dt)\n",
"freq"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plotting the FFT output vs the frequency array gives a more expected plot with the zero frequency in the middle:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x10e60b4e0>]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nhIEuSRXx/wHr05vu23BRUgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10e60b710>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(freq,np.abs(np.fft.fft(y)),\".\")\n",
"plt.plot(freq,np.angle(np.fft.fft(y)),\".\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"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.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment