{ "metadata": { "name": "", "signature": "sha256:e0a3c82f63ba6c9b1024aa1af3173d756a9472701d2d54b4deba67c4061530ae" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "$$E(t) \\propto exp[i(\\omega_0 t - \\phi(t))]$$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "from ipywidgets import StaticInteract, RangeWidget, RadioWidget" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "$\\phi_0$ - the zeroth order phase or the absolute phase\n", "$$E(t) = E_0 exp[-(t/\\tau_G)^2]exp[i(\\omega_0 t+\\phi_0)]$$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def plot(a,b):\n", " fig, ax = plt.subplots(figsize=(5, 5),\n", " subplot_kw={'axisbg':'#EEEEEE',\n", " 'axisbelow':True})\n", " ax.grid(color='w', linewidth=2, linestyle='solid')\n", " t = np.linspace(-2*np.pi,2*np.pi,100)\n", " ax.plot(t,np.exp(-t**2/4)*np.sin(t*a+b), lw=2, alpha=0.4, label=a)\n", " ax.set_xlim(-2*np.pi, +2*np.pi)\n", " ax.legend(loc='upper right')\n", "# ax.set_ylim(-2.5, 2.5)\n", " return fig" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "StaticInteract(plot,a=RangeWidget(1., 5., 2.), b=RangeWidget(0, +2., 0.5))" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", " \n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " a: \n", "
\n", "b: \n", "
\n", " " ], "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ "" ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "def plot(a,b):\n", " fig, (ax0, ax1) = plt.subplots(1, 2, figsize=(6, 6),\n", " subplot_kw={'axisbg':'#EEEEEE',\n", " 'axisbelow':True})\n", " #ax.grid(color='w', linewidth=2, linestyle='solid')\n", " t = np.linspace(-2*np.pi,2*np.pi,100)\n", " ax0.plot(t,np.exp(-t**2/4)*np.sin(t*b+a*t**0), lw=2, alpha=0.4, label=a)\n", " ax0.set_xlim(-2*np.pi, +2*np.pi)\n", " ax0.legend(loc='upper right')\n", " #ax1.plot(t,a*t**2, lw=2, alpha=0.4, label=a)\n", " ax1.plot(t,(np.exp(-t**2/4)**2*np.sin(t*b+a*t**0))**2, lw=2, alpha=0.4, label=a)\n", "# ax1.set_xlim(-2*np.pi, +2*np.pi)\n", " ax1.set_xlim(-4, 4)\n", " ax2=ax1.twinx() #ax1.legend(loc='upper right')\n", " ax2.plot(t,a*t**0)\n", " return fig" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "StaticInteract(plot,a=RangeWidget(-2., +2., 0.5),b=RangeWidget(1., 5., 2.))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py:412: RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (`matplotlib.pyplot.figure`) are retained until explicitly closed and may consume too much memory. (To control this warning, see the rcParam `figure.max_num_figures`).\n", " max_open_warning, RuntimeWarning)\n" ] }, { "html": [ "\n", " \n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " a: \n", "
\n", "b: \n", "
\n", " " ], "metadata": {}, "output_type": "pyout", "prompt_number": 5, "text": [ "" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "$\\phi_1$ - the first order phase, a shift in time\n", "$$E(t) = E_0 exp[-(t/\\tau_G)^2]exp[i(\\omega_0 t+\\alpha t)]$$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def plot(a):\n", " fig, ax = plt.subplots(figsize=(5, 5),\n", " subplot_kw={'axisbg':'#EEEEEE',\n", " 'axisbelow':True})\n", " ax.grid(color='w', linewidth=2, linestyle='solid')\n", " t = np.linspace(-2*np.pi,2*np.pi,100)\n", " ax.plot(t,np.exp(-t**2/4)*np.sin(t+a*t), lw=2, alpha=0.4, label=a)\n", " ax.set_xlim(-2*np.pi, +2*np.pi)\n", " ax.legend(loc='upper right')\n", "# ax.set_ylim(-2.5, 2.5)\n", " return fig" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "StaticInteract(plot,a=RangeWidget(1., 10., 2.))" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", " \n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " a: \n", "
\n", " " ], "metadata": {}, "output_type": "pyout", "prompt_number": 7, "text": [ "" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "def plot(a,b):\n", " fig, (ax0, ax1) = plt.subplots(1, 2, figsize=(6, 6),\n", " subplot_kw={'axisbg':'#EEEEEE',\n", " 'axisbelow':True})\n", " #ax.grid(color='w', linewidth=2, linestyle='solid')\n", " t = np.linspace(-2*np.pi,2*np.pi,100)\n", " ax0.plot(t,np.exp(-t**2/4)*np.sin(t*b+a*t**1), lw=2, alpha=0.4, label=a)\n", " ax0.set_xlim(-2*np.pi, +2*np.pi)\n", " ax0.legend(loc='upper right')\n", " #ax1.plot(t,a*t**2, lw=2, alpha=0.4, label=a)\n", " ax1.plot(t,(np.exp(-t**2/4)**2*np.sin(t*b+a*t**1))**2, lw=2, alpha=0.4, label=a)\n", "# ax1.set_xlim(-2*np.pi, +2*np.pi)\n", " ax1.set_xlim(-4, 4)\n", " ax2=ax1.twinx() #ax1.legend(loc='upper right')\n", " ax2.plot(t,a*t**1)\n", " return fig" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "StaticInteract(plot,a=RangeWidget(-2., +2., 0.5),b=RangeWidget(1., 5., 2.))" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", " \n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " a: \n", "
\n", "b: \n", "
\n", " " ], "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ "" ] } ], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "linear chirp\n", "===" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$\\phi_2$ - the second order phase, linear chirp\n", "$$E(t) = E_0 exp[-(t/\\tau_G)^2]exp[i(\\omega_0 t+\\beta t^2)]$$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def plot(a):\n", " fig, ax = plt.subplots(figsize=(5, 5),\n", " subplot_kw={'axisbg':'#EEEEEE',\n", " 'axisbelow':True})\n", " ax.grid(color='w', linewidth=2, linestyle='solid')\n", " t = np.linspace(-2*np.pi,2*np.pi,100)\n", " ax.plot(t,np.exp(-t**2/4)*np.sin(t*10+a*t**2), lw=2, alpha=0.4, label=a)\n", " ax.set_xlim(-2*np.pi, +2*np.pi)\n", " ax.legend(loc='upper right')\n", "# ax.set_ylim(-2.5, 2.5)\n", " return fig" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "StaticInteract(plot,a=RangeWidget(-2., +2., 0.5))" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", " \n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " a: \n", "
\n", " " ], "metadata": {}, "output_type": "pyout", "prompt_number": 11, "text": [ "" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "def plot(a):\n", " fig, (ax0, ax1) = plt.subplots(1, 2, figsize=(6, 6),\n", " subplot_kw={'axisbg':'#EEEEEE',\n", " 'axisbelow':True})\n", " #ax.grid(color='w', linewidth=2, linestyle='solid')\n", " t = np.linspace(-2*np.pi,2*np.pi,100)\n", " ax0.plot(t,np.exp(-t**2/4)*np.sin(t*10+a*t**2), lw=2, alpha=0.4, label=a)\n", " ax0.set_xlim(-2*np.pi, +2*np.pi)\n", " ax0.legend(loc='upper right')\n", " #ax1.plot(t,a*t**2, lw=2, alpha=0.4, label=a)\n", " ax1.plot(t,(np.exp(-t**2/4)**2*np.sin(t*10+a*t**2))**2, lw=2, alpha=0.4, label=a)\n", "# ax1.set_xlim(-2*np.pi, +2*np.pi)\n", " ax1.set_xlim(-4, 4)\n", " ax2=ax1.twinx() #ax1.legend(loc='upper right')\n", " ax2.plot(t,a*t**2)\n", " return fig" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "StaticInteract(plot,a=RangeWidget(-2., +2., 0.5))" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", " \n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " a: \n", "
\n", " " ], "metadata": {}, "output_type": "pyout", "prompt_number": 13, "text": [ "" ] } ], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "matplotlib example code for plotting multiple vertical axes - [link](http://matplotlib.org/examples/api/two_scales.html)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "testing\n", "===" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "quadratic chirp\n", "===" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$\\phi_3$ - the third order phase, quadratic chirp\n", "$$E(t) = E_0 exp[-(t/\\tau_G)^2]exp[i(\\omega_0 t+\\gamma t^3)]$$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def plot(a):\n", " fig, ax = plt.subplots(figsize=(7, 7),\n", " subplot_kw={'axisbg':'#EEEEEE',\n", " 'axisbelow':True})\n", " ax.grid(color='w', linewidth=2, linestyle='solid')\n", " t = np.linspace(-10*np.pi,10*np.pi,250)\n", " ax.plot(t,np.exp(-(t**2)/100)*np.sin(t*2+a*t**3), lw=2, alpha=0.4, label=a)\n", " ax.set_xlim(0, +10.5*np.pi)\n", " ax.legend(loc='upper right')\n", "# ax.set_ylim(-2.5, 2.5)\n", " return fig" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "StaticInteract(plot,a=RangeWidget(0.03, 0.1, 1./100))#, 1./100))" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", " \n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " a: \n", "
\n", " " ], "metadata": {}, "output_type": "pyout", "prompt_number": 15, "text": [ "" ] } ], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "def plot(a):\n", " fig, ax = plt.subplots(figsize=(5, 5),\n", " subplot_kw={'axisbg':'#EEEEEE',\n", " 'axisbelow':True})\n", " ax.grid(color='w', linewidth=2, linestyle='solid')\n", " t = np.linspace(-10*np.pi,10*np.pi,500)\n", " ax.plot(t,np.exp(-t**2/100)*np.sin(t+a*t**4), lw=2, alpha=0.4, label=a)\n", " #ax.set_xlim(-2*np.pi, +2*np.pi)\n", " ax.legend(loc='upper right')\n", "# ax.set_ylim(-2.5, 2.5)\n", " return fig" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [ "StaticInteract(plot,a=RangeWidget(0.45,0.55, 1./100))" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", " \n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " a: \n", "
\n", " " ], "metadata": {}, "output_type": "pyout", "prompt_number": 17, "text": [ "" ] } ], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "t = np.linspace(-2*np.pi,2*np.pi,250)\n", "plt.plot(t,np.exp(-t**2/10)*np.sin(t*2*np.pi/3+50*t**4))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 18, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": {}, "source": [ "[link](http://matplotlib.org/examples/pylab_examples/subplots_demo.html) for matplotlib subplot demo codes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\phi(\\omega) = \\frac{\\phi_0}{0!} +\\frac{\\phi_1(\\omega-\\omega_0^2)}{1!} + \\frac{\\phi_2(\\omega^3-\\omega_0^3)}{2!} \\ldots$$\n", "where $\\phi_1 = \\frac{d\\phi}{d\\omega}\\lvert_{\\omega=\\omega_0}, \\phi_2 = \\frac{d^2\\phi}{d\\omega^2}\\lvert_{\\omega=\\omega_0}$\n", "\n", "We have defined $\\phi_1$ is group delay and $\\phi_2$ is group delay dispersion" ] } ], "metadata": {} } ] }