{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "*This notebook contains course material from [CBE30338](https://jckantor.github.io/CBE30338)\n", "by Jeffrey Kantor (jeff at nd.edu); the content is available [on Github](https://github.com/jckantor/CBE30338.git).\n", "The text is released under the [CC-BY-NC-ND-4.0 license](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode),\n", "and code is released under the [MIT license](https://opensource.org/licenses/MIT).*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "< [Predictive Control](http://nbviewer.jupyter.org/github/jckantor/CBE30338/blob/master/notebooks/08.00-Predictive-Control.ipynb) | [Contents](toc.ipynb) | [Discrete Events](http://nbviewer.jupyter.org/github/jckantor/CBE30338/blob/master/notebooks/09.00-Discrete-Events.ipynb) >

\"Open

\"Download\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Zero-Order Hold and Interpolation\n", "\n", "Implementation of control systems generally requires an interface between the sampled data computations of process control and the continuous time dynamics of the real world. A zero-order hold is the most common model for the reconstruction of a continuous time signal from sampled data. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Interpolation Function" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import numpy as np\n", "\n", "def interp0(x, xp, yp):\n", " \"\"\"Zeroth order hold interpolation w/ same\n", " (base) signature as numpy.interp.\"\"\"\n", "\n", " def func(x0):\n", " if x0 <= xp[0]:\n", " return yp[0]\n", " if x0 >= xp[-1]:\n", " return yp[-1]\n", " k = 0\n", " while x0 > xp[k]:\n", " k += 1\n", " return yp[k-1]\n", " \n", " if isinstance(x,float):\n", " return func(x)\n", " elif isinstance(x, list):\n", " return [func(x) for x in x]\n", " elif isinstance(x, np.ndarray):\n", " return np.asarray([func(x) for x in x])\n", " else:\n", " raise TypeError('argument must be float, list, or ndarray')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Demonstration" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\naIMAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "# choose a function\n", "f = np.sin\n", "\n", "# sampled signal\n", "xp = np.linspace(0,10,20)\n", "yp = f(xp)\n", "\n", "# interpolation grid with 'true' function\n", "x = np.linspace(0,12,1000)\n", "plt.plot(x,f(x),'--')\n", "\n", "# plot\n", "plt.hold(True)\n", "plt.scatter(xp,yp)\n", "plt.plot(x,interp0(x,xp,yp),'r')\n", "plt.xlim([x.min(),x.max()])\n", "plt.title('Zero Order Hold/Interpolation')\n", "plt.xlabel('Time')\n", "plt.ylabel('Value')\n", "plt.legend(['Signal','ZOH'])" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "< [Predictive Control](http://nbviewer.jupyter.org/github/jckantor/CBE30338/blob/master/notebooks/08.00-Predictive-Control.ipynb) | [Contents](toc.ipynb) | [Discrete Events](http://nbviewer.jupyter.org/github/jckantor/CBE30338/blob/master/notebooks/09.00-Discrete-Events.ipynb) >

\"Open

\"Download\"" ] } ], "metadata": { "anaconda-cloud": {}, "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.8" } }, "nbformat": 4, "nbformat_minor": 2 }