# MATLAB compatibility module¶

The `control.matlab` module contains a number of functions that emulate some of the functionality of MATLAB. The intent of these functions is to provide a simple interface to the python control systems library (python-control) for people who are familiar with the MATLAB Control Systems Toolbox (tm).

## Creating linear models¶

 `tf`(num, den[, dt]) Create a transfer function system. `ss`(A, B, C, D[, dt]) Create a state space system. `frd`(d, w) Construct a frequency response data model `rss`([states, outputs, inputs, strictly_proper]) Create a stable continuous random state space object. `drss`([states, outputs, inputs, strictly_proper]) Create a stable discrete random state space object.

## Utility functions and conversions¶

 `mag2db`(mag) Convert a magnitude to decibels (dB) `db2mag`(db) Convert a gain in decibels (dB) to a magnitude `c2d`(sysc, Ts[, method, prewarp_frequency]) Convert a continuous time system to discrete time by sampling `ss2tf`(sys) Transform a state space system to a transfer function. `tf2ss`(sys) Transform a transfer function to a state space system. `tfdata`(sys) Return transfer function data objects for a system

## System interconnections¶

 `series`(sys1, *sysn) Return the series connection (sysn * . `parallel`(sys1, *sysn) Return the parallel connection sys1 + sys2 (+ . `feedback`(sys1[, sys2, sign]) Feedback interconnection between two I/O systems. `negate`(sys) Return the negative of a system. `connect`(sys, Q, inputv, outputv) Index-based interconnection of an LTI system. `append`(sys1, sys2, …, sysn) Group models by appending their inputs and outputs

## System gain and dynamics¶

 `dcgain`(*args) Compute the gain of the system in steady state. `pole`(sys) Compute system poles. `zero`(sys) Compute system zeros. `damp`(sys[, doprint]) Compute natural frequency, damping ratio, and poles of a system `pzmap`(sys[, plot, grid, title]) Plot a pole/zero map for a linear system.

## Time-domain analysis¶

 `step`(sys[, T, X0, input, output, return_x]) Step response of a linear system `impulse`(sys[, T, X0, input, output, return_x]) Impulse response of a linear system `initial`(sys[, T, X0, input, output, return_x]) Initial condition response of a linear system `lsim`(sys[, U, T, X0]) Simulate the output of a linear system.

## Frequency-domain analysis¶

 `bode`(syslist[, omega, dB, Hz, deg, …]) Bode plot of the frequency response `nyquist`(syslist[, omega]) Nyquist plot of the frequency response `nichols`(sys_list[, omega, grid]) Nichols plot for a system `margin`(sysdata) Calculate gain and phase margins and associated crossover frequencies `freqresp`(sys, omega[, squeeze]) Frequency response of an LTI system at multiple angular frequencies. `evalfr`(sys, x[, squeeze]) Evaluate the transfer function of an LTI system for complex frequency x.

## Compensator design¶

 `rlocus`(sys[, kvect, xlim, ylim, plotstr, …]) Root locus plot `sisotool`(sys[, kvect, xlim_rlocus, …]) Sisotool style collection of plots inspired by MATLAB’s sisotool. `place`(A, B, p) Place closed loop eigenvalues `lqr`(A, B, Q, R[, N]) Linear quadratic regulator design

## State-space (SS) models¶

 `rss`([states, outputs, inputs, strictly_proper]) Create a stable continuous random state space object. `drss`([states, outputs, inputs, strictly_proper]) Create a stable discrete random state space object. `ctrb`(A, B) Controllabilty matrix `obsv`(A, C) Observability matrix `gram`(sys, type) Gramian (controllability or observability)

## Model simplification¶

 `minreal`(sys[, tol, verbose]) Eliminates uncontrollable or unobservable states in state-space models or cancelling pole-zero pairs in transfer functions. `hsvd`(sys) Calculate the Hankel singular values. `balred`(sys, orders[, method, alpha]) Balanced reduced order model of sys of a given order. `modred`(sys, ELIM[, method]) Model reduction of sys by eliminating the states in ELIM using a given method. `era`(YY, m, n, nin, nout, r) Calculate an ERA model of order r based on the impulse-response data YY. `markov`(Y, U[, m, transpose]) Calculate the first m Markov parameters [D CB CAB …] from input U, output Y.

## Time delays¶

 `pade`(T[, n, numdeg]) Create a linear system that approximates a delay.

## Matrix equation solvers and linear algebra¶

 `lyap`(A, Q[, C, E]) X = lyap(A, Q) solves the continuous-time Lyapunov equation `dlyap`(A, Q[, C, E]) dlyap(A,Q) solves the discrete-time Lyapunov equation `care`(A, B, Q[, R, S, E, stabilizing]) (X, L, G) = care(A, B, Q, R=None) solves the continuous-time algebraic Riccati equation `dare`(A, B, Q, R[, S, E, stabilizing]) (X, L, G) = dare(A, B, Q, R) solves the discrete-time algebraic Riccati equation

 `gangof4`(P, C[, omega]) Plot the “Gang of 4” transfer functions for a system `unwrap`(angle[, period]) Unwrap a phase angle to give a continuous curve
 `linspace`(start, stop[, num, endpoint, …]) Return evenly spaced numbers over a specified interval. `logspace`(start, stop[, num, endpoint, base, …]) Return numbers spaced evenly on a log scale. `ss2zpk`(A, B, C, D[, input]) State-space representation to zero-pole-gain representation. `tf2zpk`(b, a) Return zero, pole, gain (z, p, k) representation from a numerator, denominator representation of a linear filter. `zpk2ss`(z, p, k) Zero-pole-gain representation to state-space representation `zpk2tf`(z, p, k) Return polynomial transfer function representation from zeros and poles