{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import matplotlib.image as mpimg\n", "import numpy as np\n", "import scipy.io.wavfile as wavfile\n", "from scipy import integrate\n", "\n", "plt.rcParams['figure.figsize'] = (15, 10)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 67 }, { "cell_type": "code", "collapsed": false, "input": [ "# sampling_rate, signal = wavfile.read(\"flute.wav\")\n", "# x = np.arange(len(signal))\n", "\n", "# testing with Andreas' toy signal\n", "y = lambda x: (0.5 if x < 0.25 or x > 0.75 else -0.5 )+ 0.5\n", "x = np.arange(0,1.0,0.001)\n", "signal = np.array([y(i) for i in x])\n", "x.shape, signal.shape" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 88, "text": [ "((1000,), (1000,))" ] } ], "prompt_number": 88 }, { "cell_type": "code", "collapsed": false, "input": [ "plt.plot(signal)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 89, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nbr/99oiIWLNmTRw/fjyOHTs2fyeGOeZ/9GTm/iQr9yaZuT95s5uxxE1OTsbg4OD044GBgZicnJz1\nmqNHj841iAM0AAAG4klEQVTxMWFhs74CQAbyCHLonembPWf4L7V72fvrZ/r3gDNzzjkRe/dG3HBD\n65PwRnvyyYjHHmt9Cjide3PhOXTopTwC2puxxPX398fExMT044mJiRgYGJjxmqNHj0Z/f/9pz7V0\n6VLljrTuueee1kc4I1/8YusT0MLBgzXuTxYe9+bCc/XVrU9w5qpkOwvL0qVL5+R5Zixxq1evjoMH\nD8aRI0di8eLFsXPnztixY8cp14yOjsa2bdtiw4YN8eijj8YFF1wQixYtOu25Dh06NCcHBgAAWMhm\nLHG9vb2xbdu2WL9+fUxNTcXGjRtjZGQktm/fHhERmzZtiuuvvz52794dQ0NDcd5558VnPvOZN+Tg\nAAAAC1FP9/IfaAMAACCtef/x1DP5sHCYTxMTE/H+978/Lr/88lixYkX8yZ/8SUREPPfcc7Fu3bq4\n9NJL40Mf+lAcP358+u/cd999MTw8HMuWLYu//du/bXV0Foipqam46qqr4ob//c017k0yOH78eNx8\n880xMjISy5cvj71797o3SeO+++6Lyy+/PK644or4yEc+Ej/4wQ/cnzRx5513xqJFi+KKK66Y/tpr\nuRcfe+yxuOKKK2J4eDh+8zd/c/YX7ubRyZMnu6VLl3aHDx/uTpw40a1cubI7cODAfL4knObpp5/u\nHn/88a7ruu7555/vLr300u7AgQPdb//2b3dbt27tuq7r7r///u4Tn/hE13Vd9y//8i/dypUruxMn\nTnSHDx/uli5d2k1NTTU7P29+f/iHf9h95CMf6W644Yau6zr3Jincdttt3QMPPNB1Xde9+OKL3fHj\nx92bpHD48OHukksu6f77v/+767qu+8Vf/MXus5/9rPuTJr785S93+/fv71asWDH9tbO5F3/4wx92\nXdd111xzTbd3796u67ruwx/+cPfwww/P+Lrz+k7cmXxYOMy3iy66KFatWhURET/5kz8ZIyMjMTk5\necoH1d9+++3x13/91xERsWvXrrjllluir68vlixZEkNDQ7Fv375m5+fN7ejRo7F79+74lV/5lemP\na3Fv0tp3v/vd+MpXvhJ33nlnRLz0M/Lnn3++e5MU3vrWt0ZfX1+88MILcfLkyXjhhRdi8eLF7k+a\neN/73hcXXnjhKV87m3tx79698fTTT8fzzz8f1157bURE3HbbbdN/59XMa4k7kw8LhzfSkSNH4vHH\nH481a9bEsWPHpn+T6qJFi+LYsWMREfGtb33rlI/ScN8yn37rt34r/uAP/iDO+ZEPX3Jv0trhw4fj\nne98Z9xxxx1x9dVXx1133RX/+Z//6d4khbe97W3x8Y9/PH7qp34qFi9eHBdccEGsW7fO/UkaZ3sv\nvvzr/f39s96j81rifC4cmXz/+9+Pm266Kf74j/843vKWt5zyvZ6enhnvV/cy8+GLX/xivOtd74qr\nrrpq+l24l3Nv0sLJkydj//798Wu/9muxf//+OO+88+L+++8/5Rr3Jq089dRT8Ud/9Edx5MiR+Na3\nvhXf//734/Of//wp17g/yWK2e/G1mtcSdyYfFg5vhBdffDFuuummuPXWW+Pnf/7nI+KlycgzzzwT\nERFPP/10vOtd74qIM/8Ae3i9vvrVr8ZDDz0Ul1xySdxyyy3xd3/3d3Hrrbe6N2luYGAgBgYG4ppr\nromIiJtvvjn2798fF110kXuT5r72ta/Fz/zMz8Tb3/726O3tjRtvvDH+6Z/+yf1JGmeT4wMDA9Hf\n3x9Hjx495euz3aPzWuJ+9MPCT5w4ETt37ozR0dH5fEk4Tdd1sXHjxli+fHl87GMfm/766OhofO5z\nn4uIiM997nPT5W50dDS+8IUvxIkTJ+Lw4cNx8ODB6R1lmEv33ntvTExMxOHDh+MLX/hCfOADH4gH\nH3zQvUlzF110UQwODsa//du/RUTEnj174vLLL48bbrjBvUlzy5Yti0cffTT+67/+K7quiz179sTy\n5cvdn6Rxtjl+0UUXxVvf+tbYu3dvdF0XDz744PTfeVVz/AtaTrN79+7u0ksv7ZYuXdrde++98/1y\ncJqvfOUrXU9PT7dy5cpu1apV3apVq7qHH364+/a3v9198IMf7IaHh7t169Z13/nOd6b/zu///u93\nS5cu7S677LJubGys4elZKMbHx6d/O6V7kwy+/vWvd6tXr+6uvPLK7hd+4Re648ePuzdJY+vWrd3y\n5cu7FStWdLfddlt34sQJ9ydNbNiwobv44ou7vr6+bmBgoPv0pz/9mu7Fr33ta92KFSu6pUuXdr/x\nG78x6+v6sG8AAIBC5v3DvgEAAJg7ShwAAEAhShwAAEAhShwAAEAhShwAAEAhShwAAEAhShwAAEAh\nShwAAEAh/wOt0GPnILctSgAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 89 }, { "cell_type": "code", "collapsed": false, "input": [ "# Our lowest frequency should be the length of our signal.\n", "# We assume that the signal is periodic with the first period being the length of our signal.\n", "T = len(signal)\n", "f0 = 1.0/T" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 90 }, { "cell_type": "code", "collapsed": false, "input": [ "def a_coeff(x,y,i,f0,c):\n", " return f0*2.0*integrate.trapz((y-c)*np.sin(2*np.pi*x*f0*i),x)\n", " \n", "def b_coeff(x,y,i,f0,c):\n", " return f0*2.0*integrate.trapz((y-c)*np.cos(2*np.pi*x*f0*i),x)\n", "\n", "def c_coeff(x,y):\n", " return integrate.trapz(y,x)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 91 }, { "cell_type": "code", "collapsed": false, "input": [ "c = c_coeff(x,signal)\n", "a_s = []\n", "b_s = []\n", "\n", "for i in xrange(1,100):\n", " a_s.append(a_coeff(x,signal,i,f0,c))\n", " b_s.append(b_coeff(x,signal,i,f0,c))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 92 }, { "cell_type": "code", "collapsed": false, "input": [ "def fourier_value(x,a_s,b_s,c,f0,i_max=None ):\n", " s = c\n", " \n", " i_max = i_max or len(a_s)\n", " \n", " for i in xrange(0,i_max):\n", " s += a_s[i]*np.sin(2*np.pi*x*f0*(i+1))+b_s[i]*np.cos(2*np.pi*x*f0*(i+1))\n", " \n", " return s" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 71 }, { "cell_type": "code", "collapsed": false, "input": [ "approximation = [fourier_value(i,a_s,b_s,c,f0,50) for i in x]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 93 }, { "cell_type": "code", "collapsed": false, "input": [ "plt.plot(approximation)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 94, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nCACVKlXinHPOoUWLFjRt2pRmzZrRrVs3AK6++mpGjRpF48aNmTBhAtdeey0AN954I8899xyNGzem\nfv363HHHHbv8+/vxz+C1117b+mcgSZIkKf3s9DqA1atX06NHj61jeXXq1GHp0qVUq1aNjz76iNzc\nXF599dUiCStJkiRJ2Wi3t0p+/PHHVKtWDYBq1arx8ccfJz2UJEmSJGmbAl0HkEgkdns8UZIkSZK0\ne3Z7q+SPI5L77LMPH374IXvvvfcOP69WrVq8+eabBQ4oSZIkSemoZs2avPHGG0l51m4Xt549ezJu\n3DguuOACxo0bR69evXb4eW+++eYO70yTYhs1ahSjRo2KHUPaIf9+KlX5d1OpzL+fSlXJnE781VHJ\nHW2GvPDCC1mwYAG1a9fmkUce4cILL0xaGEmSJEnSz/3qidv999+/w19fuHBhoYSRJEmSJP1cgZaT\nSOnop3f0SanGv59KVf7dVCrz76eywU7vccv3gxMJ33GTJEmSlLWS2Yk8cZMkSZKkFGdxkyRJkqQU\nZ3GTJEmSpBRncZMkSZKkFGdxkyRJkqQUZ3GTJEmSpBRncZMkSZKkFGdxkyRJkqQUZ3GTJEmSpBRn\ncZMkSZKkFGdxkyRJkqQUZ3GTJEmSpBRncZMkSZKkFGdxkyRJkqQUZ3GTJEmSpBRncZMkSZKkFGdx\nkyRJkqQUZ3GTJEmSpBRncZMkSZKkFGdxkyRJkqQUZ3GTJEmSpBRncZMkSZKkFGdxkyRJkqQUZ3GT\nJEmSpBRncZMkSZKkFGdxkyRJkqQUZ3GTJEmSpBRXqMVt48bCfLokSZIkZYdCLW6DBsGmTYX5HSRJ\nkiQp8xVqcfvqKzjlFNiypTC/iyRJkiRltkItbtOmwVtvwemnQ15eYX4nSZIkScpchVrcypaFWbPg\nmWfgggssb5IkSZKUH4W+VbJiRZg3D+bOhcsvL+zvJkmSJEmZp3hRfJMqVWDBAmjXDsqXh7PPLorv\nKkmSJEmZoUiKG8A++8DChdvK24gRRfWdJUmSJCm9FVlxAzjggFDe2reHcuVg4MCi/O6SJEmSlJ6K\ntLgB1KoF8+dDp05heUmvXkWdQJIkSZLSS5EXN4AGDWD2bOjWLZS3Ll1ipJAkSZKk9FDoWyV/SbNm\nMHUqDBoEy5bFSiFJkiRJqS9acQNo2xbuvx+OOw6efTZmEkmSJElKXVGLG4R33e66C445Bl56KXYa\n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\n3P8A/+kwjDEVwYwAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 94 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }