{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# An introduction to the ```numpy``` fft library\n", "\n", "*This notebook is taken from a course of Numerical Physics at Ecole Polytechnique, many thanks to his author Michel Ferrero (CPHT, Ecole Polytechnique) for his authorisation to distribute it.*\n", "\n", "https://docs.scipy.org/doc/numpy-1.13.0/reference/routines.fft.html\n", "\n", "The Fast Fourier Transform (FFT) is an algorithm allowing us to calculate discrete Fourier transforms (DFT).\n", "\n", "DFT determines the weights of different discrete frequencies and has for this reason numerous applications in signal processing, such as filtering. The signal is known as discrete input data, assumed to be defined in the time domain. The output data constitute the spectrum, defined in the frequency domain. Naturally, the nature of the data determines the type of spectra that is calculated and these definitions can be adapted straightforwardly (data defined in the spatial domain $\\to$ spectrum defined in the wavenumber domain, etc). \n", "\n", "The definition of DFT is a matter of convention as far as the normalisation and the sign in the exponential are concerned. Numpy uses the following convention:\n", "\n", "$$A_k=\\sum_{m=0}^{n−1} a_m \\exp \\left (−\\dfrac{2 \\pi i m k}{n}\\right ) \\hbox{ with } k=0,…,n−1$$\n", "\n", "The inverse DFT is given by :\n", "\n", "$$a_m=\\frac{1}{n}\\sum_{k=0}^{n−1} A_k \\exp \\left (\\dfrac{2 \\pi i m k}{n}\\right ) \\hbox{ with } m=0,…,n−1$$\n", "\n", "Only the sign in the argument for the exponential and the normalisation factor ($1/n$) differ from those in DFT. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will use the function fft and ifft from numpy.fft, which calculate the DFT and inverse DFT, respectively, with a fast Fourier transform algorithm.\n", "\n", "The values in the result follow so-called “standard” order: \n", "\n", "If A= fft(a, n), then\n", "\n", "A[0] contains the zero-frequency term.\n", "\n", "A[1:n/2] contains the positive-frequency terms.\n", "\n", "A[n/2+1:] contains the negative-frequency terms, in order of decreasingly negative frequency. \n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Let's see how it works on an example" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "n = 200\n", "omega1 = 30\n", "omega2 = 70\n", "tau = 0.5\n", "\n", "m = np.arange(n)\n", "t, step = np.linspace(-2, 2, n, retstep=True) # initial value, final value, number of points, return step\n", "\n", "# definition of signal a : a modulated Gaussian pulse with two characteristic frequencies\n", "a = (np.cos(omega1*t)+ 0.4*np.cos(omega2*t))*np.exp(-(t/tau)**2)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAABwCAYAAAAeyQdoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJztnXl0XNWVr79dpdI8j5YteZDBs7HBxhAgTCZMjzAk5AWSlUAeCY9MnayVibzOS+cli+6m09DpQPLyyEB3mgTSkCZAAk4YDCQEsA1Inmd5kGVbk6XSWKWqOu+PW7dUkmq4JakkWd7fWlq6Vfeee3ddlc7v7n322UeMMSiKoiiKa6oNUBRFUaYHKgiKoigKoIKgKIqihFFBUBRFUQAVBEVRFCWMCoKiKIoCqCAoiqIoYVQQFEVRFEAFQVEURQmTMdUGpEJ5ebmZP3/+VJuhKIpyWvHOO++0GWMqkh13WgnC/Pnz2bJly1SboSiKclohIoedHHdaCYKiTDfae3ysf/A1OvsGuWJxBY9+at1Um6QoY0bHEBRlHBxq76Ozb5CSXA8NTV1TbY6ijAsVBEUZB139fgCWzy6is89PKKTVg5XTFxUERRkHnX2DAMwvzyVkoMcfmGKLFGXsTKkgiMgvRKRFRLZPpR2KMlYiglCWB0BX+LWinI5MtYfwb8C1U2yDooyZzv5BRKCmJNd6rYKgnMZMqSAYY14HOqbSBkUZD519fgqzPZTlZwJwqs8/xRYpytiZag8hKSJyt4hsEZEtra2tU22OMoO5f8NuXt3TklKbzr5BinM9FOd4rNf9qXkIP3x5Hxu2H0+pjaKki2kvCMaYR4wxa40xaysqkk60U5Qx0esL8JPXDvD4piMptevsH6Q4x0NRriUIXSl4CIFgiIc37uext1K7pqKki2kvCIoyGew92Y0xsOt4d0rtuvr8FOVmUpxjhYxSGUM42NaLPxBi9wlvStdUlHShgqAowJ4TlhAc6eije8B5p97Zb01Ky8xwkZfpTilktOu4JQRtPX7aenypGawoaWCq004fB94EFotIk4jcNZX2KGcuu08MeQZ7Tjj3Ejr7BiPjB8W5mSl5CDuPD3kGqVxTUdLFVGcZ3W6MqTbGeIwxNcaYn0+lPcqZy+4TXmYXZQNDT+7JCIYM3oFBinKtcFFRjicyc9kJu453p3xNRUknGjJSzniMMew50c2liyoozvUMe3JPRPfAIMYQ5SF4UvMQmr28b2E55flZ6iEo0wKtdqqc8bR0+zjVN8iSWQUcbu9jp8OBZbvzL84dEoS9J3sctW3t9tHW42NpdQEnvQPDQlaKMlWoh6Cc8did8ZLqQpZWF7LnhJeggyJ19iQ0WxCKcjLpdJh2aoeIllUXsmRWAXtPdju6pqKkExUE5YzH7pyXzCrgrMp8BgZDnPQOJG1nZxQVhVNO7ZCRMck79kPtvQCcVZnP4lkF+AIhGtt6x/oRFGVCUEFQzni2NnVSW5pDcW5m5Gnf6yD1tGtkyCjHQyBk6PUHk7b12mKS6+GcmmIAGo52jsl+RZkoVBCUM576I52sri0BoDDb6ty7B5KXsbbDQyXhLCP7t5OwUfdAgKwMF1kZbs6qzCcv001DkwqCMrWoICinNe8cPsXl39/I0Y6+MbVv8Q7Q3DXAqpoiAApzrDwLr4MJZnbIqDDbamOXr3CSaeQdGKQwnJ3kdgnn1BRTPw4P4cktR7nx4b/Qp+sxKONABUE5bQmGDN/63XYOtffxTP2xMZ3D7oTPnWuFbQqynYeMOvsGKcjOIMNt/RvZ6addDsTE2x+gIHsoyW9VbTG7jnsZGEweborFY28fYWtTFz/eeGBM7RUFVBCU05hfbzrCruNeCrMzeGH7iTGdo6GpkwyXsHx22EPItj2E5E/aXf2DkfEDsGYqQwoeQvZQ29W1xQwGjeM5ENE0d/bTcLSTwuwMHnn9IIfbdXBaGRsqCMppy2NvHua8ucV84cqz2NHs5Uh76mGj+qOdLKkuINvjBoY8BCf1jE71+SNF7WBocLnDwRiCdyAQCRmBJQhgjWekyoawGD7yybWEjOGJzUdTPoeigAqCcpoSChka23tZO7+U61ZUA7Bhh/N1BVq8A3z9qQY2N55iVTjLByAzw0WOx43XwaBye48/sjAODA0qd/Q4GFTuH4x4IwCzirKZVZjNT/98kIde3kcohTkJG7afYHFVARfWlTG3NJdDmr6qjBEVBOW05IR3AH8gxLyyXGpLc1k5p4gnNh3FF3AWg/+Xl/bx9HvHuGbFLL5w5VnD9hVkZzgaVO7o9VOaNyQImRkuCrMz6OhNXrnUOzAY8UZs/unWc6gpyeGBF/ey0eFCPTubvWw+3MF1K2cBMK8sl0Nj8JQUBRwIgoi8T0R+JCJbRaRVRI6IyPMi8nkRKZoMI5WZzS/fPMQHH/oLG7YfdzSpC+BwuNObV2otbv+VqxdxsK2XR1476Kj9psZ2LjmrnIduP5fqopxh+wpzPEkHlY0xtPX4KM/PGvZ+eX4Wbb1OQ0bDK8dcuqiC/7jrAjxuYdOh5CvLBkOG//X0NkpzM/nURQsAmFeWx5H2Xsf3sc8f4KGX97H+gVe1npKSWBBE5AXg08AfgWuBamAZ8C0gG3hGRG5Mt5HKzCUQDPGjjfvZedzLPY+96zj+faTDCovMK7MWt798cSX/bWU1D72yn0vuf4Vv/te2uG3be3wcaO3l/AWlMfcXZmcknYfQ5w/iC4SGeQgApXmZSUNGA4NB/IHQsEFlm2yPm3NqitncGF8QenwBrv3B61z2/Y3UH+3kWzcsjaS8zi3NpdcfpN2BKAH8zePv8cCLe2ls6+XRNxodtVFmLsk8hE8YY+4yxjxrjGk2xgSMMT3GmHeNMQ8YYy4H/joJdiozlI17Wjnp9fHw7edyVmU+zzU0O2p3uL2PDJdQHS4fDfB3H1zGlUsqyfG4eab+WNzaQJsPnQJg3fzYglCQ7UkaMuoId7hlIwShLD+T9iQhI9v7iB5DiOb8+aVsO9YVNwW1/kgnu090U1uSy12XLODm1XMi+2yBPOwgbNTVN8jGPa3cfWkdHz6vhmcbmunx6TyGM5mEgmCMaQMQkftH7rPfs49RlLHwxKYjVBRkcdWyKj6wrIpNjR2O8vgPt/dRW5obmQMAUFmYzU8+sYbPXbGQPn+QfS2xQyCbD3WQmeFiZU3siKcVMkrcMdornEUPKgOU5mVFxCIetvcRnWUUzboFJQwGDe/FyTiqP2oJ2k8+sYb/fcMyRCSyb16ZFUJzknr66t4WgiHDNctncdu6ufT5g44FWZmZOB1U/kCM966bSEOUM4/jXf1s3NPCrWtq8LhdXLW0kkDI8Nre1qRtD3f0Mrc0N+a+VUlqA20+1MHq2mKyMtwx9xc6GFQe8hBGjiFk0tHrT5gl5I3McI4tCGvmlSJi2RmL+qNd1FXkURRDUGpLcxBx5iG8vKuFsrxMVtcWc97cYhZV5fPEpiNJ2ykzl2RjCJ8VkW1YS1xujfppBLaO9+Iicq2I7BGR/SJy73jPp0wdO5u9fOU/G1j/wKv89p0mR4OaT25pImTgtvNrAVhdW0JpXiYv7zqZsJ0xhsPtfZHwyEgWlOdRmJ1B/dGuUfsGBoPsaPZy/vySuOcvzPHQPRBI+Bnaw+MEscYQQoaEayt7Ix5C7JBRUY6HxVUFvHP41Kh9xhjqj3ayOipVNpqsDDfVhdkcSVLKYzAY4tU9LVyxpBK3SxARbjt/Lg1NXexsTj45rs8f4DvP7uCqB1/jhy/vo13XhJ4RJFsg59fAC8A/ANEddrcxJnkaRAJExA38CMv7aAI2i8izxpid4zmv4gxjDJ19gxzr7McfDCFATqab7Aw3mRkuMlxCeX4WLpeMausPhKg/2smRjj6OdvSxqbGDNw+2k+NxM68sl6882cC2Y11858blca8fChl+s/koFy0si4Q53C7hisWVvLjzBAODwchksZGc6hukeyAQaTcSEWFVbXFMD6HF6yMYMnHbgpV26g+G8AVCcW2wB21Hh4ys1+09vlFiYWNPehuZdhrNvLJcDraODvsc7xqgrcfHqtrYgmC1zYuU147HpsYOvAMBrlpaGXnvQ+fN4R837OaJzUf47k0r4rbt8we46eE32NfSw6qaIh58cS8/2rif61dWs3hWAbUluSyszGNxVcGwcJaNLxCkvcdPMGQIhAzBUIhAyBAIGrIyXNSU5JKTGfu+K+klmSAEjTGHgNvjHSAi+cYYZ8tEDWcdsN8YczB8nieAm4AJF4T7/rBzWPZK9Fc0+gsb/d2Ne8yw96OvMvo88Y6VGMcmuuawq0ic7STnFBHcLiEj3MEfO9VPd5IBxKIcD++rK+Oj59dyQV0p/f4gT793jJ//pZHjXQORa80rzeXe65Zw+/lzKcjO4DvP7eDf/nqI61bM4oK6spjn/vP+No519vON65YMe//mc2fz23eb2LD9BDefOydmWzs+Pi9OyAismb8/fvUA/f7gsM6ltceyu7IgK17TSCjH2z8YXxB6fOR43ORmDv8XstNQ23v9nB3n/HZZjHghI8u+bN6OkWlki9zqhIKQy4s7E3tZv950hKIcD5cvHhKE4txMrlsxi6ffO8Y3r1sat1P+wUv72NfSwy/uXMuVS6rY39LNL944xAvbjvP0e0M1pdbOK+HT71/AFUsq6R4IsGH7CX733jG2NnXhD4YS2ldZkEVFQVZENALBEINBQyAUIhA0DEa9HgxanpxLwCWCSwQR6wHD3rZ/JyKZU+vE603nEkf/9+NruOTs8jReIbkgPCMi9cAzwDvGmF4AEakDrgD+O/BT4KkxXHsOEJ1j2ARcMPIgEbkbuBtg7ty5Y7gMnDu3hEA4phvvbxr9xzbD3o/ajtoz/P1Yx8c5dsznG358nM24nyNkIBj+5zEGLlhQSm1pLjUlOWR73ISMYWAwFEmJ9AdD7Djm5eXdJ9mwwyqN4BLrPOvml/J3H1zG4lmFzC7OHhWL/+Z1S9m4p4VvPr2N5//m/ZFOtf5oJzubvfQPBvnJawcozcvkmuVVw9pevLCc+WW5/Ortw3EFwX76nV+eWBCCIcP25i7Oj8omau22QhsViQQhZ6jAXWVhdsxjRk5KsxnyEOIPLEeyjOKEjGz7OvsG8QWCw+5vfVMnmW4XS6oL4radV5ZHe6+frv7BmOMMrd0+/rj9BHdcNH+U4H1s3VyeqW/mYz97i9vXzSUQNFy1tDJyH7Yf6+Lnf2nk9nW1XLnE+tudVVnA39+ykr+/ZSXdA4Mc7ejn7cZ2fvr6Qe557F3cLolkfC2ZVcCnLp7PgvI8MtyWJ2o/qLhdQv9gkCPtfRzp6KOj14/bJXjcLjLcQobLhcctI7ZdeFwCIhhjCBlDyFgeaGTbWN/5kDEk0YS4D2KpMAGniMmsovjf2YkioSAYY9aLyPXA/wQuFpESIADsAf4A3GGMGVtVMWL+bUZ118aYR4BHANauXTsmAb5+ZTXXr6weS9MzHn8gxOt7W9l9wstg0ETCAonIyXRz380ruePRTXzml1v48lWL+I83D/G7+qEMlvPmFvPdm1aMEhOXS/j4BfO47/ldbD/WxYo5ozOB9p7sweOWhGGfRVWWjY2tvcMEoSUsCJUFsTt6IFKFNFGmUVuvn/L80YJgh5ASzVb29g/idgk5cbwPGBKsth4/c4qHJs41tvYyvzw37oA4wKKqfAD2t3SzZt7w1FpjDL96+zCBkOFjF4x+wLqgrox//sgq7t+wm68/ZQ0T3vcHN/dctpC180v54uPvUZaXyTeuXTKqLVhhsGWzPSybXcgnLpzHGwfa+ev+NioLs1k7r4RzaoompNNV0kMyDwFjzPPA8yJSCpyNNSHNhPeNVQzA8ghqo17XAJrzNs3IzHBx1bIqrlpWlfzgKC5dVMH3b13F155q4M/72sjMcPH5KxZy2/lzCYQM88ty43YMt66p4Qcv7eXGh//ClUuq+JePrhoWb997opuFFfl43PFzIioLrQ515FKYrd0+XDJ6MDia6JBRPDp6fVTkj35is+sZtSXwELoHAhRmZyTsGO2QVmu3b5ggnOz2URXHa7GxxXDPiZ5hgrC1qZOv/GcD+1p6uHRRBQsr8mO2v3VNDTecU22NLwVCPPCnPTzw4l7AEqpff+bCSGXXRGS4XVy2qILLFlUkPVaZHiQVBAAR+TTwJaxOux64EHgTuHIc194MnC0iC4BjwG3Ax8ZxPmWaceuaGkrzPLR4fVy3sjpm+CIWJXmZPPfFS/jtu038v9cOcs9j7/DonevIzLAEYM/Jbs6bGz9LCKxsm5JcDye7RwtCWX4W7hiD5TZFOck9hI4eP0tmFY563+N2UZzrSTgXIXpxnHhURAlCNC3eAc6uTBxHnlOcQ16mm70nh+ZhNLb1cuejm8nxuPnezSu4afXshOfI9rgjgvGzO86nsa2XP+44wTXLZ7GgPL5nppzeOBIELDE4H3jLGHOFiCwB/s94LmyMCYjIF7DKYriBXxhjdoznnMr0w44zp0pdRT5fu2YJC8rz+eqTDfzw5X189ZrF9PgCNJ3q5/Z1yceTKguyOekd0aF2+xIOKENyD8EYQ1uvf9QsZZvSvMSzlb39gwkHlGFIEFqiBC0UMrR0+6gqTGy/yyWcXVUQqU1kjOGzj70DwGOfvmBMHfqC8jzuuWxhyu2U0wunE9MGjDEDACKSZYzZDSwe78WNMc8bYxYZYxYaY+4b7/mUmceta2pYv6SS377bRChk2Bd+6rXDIomoLMyKjBnYtHb7Eg4oQ/SaCLE9hF6/NfA+MuXUpjwvK+GgcvfA8NXSYmFPeIv2ENp7rVTNROMfNourCiIewo5mL7tPdPPVqxfr072SEKeC0CQixcDvgBdF5Bk03q9MEjeuns3xrgG2HD4V6eQWOxCEqsJsWmKMIcSK/UeT7bEyWOJVPLUnYZXmxT6P5SEkCRkl8RAyM1yU5mUOEwTbW0jmIQAsmlVAe6+fth4fzzY0k+ESrg+XyFaUeDgKGRljbglvfkdENgJFwIa0WaUoUVy1tIpsj4vnGprxuK0FbGpKcpK2qwp7CKGQweUSQiGrZHVlkg5VRChMUOBu70lr2k08T6OyMIvX97XSHWPNA7DmISRKObWpyB/u4bSEw1/xUmGjsQVz9/Fuft/QzKWLKhwNBCtnNikvkGOMeS1c/dRZfV1FGSd5WRmsX1rFc1ubeXVPC2dX5cecQT2SyoJsgiETeVo/1ecnEDJJPQSwJuXFWhvZGMNDr+xjTnEOF9bFrpb64fNq6PMHefSNQzHbd/b7HQ2wVxRkDfMQ7IypZFlGMJR6+uCLe2juGuDGVYkHkRUFdMU05TTh7vfXkeNxc7CtN2mGkY0dWrFDLa099qS05B1qvDLWf9p5kq1NXXxp/dlx5wKsqi3m6mVV/PT1g3SOWF+5zx9kYDBEmQNRqhwlCGH7HbStKMiipiSH9452sm5BKR9IMW1YOTNxmmWkKFPKqtpi3vzmek71+pMOyNrYoZUWr4/ls6NDLsk71LK8LA60Dq/I0t7j43u/30ldeR4fOi/2LGqbr1y9mGv/9XW+/cwO/vW21ZE5B/Zgc7wMpWhsD8EYg4hwsnuAsrzMSPptIkSEP375UkQYVV5DUeKhHoJyWlGSlzlsDYRE2KEVO9QSKVvh4Anb8hCGnu79gRCffexdWrt9PPjR1UltWDyrgK9evZhnG5r58asHIu+3hb2O8iSZTmAJgj8YitQ+avEmz5CKJi8rQ8VASQkVBGXGYnf8dqhlKGSUvFMtz8+yxhzCRdj+vK+VTYc6+N7NKxIWlovmc5cv5Nrls/jBS3vxB6zz2B5CeZwMpWH225PTwgX5WroHHI0fKMpYUUFQZix26qY9htDi9ZGb6SYvK/lTc3l+JsZYpbYB9rVY4aNrljtP3RQRrllRxWDQRNYnaI+z0losbEGwBe2kd8BRyqmijBUVBGVGU1mQFelQD7fHX2VtJGWRMtZW28bWXsrzMx2X37BZUG5l+zS29YbPF3thnVjUlgytjxwMGVod1DFSlPGggqDMaKoKsyMewoHWHuoqnM3ULRtRxvpgWw915bGLwSXCnhl8MDxA3drtoyArI+46C9HMKc4hK8PFwdYe2nt8hIyzOQiKMlZUEJQZzZySHA619eILBDl6qt9xp257CG3hEE9jW++Yyj4U5Xgoz88c5iE4CReBVZNoQXkeB9t6ORReI7mmOPmEPEUZKyoIyoxmxewivAMB3tjfRjBkHHsI9loH7T3WQjNtPX7HbUeyoDwvshxme4/P0RwEm7qKPA629rDtmLU+9PI5oyusKspEoYKgzGjOqbEW2HkmvDhPXZw1AEZSmO0hwyW09/oiT/djLQxXV57PQdtD6IlfJTVe26On+nn38ClmFWY7KmynKGNFBUGZ0SyqKiDT7eJPO6w1hp0+5btcYhWp6/FH4v9OxWQkCyryaOvx4R0YpL3X52gOgk1dRR7BkOGV3S0xV49TlIlEBUGZ0WRmWOsP9w8GKc/PSlplNJqy/Czaevw0tvXidonjDKWR1IU9i/0tPXT0+ilPxUMIi1D/YDDi7ShKulBBUGY89pN1qmMA5eF6Rgdbe6ktyXFUMiIW9nXfPXyKkCHlMQSbleohKGlmSgRBRD4iIjtEJCQia6fCBuXM4ZxwR7owRUEoy8ukxeujoakz7vrDTqgtzcXjFl7aZYWtnGYZgTWWUR4WEA0ZKelmqjyE7cCHgNen6PrKGUTEQ0hxHkFZfhbHOvtpOtXPLUmK2SUiK8PNDefM5q2DHdZ5HZStiGZhRR7VRdkp1TFSlLEwJZWvjDG7gEgFSEVJJ8tnF/KdDy7jgymuCWA/yc8tzeXaFEpWxOLuS+t4+r1jwFBKq1O+fu1ivHGW81SUiWTal0IUkbuBuwHmzk2+sLqijEREuPPiBSm3swvQfeb9CxxXWI3H0upCLl1Uwet7W1MaQwBYMy/2QjyKMtGkTRBE5CUg1mPV3xpjnnF6HmPMI8AjAGvXrjUTZJ6iJOXKpZV8/oqFfGRt7YSc79s3LOOFbccpyU2tHpKiTBZpEwRjzFXpOreiTAbl+Vl87ZolE3a+syrz+eL6syfsfIoy0WjaqaIoigKAGDP5URgRuQV4CKgAOoF6Y8w1Dtq1AofHeNlyoG2MbdOJ2pUaaldqqF2pMV3tgvHZNs8YU5HsoCkRhKlARLYYY6bdnAe1KzXUrtRQu1JjutoFk2ObhowURVEUQAVBURRFCXMmCcIjU21AHNSu1FC7UkPtSo3pahdMgm1nzBiCoiiKkpgzyUNQFEVREqCCoCiKogAzWBBE5PsisltEtorI0yJSHOe4a0Vkj4jsF5F7J8EuR6W/ReSQiGwTkXoR2TKN7Jrs+1UqIi+KyL7w75I4xwXD96peRJ5Noz0JP7+IZInIb8L73xaR+emyJUW77hSR1qh79OlJsusXItIiItvj7BcR+WHY7q0ict40setyEemKul/fngSbakVko4jsCv8vfinGMem9X8aYGfkDXA1khLfvB+6PcYwbOADUAZlAA7AszXYtBRYDrwJrExx3CCifxPuV1K4pul//BNwb3r431t8xvK9nEu5R0s8PfA74SXj7NuA308SuO4GHJ+v7FHXdS4HzgO1x9l8PvAAIcCHw9jSx63Lg95N8r6qB88LbBcDeGH/HtN6vGeshGGP+ZIyxawa/BdTEOGwdsN8Yc9AY4weeAG5Ks127jDF70nmNseDQrkm/X+Hz/3t4+9+Bm9N8vUQ4+fzR9j4FrJf013mfir+LI4wxrwMdCQ65CfilsXgLKBaR6mlg16RjjDlujHk3vN0N7AJGLsSR1vs1YwVhBP8DS1VHMgc4GvW6idF/gKnCAH8SkXfCJcCnA1Nxv6qMMcfB+ocBKuMcly0iW0TkLRFJl2g4+fyRY8IPJF1AWZrsScUugA+HwwxPicjElHAdP9P5f/B9ItIgIi+IyPLJvHA41Hgu8PaIXWm9X9N+PYREOCmxLSJ/CwSAX8U6RYz3xp2HO0Glvy82xjSLSCXwoojsDj/VTKVdk36/UjjN3PD9qgNeEZFtxpgD47VtBE4+f1ruURKcXPM54HFjjE9E7sHyYq5Ms11OmIr75YR3ser/9IjI9cDvgEkpVSsi+cBvgS8bY7wjd8doMmH367QWBJOkxLaI3AHcAKw34QDcCJqA6CelGqA53XY5PEdz+HeLiDyNFRYYlyBMgF2Tfr9E5KSIVBtjjodd45Y457Dv10EReRXr6WqiBcHJ57ePaRKRDKCI9IcmktpljGmPevlTrHG16UBavlPjJbojNsY8LyI/FpFyY0xaC9+JiAdLDH5ljPmvGIek9X7N2JCRiFwLfAO40RjTF+ewzcDZIrJARDKxBgHTlqHiFBHJE5ECextrgDxmNsQkMxX361ngjvD2HcAoT0ZESkQkK7xdDlwM7EyDLU4+f7S9twKvxHkYmVS7RsSZb8SKT08HngU+Gc6euRDoskOEU4mIzLLHfkRkHVZf2Z641bivKcDPgV3GmAfjHJbe+zWZo+iT+QPsx4q11Yd/7MyP2cDzUcddjzWafwArdJJuu27BUnkfcBL440i7sLJFGsI/O6aLXVN0v8qAl4F94d+l4ffXAj8Lb18EbAvfr23AXWm0Z9TnB76L9eABkA08Gf7+bQLq0n2PHNr1D+HvUgOwEVgySXY9DhwHBsPfr7uAe4B7wvsF+FHY7m0kyLybZLu+EHW/3gIumgSbLsEK/2yN6reun8z7paUrFEVRFGAGh4wURVGU1FBBUBRFUQAVBEVRFCWMCoKiKIoCqCAoiqIoYVQQFCUOIlIsIp8Lb88Wkaem2iZFSSeadqoocQjXk/m9MWbFFJuiKJPCaV26QlHSzD8CC0WkHmti3FJjzAoRuROr6qobWAE8gFV2+hNYE/uuN8Z0iMhCrElEFUAf8BljzO7J/xiK4gwNGSlKfO4FDhhjVgNfG7FvBfAxrBpT9wF9xphzgTeBT4aPeQT4ojFmDfBV4MeTYrWijBH1EBRlbGw0Vs36bhHpwqomClY5gXPCFSsvAp6MWg4ha/LNVBTnqCAoytjwRW2Hol6HsP6vXEBn2LtQlNMCDRkpSny6sZYyTBn3lyw1AAAAbklEQVRjlU9uFJGPQGQt3FUTaZyiTDQqCIoSB2OtIfBGeCH274/hFB8H7hIRu2rttFjWUlHioWmniqIoCqAegqIoihJGBUFRFEUBVBAURVGUMCoIiqIoCqCCoCiKooRRQVAURVEAFQRFURQlzP8Hl/WAgcjwE9oAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# visualization of a\n", "plt.subplot(311)\n", "plt.plot(t,a)\n", "plt.xlabel(\"time\")\n", "plt.ylabel(\"a(t)\")\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# compute A\n", "A = np.fft.fft(a)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Amplitude spectrum\n", "When the input a is a time-domain signal and A = fft(a), np.abs(A) is its amplitude spectrum and np.abs(A)**2 is its power spectrum. The phase spectrum is obtained by np.angle(A)." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# visualization of A\n", "plt.subplot(311)\n", "plt.plot(np.real(A))\n", "plt.ylabel(\"real part\")\n", "\n", "plt.subplot(312)\n", "plt.plot(np.imag(A))\n", "plt.ylabel(\"imag. part\")\n", "\n", "plt.subplot(313)\n", "plt.plot(np.abs(A))\n", "plt.ylabel(\"spect. ampl.\")\n", "plt.xlabel(\"n\")\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For an even number of input points, A[n/2] represents both positive and negative Nyquist frequency, and is also purely real for real input. \n", "\n", "For an odd number of input points, A[(n-1)/2] contains the largest positive frequency, while A[(n+1)/2] contains the largest negative frequency. \n", "\n", "The routine np.fft.fftfreq(n) returns an array giving the frequencies of corresponding elements in the output. The routine np.fft.fftshift(A) shifts transforms and their frequencies to put the zero-frequency components in the middle, and np.fft.ifftshift(A) undoes that shift.\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# visualization of A\n", "omeg=2*np.pi*np.fft.fftfreq(n,step)\n", "plt.subplot(311)\n", "plt.plot(omeg,np.real(A))\n", "plt.ylabel(\"real part\")\n", "\n", "plt.subplot(312)\n", "plt.plot(omeg,np.imag(A))\n", "plt.ylabel(\"imag. part\")\n", "\n", "plt.subplot(313)\n", "plt.plot(omeg,np.abs(A))\n", "plt.ylabel(\"spec. ampl.\")\n", "plt.xlabel(\"$\\omega$\")\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Example with fftshift\n", "B=np.fft.fftshift(A)\n", "\n", "plt.subplot(311)\n", "plt.plot(np.real(B))\n", "plt.ylabel(\"real part\")\n", "\n", "plt.subplot(312)\n", "plt.plot(np.imag(B))\n", "plt.ylabel(\"imag. part\")\n", "\n", "plt.subplot(313)\n", "plt.plot(np.abs(B))\n", "plt.ylabel(\"spect. ampl.\")\n", "plt.xlabel(\"n\")\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Back to the time domain\n", "C=np.fft.ifft(A)\n", "\n", "plt.subplot(311)\n", "plt.plot(t,np.real(C))\n", "plt.ylabel(\"real part\")\n", "\n", "plt.subplot(312)\n", "plt.plot(t,np.imag(C))\n", "plt.ylabel(\"imag. part\")\n", "plt.xlabel(\"time\")\n", "\n", "plt.show()" ] } ], "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.5" } }, "nbformat": 4, "nbformat_minor": 1 }