GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — python-control/control/ctrlutil.py at 0.9.1 · python-control/python-control Expand file tree/ Copy pathctrlutil.pyMore file actions 122 lines (102 loc) · 3.55 KB / Copy pathctrlutil.pyFile metadata and controls122 lines (102 loc) · 3.55 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 # ctrlutil.py - control system utility functions # # Author: Richard M. Murray # Date: 24 May 09 # # These are some basic utility functions that are used in the control # systems library and that didn't naturally fit anyplace else. # # Copyright (c) 2009 by California Institute of Technology # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # 3. Neither the name of the California Institute of Technology nor # the names of its contributors may be used to endorse or promote # products derived from this software without specific prior # written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CALTECH # OR THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # $Id$ # Packages that we need access to from . import lti import numpy as np import math __all__ = ['unwrap', 'issys', 'db2mag', 'mag2db'] # Utility function to unwrap an angle measurement def unwrap(angle, period=2*math.pi): """Unwrap a phase angle to give a continuous curve Parameters ---------- angle : array_like Array of angles to be unwrapped period : float, optional Period (defaults to `2*pi`) Returns ------- angle_out : array_like Output array, with jumps of period/2 eliminated Examples -------- >>> import numpy as np >>> theta = [5.74, 5.97, 6.19, 0.13, 0.35, 0.57] >>> unwrap(theta, period=2 * np.pi) [5.74, 5.97, 6.19, 6.413185307179586, 6.633185307179586, 6.8531853071795865] """ dangle = np.diff(angle) dangle_desired = (dangle + period/2.) % period - period/2. correction = np.cumsum(dangle_desired - dangle) angle[1:] += correction return angle def issys(obj): """Return True if an object is a system, otherwise False""" return isinstance(obj, lti.LTI) def db2mag(db): """Convert a gain in decibels (dB) to a magnitude If A is magnitude, db = 20 * log10(A) Parameters ---------- db : float or ndarray input value or array of values, given in decibels Returns ------- mag : float or ndarray corresponding magnitudes """ return 10. ** (db / 20.) def mag2db(mag): """Convert a magnitude to decibels (dB) If A is magnitude, db = 20 * log10(A) Parameters ---------- mag : float or ndarray input magnitude or array of magnitudes Returns ------- db : float or ndarray corresponding values in decibels """ return 20. * np.log10(mag) |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |