Skip to content

Instantly share code, notes, and snippets.

@calebmadrigal
Created December 18, 2012 16:38
Show Gist options
  • Save calebmadrigal/4329518 to your computer and use it in GitHub Desktop.
Save calebmadrigal/4329518 to your computer and use it in GitHub Desktop.
iPython Notebook demonstration of how to find Fourier coefficients.
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "WaveFilter1"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Demonstration of how to find Fourier coefficients\n",
"import numpy, pylab, math\n",
"x = numpy.linspace(0,2*math.pi, 100)\n",
"\n",
"def wave1(x):\n",
" b1 = 5\n",
" b3 = 2\n",
" return b1 * math.sin(x) + b3 * math.sin(3*x)\n",
"\n",
"wave = map(wave1, x)\n",
"pylab.plot(x,wave)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 17,
"text": [
"[<matplotlib.lines.Line2D at 0xb15404c>]"
]
},
{
"output_type": "display_data",
"png": "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\nAElFTkSuQmCC\n"
}
],
"prompt_number": 17
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def integrate(f, start, end, step=0.1):\n",
" return sum(map(lambda x: f(x), numpy.arange(start, end, step)))*step\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"integrate(math.sin, 0, math.pi) # Testing integration function (should come out to 2)\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 6,
"text": [
"1.999547959712598"
]
}
],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"pylab.plot(x, map(lambda x: math.sin(x)*wave1(x), x))\n",
"pylab.show()\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 9
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"pylab.plot(x, map(lambda x: math.sin(3*x)*wave1(x), x))\n",
"pylab.show()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 14
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"T = 2 * math.pi # Fundamental period\n",
"ang_velocity = 1 # Radian/sec\n",
"n = 1\n",
"b1 = (2/T) * integrate(lambda x: math.sin(n * ang_velocity * x) * wave1(x), 0, T)\n",
"print \"Fourier coefficient b1:\", b1"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Fourier coeffitient b1: 5.00005433925\n"
]
}
],
"prompt_number": 12
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"n = 3\n",
"b3 = (2/T) * integrate(lambda x: math.sin(n * ang_velocity * x) * wave1(x), 0, T)\n",
"print \"Fourier coefficient b3:\", b3\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Fourier coeffitient b3: 2.00016363946\n"
]
}
],
"prompt_number": 13
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment