# delayss

Create state-space models with delayed inputs, outputs, and states

## Syntax

```sys=delayss(A,B,C,D,delayterms) sys=delayss(A,B,C,D,ts,delayterms) ```

## Description

`sys=delayss(A,B,C,D,delayterms)`constructs a continuous-time state-space model of the form:

`$\begin{array}{l}\frac{dx}{dt}=Ax\left(t\right)+Bu\left(t\right)+\sum _{j=1}^{N}\left(Ajx\left(t-tj\right)+Bju\left(t-tj\right)\right)\\ y\left(t\right)=Cx\left(t\right)+Du\left(t\right)+\sum _{j=1}^{N}\left(Cjx\left(t-tj\right)+Dju\left(t-tj\right)\right)\end{array}$`

where tj, j=1,..,N are time delays expressed in seconds. `delayterms` is a struct array with fields `delay`, `a`, `b`, `c`, `d` where the fields of `delayterms(j)` contain the values of `tj`, `Aj`, `Bj`, `Cj`, and `Dj`, respectively. The resulting model `sys` is a state-space (`SS`) model with internal delays.

`sys=delayss(A,B,C,D,ts,delayterms)`constructs the discrete-time counterpart:

`$\begin{array}{l}x\left[k+1\right]=Ax\left[k\right]+Bu\left[k\right]+\sum _{j=1}^{N}\left\{Ajx\left[k-nj\right]+Bju\left[k-nj\right]\right\}\\ y\left[k\right]=Cx\left[k\right]+Du\left[k\right]+\sum _{j=1}^{N}\left\{Cjx\left[k-nj\right]+Dju\left[k-nj\right]\right\}\end{array}$`

where Nj, j=1,..,N are time delays expressed as integer multiples of the sample time `ts`.

## Examples

To create the model:

`$\begin{array}{l}\frac{dx}{dt}=x\left(t\right)-x\left(t-1.2\right)+2u\left(t-0.5\right)\\ y\left(t\right)=x\left(t-0.5\right)+u\left(t\right)\end{array}$`

type

```DelayT(1) = struct('delay',0.5,'a',0,'b',2,'c',1,'d',0); DelayT(2) = struct('delay',1.2,'a',-1,'b',0,'c',0,'d',0); sys = delayss(1,0,0,1,DelayT) a = x1 x1 0 b = u1 x1 2 c = x1 y1 1 d = u1 y1 1 (values computed with all internal delays set to zero) Internal delays: 0.5 0.5 1.2 Continuous-time model.```