# Julia for MATLAB Users/Index/Toolboxes/Control System Toolbox

Maps functionality from the MATLAB Control System Toolbox to equivalent(s) in Julia.
Related Julia packages:

# Dynamic System Models
## Basic Models

* tf Create transfer function model, convert to transfer function model
* zpk Create zero-pole-gain model; convert to zero-pole-gain model
* ss Create state-space model, convert to state-space model
* frd Create frequency-response data model, convert to frequency-response data model
* filt Specify discrete transfer functions in DSP format
* dss Create descriptor state-space models
* pid Create PID controller in parallel form, convert to parallel-form PID controller
* pidstd Create a PID controller in standard form, convert to standard-form PID controller
* pid2 Create 2-DOF PID controller in parallel form, convert to parallel-form 2-DOF PID controller
* pidstd2 Create 2-DOF PID controller in standard form, convert to standard-form 2-DOF PID controller
* rss Generate random continuous test model
* drss Generate random discrete test model

## Tunable Models

* tunableGain Tunable static gain block
* tunablePID Tunable PID controller
* tunablePID2 Tunable two-degree-of-freedom PID controller
* tunableSS Tunable fixed-order state-space model
* tunableTF Tunable transfer function with fixed number of poles and zeros
* realp Real tunable parameter
* AnalysisPoint Points of interest for linear analysis
* genss Generalized state-space model
* genfrd Generalized frequency response data (FRD) model
* genmat Generalized matrix with tunable parameters
* getLoopTransfer Open-loop transfer function of control system
* getIOTransfer Closed-loop transfer function from generalized model of control system
* getSensitivity Sensitivity function from generalized model of control system
* getCompSensitivity Complementary sensitivity function from generalized model of control system
* getPoints Get list of analysis points in generalized model of control system
* replaceBlock Replace or update Control Design Blocks in Generalized LTI model
* sampleBlock Sample Control Design blocks in generalized model
* rsampleBlock Randomly sample Control Design blocks in generalized model
* getValue Current value of Generalized Model
* setValue Modify current value of Control Design Block
* getBlockValue Current value of Control Design Block in Generalized Model
* setBlockValue Modify value of Control Design Block in Generalized Model
* showBlockValue Display current value of Control Design Blocks in Generalized Model
* showTunable Display current value of tunable Control Design Blocks in Generalized Model
* nblocks Number of blocks in Generalized matrix or Generalized LTI model
* getLFTModel Decompose generalized LTI model

## Models with Time Delays

* pade Padé approximation of model with time delays
* absorbDelay Replace time delays by poles at z = 0 or phase shift
* thiran Generate fractional delay filter based on Thiran approximation
* hasdelay True for linear model with time delays
* hasInternalDelay Determine if model has internal delays
* totaldelay Total combined I/O delays for LTI model
* delayss Create state-space models with delayed inputs, outputs, and states
* setDelayModel Construct state-space model with internal delays
* getDelayModel State-space representation of internal delays

## Model Attributes

* get Access model property values
* set Set or modify model properties
* tfdata Access transfer function data
* zpkdata Access zero-pole-gain data
* ssdata Access state-space model data
* frdata Access data for frequency response data (FRD) object
* piddata Access coefficients of parallel-form PID controller
* pidstddata Access coefficients of standard-form PID controller
* piddata2 Access coefficients of parallel-form 2-DOF PID controller
* pidstddata2 Access coefficients of standard-form 2-DOF PID controller
* dssdata Extract descriptor state-space data
* chgFreqUnit Change frequency units of frequency-response data model
* chgTimeUnit Change time units of dynamic system
* isct Determine if dynamic system model is in continuous time
* isdt Determine if dynamic system model is in discrete time
* isempty Determine whether dynamic system model is empty
* isfinite Determine if model has finite coefficients
* isParametric Determine if model has tunable parameters
* isproper Determine if dynamic system model is proper
* isreal Determine if model has real-valued coefficients
* issiso Determine if dynamic system model is single-input/single-output (SISO)
* isstable Determine whether system is stable
* isstatic Determine if model is static or dynamic
* order Query model order
* ndims Query number of dimensions of dynamic system model or model array
* size Query output/input/array dimensions of input–output model and number of frequencies of FRD model

### Model Arrays

* stack Build model array by stacking models or model arrays along array dimensions
* nmodels Number of models in model array
* permute Rearrange array dimensions in model arrays
* reshape Change shape of model array
* repsys Replicate and tile models
* voidModel Mark missing or irrelevant models in model array
* sampleBlock Sample Control Design blocks in generalized model
* rsampleBlock Randomly sample Control Design blocks in generalized model

## Model Interconnection

* feedback Feedback connection of two models
* connect Block diagram interconnections of dynamic systems
* sumblk Summing junction for name-based interconnections
* series Series connection of two models
* parallel Parallel connection of two models
* append Group models by appending their inputs and outputs
* blkdiag Block-diagonal concatenation of models
* imp2exp Convert implicit linear relationship to explicit input-output relation
* inv Invert models
* lft Generalized feedback interconnection of two models (Redheffer star product)
* connectOptions Options for the connect command

## Model Transformation
### Model Type Conversion

* tf Create transfer function model, convert to transfer function model
* zpk Create zero-pole-gain model; convert to zero-pole-gain model
* ss Create state-space model, convert to state-space model
* frd Create frequency-response data model, convert to frequency-response data model
* pid Create PID controller in parallel form, convert to parallel-form PID controller
* pidstd Create a PID controller in standard form, convert to standard-form PID controller
* pid2 Create 2-DOF PID controller in parallel form, convert to parallel-form 2-DOF PID controller
* pidstd2 Create 2-DOF PID controller in standard form, convert to standard-form 2-DOF PID controller
* make1DOF Convert 2-DOF PID controller to 1-DOF controller
* make2DOF Convert 1-DOF PID controller to 2-DOF controller
* getComponents Extract SISO control components from a 2-DOF PID controller

### Continuous-Discrete Conversion

* c2d Convert model from continuous to discrete time
* d2c Convert model from discrete to continuous time
* d2d Resample discrete-time model
* upsample Upsample discrete-time models
* c2dOptions Create option set for continuous- to discrete-time conversions
* d2cOptions Create option set for discrete- to continuous-time conversions
* d2dOptions Create option set for discrete-time resampling

### State-Coordinate Transformation

* balreal Gramian-based input/output balancing of state-space realizations
* canon State-space canonical realization
* prescale Optimal scaling of state-space models
* ss2ss State coordinate transformation for state-space model
* xperm Reorder states in state-space models

### Modal Decomposition

* modsep Region-based modal decomposition
* stabsep Stable-unstable decomposition
* stabsepOptions Options for stable-unstable decomposition
* freqsep Slow-fast decomposition
* freqsepOptions Options for slow-fast decomposition
* spectralfact Spectral factorization of linear systems

### Model Reduction

* balred Model order reduction
* balredOptions Create option set for model order reduction
* balreal Gramian-based input/output balancing of state-space realizations
* minreal Minimal realization or pole-zero cancelation
* sminreal Structural pole/zero cancellations
* modred Eliminate states from state-space models
* freqsep Slow-fast decomposition
* freqsepOptions Options for slow-fast decomposition
* hsvd Hankel singular values of dynamic system
* hsvplot Plot Hankel singular values and return plot handle
* hsvdOptions Create option set for computing Hankel singular values and input/output balancing

## Linear Analysis
### Time and Frequency Domain Analysis

* step Step response plot of dynamic system; step response data
* stepinfo Rise time, settling time, and other step-response characteristics
* impulse Impulse response plot of dynamic system; impulse response data
* initial Initial condition response of state-space model
* lsim Simulate time response of dynamic system to arbitrary inputs
* lsiminfo Compute linear response characteristics
* gensig Generate test input signals for lsim
* covar Output and state covariance of system driven by white noise
* stepDataOptions Options set for step
* bode Bode plot of frequency response, or magnitude and phase data
* bodemag Bode magnitude response of LTI models
* nyquist Nyquist plot of frequency response
* nichols Nichols chart of frequency response
* ngrid Superimpose Nichols chart on Nichols plot
* sigma Singular values plot of dynamic system
* freqresp Frequency response over grid
* evalfr Evaluate frequency response at given frequency
* dcgain Low-frequency (DC) gain of LTI system
* bandwidth Frequency response bandwidth
* getPeakGain Peak gain of dynamic system frequency response
* getGainCrossover Crossover frequencies for specified gain
* fnorm Pointwise peak gain of FRD model
* norm Norm of linear model
* db2mag Convert decibels (dB) to magnitude
* mag2db Convert magnitude to decibels (dB)

### Stability Analysis

* pole Compute poles of dynamic system
* zero Zeros and gain of SISO dynamic system
* damp Natural frequency and damping ratio
* dsort Sort discrete-time poles by magnitude
* esort Sort continuous-time poles by real part
* tzero Invariant zeros of linear system
* pzplot Pole-zero map of dynamic system model with plot customization options
* iopzplot Plot pole-zero map for I/O pairs and return plot handle
* allmargin Gain margin, phase margin, delay margin and crossover frequencies
* margin Gain margin, phase margin, and crossover frequencies

### Sensitivity Analysis

* sampleBlock Sample Control Design blocks in generalized model
* rsampleBlock Randomly sample Control Design blocks in generalized model

### Passivity and Sector Bounds

* isPassive Check passivity of linear systems
* getPassiveIndex Compute passivity index of linear system
* passiveplot Compute or plot passivity index as function of frequency
* getSectorIndex Compute conic-sector index of linear system
* getSectorCrossover Crossover frequencies for sector bound
* sectorplot Compute or plot sector index as function of frequency

### Plot Customization

* impulseplot Plot impulse response and return plot handle
* initialplot Plot initial condition response and return plot handle
* lsimplot Simulate response of dynamic system to arbitrary inputs and return plot handle
* stepplot Plot step response and return plot handle
* bodeplot Plot Bode frequency response with additional plot customization options
* nicholsplot Plot Nichols frequency responses and return plot handle
* nyquistplot Nyquist plot with additional plot customization options
* sigmaplot Plot singular values of frequency response and return plot handle
* bodeoptions Create list of Bode plot options
* hsvoptions Plot options for hsvplot
* nicholsoptions Create list of Nichols plot options
* nyquistoptions List of Nyquist plot options
* pzoptions Create list of pole/zero plot options
* sigmaoptions Create list of singular-value plot options
* timeoptions Create list of time plot options
* setoptions Set plot options for response plot
* getoptions Return @PlotOptions handle or plot options property
* ctrlpref Set Control System Toolbox preferences
* updateSystem Update dynamic system data in a response plot

# Control System Design and Tuning
## PID Controller Tuning

* pidTuner Open PID Tuner for PID tuning
* pidtune PID tuning algorithm for linear plant model
* pidtuneOptions Define options for pidtune command

## Classical Control Design

* rlocus Root locus plot of dynamic system
* rlocusplot Plot root locus and return plot handle
* sisoinit Configure Control System Designer at startup

## State-Space Control Design and Estimation
### State-Space Control Design

* lqr Linear-Quadratic Regulator (LQR) design
* lqry Form linear-quadratic (LQ) state-feedback regulator with output weighting
* lqi Linear-Quadratic-Integral control
* dlqr Linear-quadratic (LQ) state-feedback regulator for discrete-time state-space system
* lqrd Design discrete linear-quadratic (LQ) regulator for continuous plant
* lqg Linear-Quadratic-Gaussian (LQG) design
* lqgreg Form linear-quadratic-Gaussian (LQG) regulator
* lqgtrack Form Linear-Quadratic-Gaussian (LQG) servo controller
* augstate Append state vector to output vector
* norm Norm of linear model
* estim Form state estimator given estimator gain
* place Pole placement design
* reg Form regulator given state-feedback and estimator gains

### State Estimation

* kalman Kalman filter design, Kalman estimator
* kalmd Design discrete Kalman estimator for continuous plant
* estim Form state estimator given estimator gain
* extendedKalmanFilter Create extended Kalman filter object for online state estimation
* unscentedKalmanFilter Create unscented Kalman filter object for online state estimation
* particleFilter Particle filter object for online state estimation
* correct Correct state and state estimation error covariance using extended or unscented Kalman filter, or particle filter and measurements
* predict Predict state and state estimation error covariance at next time step using extended or unscented Kalman filter, or particle filter
* initialize Initialize the state of the particle filter
* clone Copy online state estimation object

## Multiloop, Multiobjective Tuning
### Programmatic Tuning
#### Setup for Tuning Simulink Models

* slTuner Interface for control system tuning of Simulink models
* slTunerOptions Set slTuner interface options
* addBlock Add block to list of tuned blocks for slTuner interface
* addOpening Add signal to list of openings for slLinearizer or slTuner interface
* addPoint Add signal to list of analysis points for slLinearizer or slTuner interface
* refresh Resynchronize slLinearizer or slTuner interface with current model state
* removeAllOpenings Remove all openings from list of permanent openings in slLinearizer or slTuner interface
* removeAllPoints Remove all points from list of analysis points in slLinearizer or slTuner interface
* removeBlock Remove block from list of tuned blocks in slTuner interface
* removeOpening Remove opening from list of permanent loop openings in slLinearizer or slTuner interface
* removePoint Remove point from list of analysis points in slLinearizer or slTuner interface
* setBlockParam Set parameterization of tuned block in slTuner interface
* setBlockRateConversion Set rate conversion settings for tuned block in slTuner interface
* setBlockValue Set value of tuned block parameterization in slTuner interface
* writeBlockValue Update block values in Simulink model
* writeLookupTableData Update portion of tuned lookup table
* getBlockParam Get parameterization of tuned block in slTuner interface
* getBlockRateConversion Get rate conversion settings for tuned block in slTuner interface
* getBlockValue Get current value of tuned block parameterization in slTuner interface
* getOpenings Get list of openings for slLinearizer or slTuner interface
* getPoints Get list of analysis points for slLinearizer or slTuner interface
* showTunable Show value of parameterizations of tunable blocks of slTuner interface

#### Setup for Tuning MATLAB Models

* tf Create transfer function model, convert to transfer function model
* zpk Create zero-pole-gain model; convert to zero-pole-gain model
* ss Create state-space model, convert to state-space model
* tunableGain Tunable static gain block
* tunableTF Tunable transfer function with fixed number of poles and zeros
* tunablePID Tunable PID controller
* tunablePID2 Tunable two-degree-of-freedom PID controller
* tunableSS Tunable fixed-order state-space model
* realp Real tunable parameter
* AnalysisPoint Points of interest for linear analysis
* connect Block diagram interconnections of dynamic systems
* feedback Feedback connection of two models

#### Tuning Goals

* TuningGoal.StepTracking Step response requirement for control system tuning
* TuningGoal.StepRejection Step disturbance rejection requirement for control system tuning
* TuningGoal.Transient Transient matching requirement for control system tuning
* TuningGoal.LQG Linear-Quadratic-Gaussian (LQG) goal for control system tuning
* TuningGoal.Gain Gain constraint for control system tuning
* TuningGoal.Variance Noise amplification constraint for control system tuning
* TuningGoal.Tracking Tracking requirement for control system tuning
* TuningGoal.Overshoot Overshoot constraint for control system tuning
* TuningGoal.Rejection Disturbance rejection requirement for control system tuning
* TuningGoal.Sensitivity Sensitivity requirement for control system tuning
* TuningGoal.WeightedGain Frequency-weighted gain constraint for control system tuning
* TuningGoal.WeightedVariance Frequency-weighted H2 norm constraint for control system tuning
* TuningGoal.MinLoopGain Minimum loop gain constraint for control system tuning
* TuningGoal.MaxLoopGain Maximum loop gain constraint for control system tuning
* TuningGoal.LoopShape Target loop shape for control system tuning
* TuningGoal.Margins Stability margin requirement for control system tuning
* TuningGoal.Passivity Passivity constraint for control system tuning
* TuningGoal.ConicSector Sector bound for control system tuning
* TuningGoal.WeightedPassivity Frequency-weighted passivity constraint
* TuningGoal.Poles Constraint on control system dynamics
* TuningGoal.ControllerPoles Constraint on controller dynamics for control system tuning

#### Tuning, Analysis, and Validation

* systune (slTuner) Tune control system parameters in Simulink using slTuner interface
* systuneOptions Set options for systune
* getIOTransfer (slTuner) Transfer function for specified I/O set using slLinearizer or slTuner interface
* getLoopTransfer (slTuner) Open-loop transfer function at specified point using slLinearizer or slTuner interface
* getSensitivity (slTuner) Sensitivity function at specified point using slLinearizer or slTuner interface
* getCompSensitivity (slTuner) Complementary sensitivity function at specified point using slLinearizer or slTuner interface
* writeBlockValue Update block values in Simulink model
* systune Tune fixed-structure control systems modeled in MATLAB
* systuneOptions Set options for systune
* getIOTransfer Closed-loop transfer function from generalized model of control system
* getLoopTransfer Open-loop transfer function of control system
* getSensitivity Sensitivity function from generalized model of control system
* getCompSensitivity Complementary sensitivity function from generalized model of control system
* viewGoal View tuning goals; validate design against tuning goals
* evalGoal Evaluate tuning goals for tuned control system

### Loop-Shaping Design

* slTuner Interface for control system tuning of Simulink models
* looptune Tune MIMO feedback loops in Simulink using slTuner interface
* looptuneOptions Set options for looptune
* loopview Graphically analyze results of control system tuning using slTuner interface
* looptuneSetup Construct tuning setup for looptune to tuning setup for systune using slTuner interface
* looptune Tune fixed-structure feedback loops
* looptuneOptions Set options for looptune
* loopview Graphically analyze MIMO feedback loops
* looptuneSetup Convert tuning setup for looptune to tuning setup for systune
* viewGoal View tuning goals; validate design against tuning goals
* evalGoal Evaluate tuning goals for tuned control system

## Gain Scheduling

* tunableSurface Create tunable gain surface for gain scheduling
* polyBasis Polynomial basis functions for tunable gain surface
* fourierBasis Fourier basis functions for tunable gain surface
* ndBasis Basis functions for tunable gain surface
* viewSurf Visualize gain surface as a function of scheduling variables
* evalSurf Evaluate gain surfaces at specific design points
* getData Get current values of tunable-surface coefficients
* setData Set values of tunable-surface coefficients
* codegen Generate MATLAB code for tunable gain surfaces
* systune Tune fixed-structure control systems modeled in MATLAB
* slTuner Interface for control system tuning of Simulink models
* systune (slTuner) Tune control system parameters in Simulink using slTuner interface
* voidModel Mark missing or irrelevant models in model array
* varyingGoal Variable tuning goal for gain-scheduled controllers
* getGoal Evaluate variable tuning goal at specified design point

# Matrix Computations

* lyap Continuous Lyapunov equation solution
* lyapchol Square-root solver for continuous-time Lyapunov equation
* dlyap Solve discrete-time Lyapunov equations
* dlyapchol Square-root solver for discrete-time Lyapunov equations
* care Continuous-time algebraic Riccati equation solution
* dare Solve discrete-time algebraic Riccati equations (DAREs)
* gcare Generalized solver for continuous-time algebraic Riccati equation
* gdare Generalized solver for discrete-time algebraic Riccati equation
* ctrb Controllability matrix
* obsv Observability matrix
* ctrbf Compute controllability staircase form
* obsvf Compute observability staircase form
* gram Controllability and observability Gramians
* gramOptions Options for the gram command
* bdschur Block-diagonal Schur factorization
* norm Norm of linear model